2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.model;
23 import java.io.Serializable;
24 import java.util.List;
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;
32 public class Resource extends Component implements Serializable {
36 private static final long serialVersionUID = -6811540567661368482L;
37 public static final String ROOT_RESOURCE = "tosca.nodes.Root";
40 super(new ResourceMetadataDefinition());
41 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.RESOURCE);
44 public Resource(ComponentMetadataDefinition componentMetadataDefinition) {
45 super(componentMetadataDefinition);
46 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.RESOURCE);
49 private List<String> derivedFrom;
51 private List<String> derivedList;
53 private List<PropertyDefinition> properties;
55 private List<PropertyDefinition> attributes;
58 private Map<String, InterfaceDefinition> interfaces;
60 private List<String> defaultCapabilities;
62 // private List<AdditionalInformationDefinition> additionalInformation;
65 * Please note that more than one "derivedFrom" resource is not currently
66 * supported by the app. The first list element is always addressed.
70 public List<String> getDerivedFrom() {
74 public void setDerivedFrom(List<String> derivedFrom) {
75 this.derivedFrom = derivedFrom;
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
85 public List<String> getDerivedList() {
89 public void setDerivedList(List<String> derivedList) {
90 this.derivedList = derivedList;
93 public List<PropertyDefinition> getProperties() {
97 public void setProperties(List<PropertyDefinition> properties) {
98 this.properties = properties;
101 public List<PropertyDefinition> getAttributes() {
105 public void setAttributes(List<PropertyDefinition> attributes) {
106 this.attributes = attributes;
109 public Map<String, InterfaceDefinition> getInterfaces() {
113 public void setInterfaces(Map<String, InterfaceDefinition> interfaces) {
114 this.interfaces = interfaces;
117 public Boolean isAbstract() {
118 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
122 public void setAbstract(Boolean isAbstract) {
123 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
124 .setAbstract(isAbstract);
127 public List<String> getDefaultCapabilities() {
128 return defaultCapabilities;
131 public void setDefaultCapabilities(List<String> defaultCapabilities) {
132 this.defaultCapabilities = defaultCapabilities;
135 public String getCost() {
136 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
140 public void setCost(String cost) {
141 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).setCost(cost);
145 public String getLicenseType() {
146 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
150 public void setLicenseType(String licenseType) {
151 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
152 .setLicenseType(licenseType);
157 public int hashCode() {
158 final int prime = 31;
160 result = prime * result + super.hashCode();
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());
176 public boolean equals(Object obj) {
181 if (getClass() != obj.getClass())
184 Resource other = (Resource) obj;
185 if (attributes == null) {
186 if (other.attributes != null)
188 } else if (!attributes.equals(other.attributes))
190 if (defaultCapabilities == null) {
191 if (other.defaultCapabilities != null)
193 } else if (!defaultCapabilities.equals(other.defaultCapabilities))
195 if (derivedFrom == null) {
196 if (other.derivedFrom != null)
198 } else if (!derivedFrom.equals(other.derivedFrom))
200 if (derivedList == null) {
201 if (other.derivedList != null)
203 } else if (!derivedList.equals(other.derivedList))
205 if (interfaces == null) {
206 if (other.interfaces != null)
208 } else if (!interfaces.equals(other.interfaces))
210 if (properties == null) {
211 if (other.properties != null)
213 } else if (!properties.equals(other.properties))
216 return super.equals(obj);
220 public String toString() {
221 return "Resource [derivedFrom=" + derivedFrom + ", properties=" + properties + ", attributes=" + attributes
222 + ", interfaces=" + interfaces
223 // + ", capabilities=" + capabilities + ", requirements=" +
225 + ", defaultCapabilities=" + defaultCapabilities + ", additionalInformation=" + additionalInformation
226 + "Metadata [" + getComponentMetadataDefinition().getMetadataDataDefinition().toString() + "]";
229 public String getToscaResourceName() {
230 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
231 .getToscaResourceName();
234 public void setToscaResourceName(String toscaResourceName) {
235 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
236 .setToscaResourceName(toscaResourceName);
239 public ResourceTypeEnum getResourceType() {
240 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
244 public void setResourceType(ResourceTypeEnum resourceType) {
245 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
246 .setResourceType(resourceType);
249 public void setVendorName(String vendorName) {
250 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
251 .setVendorName(vendorName);
254 public void setVendorRelease(String vendorRelease) {
255 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
256 .setVendorRelease(vendorRelease);
259 public String getVendorName() {
260 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
264 public String getVendorRelease() {
265 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
270 public String fetchGenericTypeToscaNameFromConfig(){
271 String result = super.fetchGenericTypeToscaNameFromConfig();
273 result = ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get(ResourceTypeEnum.VFC.getValue());
278 public String assetType(){
279 return this.getResourceType().name();
283 public boolean shouldGenerateInputs(){
284 //TODO add complex VFC condition when supported
285 return ResourceTypeEnum.VF == this.getResourceType();
289 public boolean deriveFromGeneric(){
290 return this.shouldGenerateInputs() || (derivedFrom != null && derivedFrom.contains(fetchGenericTypeToscaNameFromConfig()));