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 org.openecomp.sdc.be.config.ConfigurationManager;
24 import org.openecomp.sdc.be.dao.utils.MapUtil;
25 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
26 import org.openecomp.sdc.be.datatypes.elements.InterfaceInstanceDataDefinition;
27 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
28 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
30 import java.util.List;
32 import java.util.Objects;
33 import java.util.Optional;
34 import java.util.stream.Collectors;
36 public class Resource extends Component {
38 private List<String> derivedFrom;
40 private List<String> derivedList;
42 private List<PropertyDefinition> attributes;
44 private Map<String, InterfaceInstanceDataDefinition> instInterfaces;
46 private List<String> defaultCapabilities;
49 super(new ResourceMetadataDefinition());
50 this.getComponentMetadataDefinition().getMetadataDataDefinition()
51 .setComponentType(ComponentTypeEnum.RESOURCE);
54 public Resource(ComponentMetadataDefinition componentMetadataDefinition) {
55 super(componentMetadataDefinition);
56 if (this.getComponentMetadataDefinition().getMetadataDataDefinition() == null) {
57 this.getComponentMetadataDefinition().componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
59 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.RESOURCE);
63 * Please note that more than one "derivedFrom" resource is not currently
64 * supported by the app. The first list element is always addressed.
68 public List<String> getDerivedFrom() {
72 public void setDerivedFrom(List<String> derivedFrom) {
73 this.derivedFrom = derivedFrom;
77 * The derivedList is a chain of derivedFrom. e.g. if resource C is derived
78 * from resource B that is derived from resource A - then A, B is the
79 * "DerivedList" of resource C
83 public List<String> getDerivedList() {
87 public void setDerivedList(List<String> derivedList) {
88 this.derivedList = derivedList;
91 public List<PropertyDefinition> getProperties() {
95 public void setProperties(List<PropertyDefinition> properties) {
96 this.properties = properties;
99 public List<PropertyDefinition> getAttributes() {
103 public void setAttributes(List<PropertyDefinition> attributes) {
104 this.attributes = attributes;
107 public Map<String, InterfaceInstanceDataDefinition> getInstInterfaces() {
108 return instInterfaces;
111 public void setInstInterfaces(
112 Map<String, InterfaceInstanceDataDefinition> instInterfaces) {
113 this.instInterfaces = instInterfaces;
116 public Boolean isAbstract() {
117 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition()
118 .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);
144 public String getLicenseType() {
145 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
149 public void setLicenseType(String licenseType) {
150 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
151 .setLicenseType(licenseType);
155 public int hashCode() {
156 final int prime = 31;
158 result = prime * result + super.hashCode();
159 result = prime * result + ((attributes == null) ? 0 : attributes.hashCode());
160 result = prime * result + ((defaultCapabilities == null) ? 0 : defaultCapabilities.hashCode());
161 result = prime * result + ((derivedFrom == null) ? 0 : derivedFrom.hashCode());
162 result = prime * result + ((properties == null) ? 0 : properties.hashCode());
163 result = prime * result + ((derivedList == null) ? 0 : derivedList.hashCode());
168 public boolean equals(Object o) {
169 if (this == o) return true;
170 if (o == null || getClass() != o.getClass()) return false;
171 if (!super.equals(o)) return false;
172 Resource resource = (Resource) o;
173 return Objects.equals(derivedFrom, resource.derivedFrom) &&
174 Objects.equals(derivedList, resource.derivedList) &&
175 Objects.equals(properties, resource.properties) &&
176 Objects.equals(attributes, resource.attributes) &&
177 Objects.equals(defaultCapabilities, resource.defaultCapabilities);
182 public String toString() {
183 return "Resource [derivedFrom=" + derivedFrom + ", properties=" + properties + ", attributes=" + attributes
184 + ", defaultCapabilities=" + defaultCapabilities + ", additionalInformation=" + additionalInformation
185 + "Metadata [" + getComponentMetadataDefinition().getMetadataDataDefinition().toString() + "]";
188 public String getToscaResourceName() {
189 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
190 .getToscaResourceName();
193 public void setToscaResourceName(String toscaResourceName) {
194 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
195 .setToscaResourceName(toscaResourceName);
198 public ResourceTypeEnum getResourceType() {
199 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
203 public void setResourceType(ResourceTypeEnum resourceType) {
204 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
205 .setResourceType(resourceType);
208 public void setVendorName(String vendorName) {
209 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
210 .setVendorName(vendorName);
213 public void setVendorRelease(String vendorRelease) {
214 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
215 .setVendorRelease(vendorRelease);
218 public void setResourceVendorModelNumber(String resourceVendorModelNumber) {
219 ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).
220 setResourceVendorModelNumber(resourceVendorModelNumber);
223 public String getVendorName() {
224 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
228 public String getVendorRelease() {
229 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
233 public String getResourceVendorModelNumber() {
234 return ((ResourceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition())
235 .getResourceVendorModelNumber();
239 public String fetchGenericTypeToscaNameFromConfig() {
240 String result = super.fetchGenericTypeToscaNameFromConfig();
242 result = ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get(ResourceTypeEnum.VFC.getValue());
247 public String assetType() {
248 return this.getResourceType().name();
252 public boolean shouldGenerateInputs(){
253 return !(this.getResourceType().isAtomicType());
257 public boolean deriveFromGeneric() {
258 return this.shouldGenerateInputs() || (derivedFrom != null && derivedFrom.contains(fetchGenericTypeToscaNameFromConfig()));
261 public Map<String, List<RequirementCapabilityRelDef>> groupRelationsFromCsarByInstanceName(Resource resource) {
262 List<RequirementCapabilityRelDef> componentInstanceRelationsFromCsar = resource.getComponentInstancesRelations().stream().filter(r->!r.isOriginUI()).collect(Collectors.toList());
263 Map<String, List<RequirementCapabilityRelDef>> relationsByInstanceId = MapUtil.groupListBy(componentInstanceRelationsFromCsar, RequirementCapabilityRelDef::getFromNode);
264 return MapUtil.convertMapKeys(relationsByInstanceId, instId -> getInstanceInvariantNameFromInstanceId(resource, instId));
267 private String getInstanceNameFromInstanceId(Resource resource, String instId) {
268 Optional<ComponentInstance> componentInstanceById = resource.getComponentInstanceById(instId);
269 return componentInstanceById.isPresent() ? componentInstanceById.get().getName() : null;
272 private String getInstanceInvariantNameFromInstanceId(Resource resource, String instId) {
273 Optional<ComponentInstance> componentInstanceById = resource.getComponentInstanceById(instId);
274 return componentInstanceById.isPresent() ? componentInstanceById.get().getInvariantName() : null;