[SDC-29] rebase continue work to align source
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / Resource.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;
22
23 import java.io.Serializable;
24 import java.util.List;
25 import java.util.Map;
26
27 import org.openecomp.sdc.be.config.ConfigurationManager;
28 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
29 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
30 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
31
32 public class Resource extends Component implements Serializable {
33         /**
34          * 
35          */
36         private static final long serialVersionUID = -6811540567661368482L;
37         public static final String ROOT_RESOURCE = "tosca.nodes.Root";
38
39         public Resource() {
40                 super(new ResourceMetadataDefinition());
41                 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.RESOURCE);
42         }
43
44         public Resource(ComponentMetadataDefinition componentMetadataDefinition) {
45                 super(componentMetadataDefinition);
46                 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.RESOURCE);
47         }
48
49         private List<String> derivedFrom;
50
51         private List<String> derivedList;
52
53         private List<PropertyDefinition> properties;
54
55         private List<PropertyDefinition> attributes;
56
57         // Later
58         private Map<String, InterfaceDefinition> interfaces;
59
60         private List<String> defaultCapabilities;
61
62 //      private List<AdditionalInformationDefinition> additionalInformation;
63
64         /**
65          * Please note that more than one "derivedFrom" resource is not currently
66          * supported by the app. The first list element is always addressed.
67          * 
68          * @return
69          */
70         public List<String> getDerivedFrom() {
71                 return derivedFrom;
72         }
73
74         public void setDerivedFrom(List<String> derivedFrom) {
75                 this.derivedFrom = derivedFrom;
76         }
77
78         /**
79          * The derivedList is a chain of derivedFrom. e.g. if resource C is derived
80          * from resource B that is derived from resource A - then A, B is the
81          * "DerivedList" of resource C
82          * 
83          * @return
84          */
85         public List<String> getDerivedList() {
86                 return derivedList;
87         }
88
89         public void setDerivedList(List<String> derivedList) {
90                 this.derivedList = derivedList;
91         }
92
93         public List<PropertyDefinition> getProperties() {
94                 return properties;
95         }
96
97         public void setProperties(List<PropertyDefinition> properties) {
98                 this.properties = properties;
99         }
100
101         public List<PropertyDefinition> getAttributes() {
102                 return attributes;
103         }
104
105         public void setAttributes(List<PropertyDefinition> attributes) {
106                 this.attributes = attributes;
107         }
108
109         public Map<String, InterfaceDefinition> getInterfaces() {
110                 return interfaces;
111         }
112
113         public void setInterfaces(Map<String, InterfaceDefinition> interfaces) {
114                 this.interfaces = interfaces;
115         }
116
117         public Boolean isAbstract() {
118                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
119                                 .isAbstract();
120         }
121
122         public void setAbstract(Boolean isAbstract) {
123                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
124                                 .setAbstract(isAbstract);
125         }
126
127         public List<String> getDefaultCapabilities() {
128                 return defaultCapabilities;
129         }
130
131         public void setDefaultCapabilities(List<String> defaultCapabilities) {
132                 this.defaultCapabilities = defaultCapabilities;
133         }
134
135         public String getCost() {
136                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
137                                 .getCost();
138         }
139
140         public void setCost(String cost) {
141                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).setCost(cost);
142                 ;
143         }
144
145         public String getLicenseType() {
146                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
147                                 .getLicenseType();
148         }
149
150         public void setLicenseType(String licenseType) {
151                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
152                                 .setLicenseType(licenseType);
153         }
154
155
156         @Override
157         public int hashCode() {
158                 final int prime = 31;
159                 int result = 1;
160                 result = prime * result + super.hashCode();
161
162                 result = prime * result + ((attributes == null) ? 0 : attributes.hashCode());
163                 // result = prime * result + ((capabilities == null) ? 0 :
164                 // capabilities.hashCode());
165                 result = prime * result + ((defaultCapabilities == null) ? 0 : defaultCapabilities.hashCode());
166                 result = prime * result + ((derivedFrom == null) ? 0 : derivedFrom.hashCode());
167                 result = prime * result + ((interfaces == null) ? 0 : interfaces.hashCode());
168                 result = prime * result + ((properties == null) ? 0 : properties.hashCode());
169                 result = prime * result + ((derivedList == null) ? 0 : derivedList.hashCode());
170                 // result = prime * result + ((requirements == null) ? 0 :
171                 // requirements.hashCode());
172                 return result;
173         }
174
175         @Override
176         public boolean equals(Object obj) {
177                 if (this == obj)
178                         return true;
179                 if (obj == null)
180                         return false;
181                 if (getClass() != obj.getClass())
182                         return false;
183
184                 Resource other = (Resource) obj;
185                 if (attributes == null) {
186                         if (other.attributes != null)
187                                 return false;
188                 } else if (!attributes.equals(other.attributes))
189                         return false;
190                 if (defaultCapabilities == null) {
191                         if (other.defaultCapabilities != null)
192                                 return false;
193                 } else if (!defaultCapabilities.equals(other.defaultCapabilities))
194                         return false;
195                 if (derivedFrom == null) {
196                         if (other.derivedFrom != null)
197                                 return false;
198                 } else if (!derivedFrom.equals(other.derivedFrom))
199                         return false;
200                 if (derivedList == null) {
201                         if (other.derivedList != null)
202                                 return false;
203                 } else if (!derivedList.equals(other.derivedList))
204                         return false;
205                 if (interfaces == null) {
206                         if (other.interfaces != null)
207                                 return false;
208                 } else if (!interfaces.equals(other.interfaces))
209                         return false;
210                 if (properties == null) {
211                         if (other.properties != null)
212                                 return false;
213                 } else if (!properties.equals(other.properties))
214                         return false;
215
216                 return super.equals(obj);
217         }
218
219         @Override
220         public String toString() {
221                 return "Resource [derivedFrom=" + derivedFrom + ", properties=" + properties + ", attributes=" + attributes
222                                 + ", interfaces=" + interfaces
223                                 // + ", capabilities=" + capabilities + ", requirements=" +
224                                 // requirements
225                                 + ", defaultCapabilities=" + defaultCapabilities + ", additionalInformation=" + additionalInformation
226                                 + "Metadata [" + getComponentMetadataDefinition().getMetadataDataDefinition().toString() + "]";
227         }
228
229         public String getToscaResourceName() {
230                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
231                                 .getToscaResourceName();
232         }
233
234         public void setToscaResourceName(String toscaResourceName) {
235                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
236                                 .setToscaResourceName(toscaResourceName);
237         }
238
239         public ResourceTypeEnum getResourceType() {
240                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
241                                 .getResourceType();
242         }
243
244         public void setResourceType(ResourceTypeEnum resourceType) {
245                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
246                                 .setResourceType(resourceType);
247         }
248
249         public void setVendorName(String vendorName) {
250                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
251                                 .setVendorName(vendorName);
252         }
253
254         public void setVendorRelease(String vendorRelease) {
255                 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
256                                 .setVendorRelease(vendorRelease);
257         }
258
259         public String getVendorName() {
260                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
261                                 .getVendorName();
262         }
263
264         public String getVendorRelease() {
265                 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
266                                 .getVendorRelease();
267         }
268         
269         @Override
270         public String fetchGenericTypeToscaNameFromConfig(){
271                 String result = super.fetchGenericTypeToscaNameFromConfig();
272                 if(null == result)
273                         result = ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get(ResourceTypeEnum.VFC.getValue());
274                 return result;
275         }
276         
277         @Override
278         public String assetType(){
279                 return this.getResourceType().name();
280         }
281         
282         @Override
283         public boolean shouldGenerateInputs(){
284                 //TODO add complex VFC condition when supported
285                 return ResourceTypeEnum.VF == this.getResourceType();
286         }
287         
288         @Override
289         public boolean deriveFromGeneric(){     
290                 return this.shouldGenerateInputs() || (derivedFrom != null && derivedFrom.contains(fetchGenericTypeToscaNameFromConfig()));
291         }
292         
293 }