Catalog alignment
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / jsonjanusgraph / datamodel / ToscaElement.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.model.jsonjanusgraph.datamodel;
22
23 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterDataDefinition;
24 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.ListCapabilityDataDefinition;
26 import org.openecomp.sdc.be.datatypes.elements.ListRequirementDataDefinition;
27 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
28 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
29 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
30 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
31 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
32 import org.openecomp.sdc.be.model.LifecycleStateEnum;
33 import org.openecomp.sdc.be.model.category.CategoryDefinition;
34 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTypeOperation;
35 import org.openecomp.sdc.common.log.api.ILogConfiguration;
36 import org.slf4j.MDC;
37
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41 import java.util.UUID;
42
43 public abstract class ToscaElement {
44
45     protected Map<String, Object> metadata;
46     protected List<CategoryDefinition> categories;
47     protected Map<String, ArtifactDataDefinition> toscaArtifacts;
48     private Map<String, ArtifactDataDefinition> artifacts;
49     private Map<String, ArtifactDataDefinition> deploymentArtifacts;
50     private Map<String, AdditionalInfoParameterDataDefinition> additionalInformation;
51     private Map<String, PropertyDataDefinition> properties;
52     private Map<String, ListCapabilityDataDefinition> capabilities;
53     private Map<String, MapPropertiesDataDefinition> capabiltiesProperties;
54     private Map<String, ListRequirementDataDefinition> requirements;
55
56     protected ToscaElementTypeEnum toscaType;
57     // User
58     private String creatorUserId;
59     private String creatorFullName;
60     private String lastUpdaterUserId;
61     private String lastUpdaterFullName;
62
63     private Map<String, String> allVersions;
64
65     public ToscaElement(ToscaElementTypeEnum toscaType){
66         this.toscaType = toscaType;
67     }
68
69     public Map<String, Object> getMetadata() {
70         return metadata;
71     }
72
73     public void setMetadata(Map<String, Object> metadata) {
74         this.metadata = metadata;
75     }
76
77     public List<CategoryDefinition> getCategories() {
78         return categories;
79     }
80
81     public void setCategories(List<CategoryDefinition> categories) {
82         this.categories = categories;
83     }
84     public Map<String, ArtifactDataDefinition> getToscaArtifacts() {
85         return toscaArtifacts;
86     }
87
88     public void setToscaArtifacts(Map<String, ArtifactDataDefinition> toscaArtifacts) {
89         this.toscaArtifacts = toscaArtifacts;
90     }
91
92     public ToscaElementTypeEnum getToscaType() {
93         return toscaType;
94     }
95
96     public void setToscaType(ToscaElementTypeEnum toscaType) {
97         this.toscaType = toscaType;
98     }
99     public Map<String, ArtifactDataDefinition> getArtifacts() {
100         return artifacts;
101     }
102
103     public void setArtifacts(Map<String, ArtifactDataDefinition> artifacts) {
104         this.artifacts = artifacts;
105     }
106
107     public Map<String, ArtifactDataDefinition> getDeploymentArtifacts() {
108         return deploymentArtifacts;
109     }
110
111     public void setDeploymentArtifacts(Map<String, ArtifactDataDefinition> deploymentArtifacts) {
112         this.deploymentArtifacts = deploymentArtifacts;
113     }
114     public Map<String, AdditionalInfoParameterDataDefinition> getAdditionalInformation() {
115         return additionalInformation;
116     }
117     public void setAdditionalInformation(Map<String, AdditionalInfoParameterDataDefinition> additionalInformation) {
118         this.additionalInformation = additionalInformation;
119     }
120     public Map<String, PropertyDataDefinition> getProperties() {
121         return properties;
122     }
123     public void setProperties(Map<String, PropertyDataDefinition> properties) {
124         this.properties = properties;
125     }
126
127     public Map<String, String> getAllVersions() {
128         return allVersions;
129     }
130
131     public void setAllVersions(Map<String, String> allVersions) {
132         this.allVersions = allVersions;
133     }
134
135     public Map<String, ListCapabilityDataDefinition> getCapabilities() {
136         return capabilities;
137     }
138
139     public void setCapabilities(Map<String, ListCapabilityDataDefinition> capabilities) {
140         this.capabilities = capabilities;
141     }
142
143     public Map<String, ListRequirementDataDefinition> getRequirements() {
144         return requirements;
145     }
146
147     public void setRequirements(Map<String, ListRequirementDataDefinition> requirements) {
148         this.requirements = requirements;
149     }
150
151     public Map<String, MapPropertiesDataDefinition> getCapabilitiesProperties() {
152         return capabiltiesProperties;
153     }
154
155     public void setCapabilitiesProperties(Map<String, MapPropertiesDataDefinition> capabiltiesProperties) {
156         this.capabiltiesProperties = capabiltiesProperties;
157     }
158
159     // metadata properties
160     // ----------------------------
161     public Object getMetadataValue(JsonPresentationFields name) {
162         return getMetadataValueOrDefault(name, null);
163     }
164
165     public Object getMetadataValueOrDefault(JsonPresentationFields name, Object defaultVal) {
166         if (metadata != null) {
167             return metadata.getOrDefault(name.getPresentation(), defaultVal);
168         }
169         return null;
170     }
171
172     public void setMetadataValue(JsonPresentationFields name, Object value) {
173         if (metadata == null) {
174             metadata = new HashMap<>();
175         }
176         metadata.put(name.getPresentation(), value);
177
178     }
179     // --------------------
180     public String getUUID() {
181         return (String) getMetadataValue(JsonPresentationFields.UUID);
182     }
183
184     public void setUUID(String uuid) {
185         setMetadataValue(JsonPresentationFields.UUID, uuid);
186     }
187
188     public String getVersion() {
189         return (String) getMetadataValue(JsonPresentationFields.VERSION);
190     }
191
192     public String getNormalizedName() {
193         return (String) getMetadataValue(JsonPresentationFields.NORMALIZED_NAME);
194     }
195
196     public void setNormalizedName(String normaliseComponentName) {
197         setMetadataValue(JsonPresentationFields.NORMALIZED_NAME, normaliseComponentName);
198     }
199
200     public String getName() {
201         return (String) getMetadataValue(JsonPresentationFields.NAME);
202     }
203
204     public String getSystemName() {
205         return (String) getMetadataValue(JsonPresentationFields.SYSTEM_NAME);
206     }
207     public void setSystemName(String systemName) {
208         setMetadataValue(JsonPresentationFields.SYSTEM_NAME, systemName);
209     }
210
211     public void setLifecycleState(LifecycleStateEnum state) {
212         if(state != null)
213             setMetadataValue(JsonPresentationFields.LIFECYCLE_STATE, state.name());
214     }
215
216     public LifecycleStateEnum getLifecycleState() {
217         return LifecycleStateEnum.findState( (String) getMetadataValue(JsonPresentationFields.LIFECYCLE_STATE));
218     }
219
220     public Long getCreationDate() {
221         return (Long) getMetadataValue(JsonPresentationFields.CREATION_DATE);
222     }
223
224     public void setCreationDate(Long currentDate) {
225         setMetadataValue(JsonPresentationFields.CREATION_DATE, currentDate);
226     }
227
228     public void setLastUpdateDate(Long currentDate) {
229         setMetadataValue(JsonPresentationFields.LAST_UPDATE_DATE, currentDate);
230     }
231     public Long getLastUpdateDate() {
232         return (Long) getMetadataValue(JsonPresentationFields.LAST_UPDATE_DATE);
233     }
234
235     public String getUniqueId() {
236         return (String) getMetadataValue(JsonPresentationFields.UNIQUE_ID);
237     }
238     public void setUniqueId(String uniqueId) {
239          setMetadataValue(JsonPresentationFields.UNIQUE_ID, uniqueId);
240     }
241
242     public void setHighestVersion(Boolean isHighest) {
243          setMetadataValue(JsonPresentationFields.HIGHEST_VERSION, isHighest);
244
245     }
246     public Boolean isHighestVersion() {
247         return (Boolean) getMetadataValue(JsonPresentationFields.HIGHEST_VERSION);
248
249     }
250     public ResourceTypeEnum getResourceType() {
251         String resourceType = (String) getMetadataValue(JsonPresentationFields.RESOURCE_TYPE);
252         return resourceType != null ? ResourceTypeEnum.valueOf(resourceType) : null;
253     }
254
255     public void setResourceType(ResourceTypeEnum resourceType) {
256         if(resourceType != null)
257             setMetadataValue(JsonPresentationFields.RESOURCE_TYPE, resourceType.name());
258     }
259
260     public ComponentTypeEnum getComponentType() {
261         return ComponentTypeEnum.valueOf((String) getMetadataValue(JsonPresentationFields.COMPONENT_TYPE));
262     }
263
264     public void setComponentType(ComponentTypeEnum componentType) {
265         if(componentType != null)
266             setMetadataValue(JsonPresentationFields.COMPONENT_TYPE, componentType.name());
267     }
268
269     public String getDerivedFromGenericType(){
270         return (String) getMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_TYPE);
271     }
272
273     public void setDerivedFromGenericType(String derivedFromGenericType){
274         setMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_TYPE, derivedFromGenericType);
275     }
276
277     public String getDerivedFromGenericVersion(){
278         return (String) getMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_VERSION);
279     }
280
281     public void setDerivedFromGenericVersion(String derivedFromGenericVersion){
282         setMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_VERSION, derivedFromGenericVersion);
283     }
284
285     public Boolean isArchived() { return (Boolean) getMetadataValue(JsonPresentationFields.IS_ARCHIVED); }
286
287     public void setArchived(Boolean archived) { setMetadataValue(JsonPresentationFields.IS_ARCHIVED, archived); }
288
289     public Long getArchiveTime() {
290         Object archiveTime = getMetadataValue(JsonPresentationFields.ARCHIVE_TIME);
291         if (archiveTime instanceof Integer){
292             return new Long((Integer)getMetadataValue(JsonPresentationFields.ARCHIVE_TIME));
293         }
294         return (Long)archiveTime;
295     }
296
297     public void setArchiveTime(Long archiveTime) { setMetadataValue(JsonPresentationFields.ARCHIVE_TIME, archiveTime); }
298
299     public Boolean isVspArchived() { return (Boolean) getMetadataValue(JsonPresentationFields.IS_VSP_ARCHIVED); }
300
301     public void setVspArchived(Boolean vspArchived) { setMetadataValue(JsonPresentationFields.IS_VSP_ARCHIVED, vspArchived); }
302
303     public String getCreatorUserId() {
304         return creatorUserId;
305     }
306
307     public void setCreatorUserId(String creatorUserId) {
308         this.creatorUserId = creatorUserId;
309     }
310
311     public String getCreatorFullName() {
312         return creatorFullName;
313     }
314
315     public void setCreatorFullName(String creatorFullName) {
316         this.creatorFullName = creatorFullName;
317     }
318
319     public String getLastUpdaterUserId() {
320         return lastUpdaterUserId;
321     }
322
323     public void setLastUpdaterUserId(String lastUpdaterUserId) {
324         this.lastUpdaterUserId = lastUpdaterUserId;
325     }
326
327     public String getLastUpdaterFullName() {
328         return lastUpdaterFullName;
329     }
330
331     public void setLastUpdaterFullName(String lastUpdaterFullName) {
332         this.lastUpdaterFullName = lastUpdaterFullName;
333     }
334
335     public void generateUUID() {
336         String prevUUID = getUUID();
337         String version = getVersion();
338         if ((prevUUID == null && NodeTypeOperation.uuidNormativeNewVersion.matcher(version).matches()) || NodeTypeOperation.uuidNewVersion.matcher(version).matches()) {
339             UUID uuid = UUID.randomUUID();
340             setUUID(uuid.toString());
341             MDC.put(ILogConfiguration.MDC_SERVICE_INSTANCE_ID, uuid.toString());
342         }
343     }
344
345 }