re base code
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / jsontitan / 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.jsontitan.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.PropertyDataDefinition;
26 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
27 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
28 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
29 import org.openecomp.sdc.be.model.LifecycleStateEnum;
30 import org.openecomp.sdc.be.model.category.CategoryDefinition;
31 import org.openecomp.sdc.be.model.jsontitan.operations.NodeTypeOperation;
32 import org.slf4j.MDC;
33
34 import java.util.HashMap;
35 import java.util.List;
36 import java.util.Map;
37 import java.util.UUID;
38
39 public abstract class ToscaElement {
40
41     protected Map<String, Object> metadata;
42     protected List<CategoryDefinition> categories;
43     protected Map<String, ArtifactDataDefinition> toscaArtifacts;
44     private Map<String, ArtifactDataDefinition> artifacts;
45     private Map<String, ArtifactDataDefinition> deploymentArtifacts;
46     private Map<String, AdditionalInfoParameterDataDefinition> additionalInformation;
47     private Map<String, PropertyDataDefinition> properties;
48
49     protected ToscaElementTypeEnum toscaType;
50     // User
51     private String creatorUserId;
52     private String creatorFullName;
53     private String lastUpdaterUserId;
54     private String lastUpdaterFullName;
55
56     private Map<String, String> allVersions;
57
58     public ToscaElement(ToscaElementTypeEnum toscaType){
59         this.toscaType = toscaType;
60     }
61
62     public Map<String, Object> getMetadata() {
63         return metadata;
64     }
65
66     public void setMetadata(Map<String, Object> metadata) {
67         this.metadata = metadata;
68     }
69
70     public List<CategoryDefinition> getCategories() {
71         return categories;
72     }
73
74     public void setCategories(List<CategoryDefinition> categories) {
75         this.categories = categories;
76     }
77     public Map<String, ArtifactDataDefinition> getToscaArtifacts() {
78         return toscaArtifacts;
79     }
80
81     public void setToscaArtifacts(Map<String, ArtifactDataDefinition> toscaArtifacts) {
82         this.toscaArtifacts = toscaArtifacts;
83     }
84
85     public ToscaElementTypeEnum getToscaType() {
86         return toscaType;
87     }
88
89     public void setToscaType(ToscaElementTypeEnum toscaType) {
90         this.toscaType = toscaType;
91     }
92     public Map<String, ArtifactDataDefinition> getArtifacts() {
93         return artifacts;
94     }
95
96     public void setArtifacts(Map<String, ArtifactDataDefinition> artifacts) {
97         this.artifacts = artifacts;
98     }
99
100     public Map<String, ArtifactDataDefinition> getDeploymentArtifacts() {
101         return deploymentArtifacts;
102     }
103
104     public void setDeploymentArtifacts(Map<String, ArtifactDataDefinition> deploymentArtifacts) {
105         this.deploymentArtifacts = deploymentArtifacts;
106     }
107     public Map<String, AdditionalInfoParameterDataDefinition> getAdditionalInformation() {
108         return additionalInformation;
109     }
110     public void setAdditionalInformation(Map<String, AdditionalInfoParameterDataDefinition> additionalInformation) {
111         this.additionalInformation = additionalInformation;
112     }
113     public Map<String, PropertyDataDefinition> getProperties() {
114         return properties;
115     }
116     public void setProperties(Map<String, PropertyDataDefinition> properties) {
117         this.properties = properties;
118     }
119
120     public Map<String, String> getAllVersions() {
121         return allVersions;
122     }
123
124     public void setAllVersions(Map<String, String> allVersions) {
125         this.allVersions = allVersions;
126     }
127
128     // metadata properties
129     // ----------------------------
130     public Object getMetadataValue(JsonPresentationFields name) {
131         return getMetadataValueOrDefault(name, null);
132     }
133
134     public Object getMetadataValueOrDefault(JsonPresentationFields name, Object defaultVal) {
135         if (metadata != null) {
136             return metadata.getOrDefault(name.getPresentation(), defaultVal);
137         }
138         return null;
139     }
140
141     public void setMetadataValue(JsonPresentationFields name, Object value) {
142         if (metadata == null) {
143             metadata = new HashMap<>();
144         }
145         metadata.put(name.getPresentation(), value);
146
147     }
148     // --------------------
149     public String getUUID() {
150         return (String) getMetadataValue(JsonPresentationFields.UUID);
151     }
152
153     public void setUUID(String uuid) {
154         setMetadataValue(JsonPresentationFields.UUID, uuid);
155     }
156
157     public String getVersion() {
158         return (String) getMetadataValue(JsonPresentationFields.VERSION);
159     }
160
161     public String getNormalizedName() {
162         return (String) getMetadataValue(JsonPresentationFields.NORMALIZED_NAME);
163     }
164
165     public void setNormalizedName(String normaliseComponentName) {
166         setMetadataValue(JsonPresentationFields.NORMALIZED_NAME, normaliseComponentName);
167     }
168
169     public String getName() {
170         return (String) getMetadataValue(JsonPresentationFields.NAME);
171     }
172
173     public String getSystemName() {
174         return (String) getMetadataValue(JsonPresentationFields.SYSTEM_NAME);
175     }
176     public void setSystemName(String systemName) {
177         setMetadataValue(JsonPresentationFields.SYSTEM_NAME, systemName);
178     }
179
180     public void setLifecycleState(LifecycleStateEnum state) {
181         if(state != null)
182             setMetadataValue(JsonPresentationFields.LIFECYCLE_STATE, state.name());
183     }
184
185     public LifecycleStateEnum getLifecycleState() {
186         return LifecycleStateEnum.findState( (String) getMetadataValue(JsonPresentationFields.LIFECYCLE_STATE));
187     }
188
189     public Long getCreationDate() {
190         return (Long) getMetadataValue(JsonPresentationFields.CREATION_DATE);
191     }
192
193     public void setCreationDate(Long currentDate) {
194         setMetadataValue(JsonPresentationFields.CREATION_DATE, currentDate);
195     }
196
197     public void setLastUpdateDate(Long currentDate) {
198         setMetadataValue(JsonPresentationFields.LAST_UPDATE_DATE, currentDate);
199     }
200     public Long getLastUpdateDate() {
201         return (Long) getMetadataValue(JsonPresentationFields.LAST_UPDATE_DATE);
202     }
203
204     public String getUniqueId() {
205         return (String) getMetadataValue(JsonPresentationFields.UNIQUE_ID);
206     }
207     public void setUniqueId(String uniqueId) {
208          setMetadataValue(JsonPresentationFields.UNIQUE_ID, uniqueId);
209     }
210
211     public void setHighestVersion(Boolean isHighest) {
212          setMetadataValue(JsonPresentationFields.HIGHEST_VERSION, isHighest);
213
214     }
215     public Boolean isHighestVersion() {
216         return (Boolean) getMetadataValue(JsonPresentationFields.HIGHEST_VERSION);
217
218     }
219     public ResourceTypeEnum getResourceType() {
220         String resourceType = (String) getMetadataValue(JsonPresentationFields.RESOURCE_TYPE);
221         return resourceType != null ? ResourceTypeEnum.valueOf(resourceType) : null;
222     }
223
224     public void setResourceType(ResourceTypeEnum resourceType) {
225         if(resourceType != null)
226             setMetadataValue(JsonPresentationFields.RESOURCE_TYPE, resourceType.name());
227     }
228
229     public ComponentTypeEnum getComponentType() {
230         return ComponentTypeEnum.valueOf((String) getMetadataValue(JsonPresentationFields.COMPONENT_TYPE));
231     }
232
233     public void setComponentType(ComponentTypeEnum componentType) {
234         if(componentType != null)
235             setMetadataValue(JsonPresentationFields.COMPONENT_TYPE, componentType.name());
236     }
237
238     public String getDerivedFromGenericType(){
239         return (String) getMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_TYPE);
240     }
241
242     public void setDerivedFromGenericType(String derivedFromGenericType){
243         setMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_TYPE, derivedFromGenericType);
244     }
245
246     public String getDerivedFromGenericVersion(){
247         return (String) getMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_VERSION);
248     }
249
250     public void setDerivedFromGenericVersion(String derivedFromGenericVersion){
251         setMetadataValue(JsonPresentationFields.DERIVED_FROM_GENERIC_VERSION, derivedFromGenericVersion);
252     }
253
254     public Boolean isArchived() { return (Boolean) getMetadataValue(JsonPresentationFields.IS_ARCHIVED); }
255
256     public void setArchived(Boolean archived) { setMetadataValue(JsonPresentationFields.IS_ARCHIVED, archived); }
257
258     public Long getArchiveTime() {
259         Object archiveTime = getMetadataValue(JsonPresentationFields.ARCHIVE_TIME);
260         if (archiveTime instanceof Integer){
261             return new Long((Integer)getMetadataValue(JsonPresentationFields.ARCHIVE_TIME));
262         }
263         return (Long)archiveTime;
264     }
265
266     public void setArchiveTime(Long archiveTime) { setMetadataValue(JsonPresentationFields.ARCHIVE_TIME, archiveTime); }
267
268     public Boolean isVspArchived() { return (Boolean) getMetadataValue(JsonPresentationFields.IS_VSP_ARCHIVED); }
269
270     public void setVspArchived(Boolean vspArchived) { setMetadataValue(JsonPresentationFields.IS_VSP_ARCHIVED, vspArchived); }
271
272     public String getCreatorUserId() {
273         return creatorUserId;
274     }
275
276     public void setCreatorUserId(String creatorUserId) {
277         this.creatorUserId = creatorUserId;
278     }
279
280     public String getCreatorFullName() {
281         return creatorFullName;
282     }
283
284     public void setCreatorFullName(String creatorFullName) {
285         this.creatorFullName = creatorFullName;
286     }
287
288     public String getLastUpdaterUserId() {
289         return lastUpdaterUserId;
290     }
291
292     public void setLastUpdaterUserId(String lastUpdaterUserId) {
293         this.lastUpdaterUserId = lastUpdaterUserId;
294     }
295
296     public String getLastUpdaterFullName() {
297         return lastUpdaterFullName;
298     }
299
300     public void setLastUpdaterFullName(String lastUpdaterFullName) {
301         this.lastUpdaterFullName = lastUpdaterFullName;
302     }
303
304     public void generateUUID() {
305         String prevUUID = getUUID();
306         String version = getVersion();
307         if ((prevUUID == null && NodeTypeOperation.uuidNormativeNewVersion.matcher(version).matches()) || NodeTypeOperation.uuidNewVersion.matcher(version).matches()) {
308             UUID uuid = UUID.randomUUID();
309             setUUID(uuid.toString());
310             MDC.put("serviceInstanceID", uuid.toString());
311         }
312     }
313
314 }