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 static java.util.Collections.emptyList;
24 import static java.util.Collections.emptyMap;
25 import static java.util.stream.Collectors.toMap;
26 import static org.apache.commons.collections.CollectionUtils.isEmpty;
27 import static org.apache.commons.collections.MapUtils.isEmpty;
29 import com.fasterxml.jackson.annotation.JsonIgnore;
30 import com.google.common.collect.Maps;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
35 import java.util.Objects;
36 import java.util.Optional;
37 import java.util.function.Predicate;
38 import java.util.stream.Collectors;
39 import org.apache.commons.collections.MapUtils;
40 import org.openecomp.sdc.be.config.ConfigurationManager;
41 import org.openecomp.sdc.be.dao.utils.MapUtil;
42 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
43 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
44 import org.openecomp.sdc.be.datatypes.elements.PolicyDataDefinition;
45 import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType;
46 import org.openecomp.sdc.be.datatypes.elements.PropertiesOwner;
47 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
48 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
49 import org.openecomp.sdc.be.model.category.CategoryDefinition;
50 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
51 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
52 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
53 import org.openecomp.sdc.common.log.api.ILogConfiguration;
55 public abstract class Component implements PropertiesOwner {
57 private ComponentMetadataDefinition componentMetadataDefinition;
58 private Map<String, ArtifactDefinition> artifacts;
59 private Map<String, ArtifactDefinition> deploymentArtifacts;
60 private Map<String, ArtifactDefinition> toscaArtifacts;
61 private List<CategoryDefinition> categories;
62 private List<ComponentInstance> componentInstances;
63 private List<RequirementCapabilityRelDef> componentInstancesRelations;
64 private Map<String, List<ComponentInstanceInput>> componentInstancesInputs;
65 private Map<String, List<ComponentInstanceProperty>> componentInstancesProperties;
66 private Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes;
67 private Map<String, List<CapabilityDefinition>> capabilities;
68 private Map<String, List<RequirementDefinition>> requirements;
69 private Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces;
70 private List<InputDefinition> inputs;
71 private List<GroupDefinition> groups;
72 private Map<String, PolicyDefinition> policies;
73 private String derivedFromGenericType;
74 private String derivedFromGenericVersion;
75 private String toscaType;
76 protected List<AdditionalInformationDefinition> additionalInformation;
77 private Map<String, CINodeFilterDataDefinition> nodeFilterComponents;
78 private Map<String, List<UploadNodeFilterInfo>> nodeFilters;
79 private Map<String, List<UploadNodeFilterInfo>> serviceFilters;
80 protected List<PropertyDefinition> properties;
81 private Map<String, InterfaceDefinition> interfaces;
82 private List<DataTypeDefinition> dataTypes;
84 public List<DataTypeDefinition> getDataTypes() {
88 public void setDataTypes(List<DataTypeDefinition> dataTypes) {
89 this.dataTypes = dataTypes;
92 public Map<String, InterfaceDefinition> getInterfaces() {
96 public void setInterfaces(Map<String, InterfaceDefinition> interfaces) {
97 this.interfaces = interfaces;
100 public Component(ComponentMetadataDefinition componentMetadataDefinition) {
101 this.componentMetadataDefinition = componentMetadataDefinition;
104 public String getDerivedFromGenericVersion() {
105 return derivedFromGenericVersion;
108 public void setDerivedFromGenericVersion(String derivedFromGenericVersion) {
109 this.derivedFromGenericVersion = derivedFromGenericVersion;
112 public String getDerivedFromGenericType() {
113 return derivedFromGenericType;
116 public void setDerivedFromGenericType(String derivedFromGenericType) {
117 this.derivedFromGenericType = derivedFromGenericType;
122 public ComponentMetadataDefinition getComponentMetadataDefinition() {
123 return componentMetadataDefinition;
126 public Map<String, ArtifactDefinition> getArtifacts() {
130 public void setArtifacts(Map<String, ArtifactDefinition> artifacts) {
131 this.artifacts = artifacts;
134 public Map<String, ArtifactDefinition> getToscaArtifacts() {
135 return toscaArtifacts;
138 public void setToscaArtifacts(Map<String, ArtifactDefinition> toscaArtifacts) {
139 this.toscaArtifacts = toscaArtifacts;
143 public String getUniqueId() {
144 return componentMetadataDefinition.getMetadataDataDefinition().getUniqueId();
147 public void setUniqueId(String uniqueId) {
148 componentMetadataDefinition.getMetadataDataDefinition().setUniqueId(uniqueId);
151 public void setName(String name) {
152 componentMetadataDefinition.getMetadataDataDefinition().setName(name);
155 public void setVersion(String version) {
156 componentMetadataDefinition.getMetadataDataDefinition().setVersion(version);
159 public void setHighestVersion(Boolean isHighestVersion) {
160 componentMetadataDefinition.getMetadataDataDefinition().setHighestVersion(isHighestVersion);
163 public void setCreationDate(Long creationDate) {
164 componentMetadataDefinition.getMetadataDataDefinition().setCreationDate(creationDate);
167 public void setLastUpdateDate(Long lastUpdateDate) {
168 componentMetadataDefinition.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
171 public void setDescription(String description) {
172 componentMetadataDefinition.getMetadataDataDefinition().setDescription(description);
175 public void setState(LifecycleStateEnum state) {
176 componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
179 public void setTags(List<String> tags) {
180 componentMetadataDefinition.getMetadataDataDefinition().setTags(tags);
183 public void setConformanceLevel(String conformanceLevel) {
184 componentMetadataDefinition.getMetadataDataDefinition().setConformanceLevel(conformanceLevel);
187 public void setIcon(String icon) {
188 componentMetadataDefinition.getMetadataDataDefinition().setIcon(icon);
191 public void setContactId(String contactId) {
192 componentMetadataDefinition.getMetadataDataDefinition().setContactId(contactId);
195 public String getCreatorUserId() {
196 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorUserId();
199 public void setCreatorUserId(String creatorUserId) {
200 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorUserId(creatorUserId);
203 public String getCreatorFullName() {
204 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorFullName();
207 public void setCreatorFullName(String creatorFullName) {
208 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorFullName(creatorFullName);
211 public String getLastUpdaterUserId() {
212 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterUserId();
215 public void setLastUpdaterUserId(String lastUpdaterUserId) {
216 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterUserId(lastUpdaterUserId);
219 public String getLastUpdaterFullName() {
220 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterFullName();
223 public void setLastUpdaterFullName(String lastUpdaterFullName) {
224 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterFullName(lastUpdaterFullName);
228 public String getName() {
229 return componentMetadataDefinition.getMetadataDataDefinition().getName();
232 public String getVersion() {
233 return componentMetadataDefinition.getMetadataDataDefinition().getVersion();
236 public Boolean isHighestVersion() {
237 return componentMetadataDefinition.getMetadataDataDefinition().isHighestVersion();
240 public Long getCreationDate() {
241 return componentMetadataDefinition.getMetadataDataDefinition().getCreationDate();
244 public Long getLastUpdateDate() {
245 return componentMetadataDefinition.getMetadataDataDefinition().getLastUpdateDate();
248 public String getDescription() {
249 return componentMetadataDefinition.getMetadataDataDefinition().getDescription();
252 public LifecycleStateEnum getLifecycleState() {
253 if (componentMetadataDefinition.getMetadataDataDefinition().getState() != null) {
254 return LifecycleStateEnum.valueOf(componentMetadataDefinition.getMetadataDataDefinition().getState());
261 public List<String> getTags() {
262 return componentMetadataDefinition.getMetadataDataDefinition().getTags();
265 public String getConformanceLevel() {
266 return componentMetadataDefinition.getMetadataDataDefinition().getConformanceLevel();
269 public String getIcon() {
270 return componentMetadataDefinition.getMetadataDataDefinition().getIcon();
273 public String getContactId() {
274 return componentMetadataDefinition.getMetadataDataDefinition().getContactId();
277 public List<InputDefinition> getInputs() {
281 public List<InputDefinition> safeGetInputs() {
282 return inputs == null ? new ArrayList<>() : inputs;
285 public void setInputs(List<InputDefinition> inputs) {
286 this.inputs = inputs;
289 public void setLifecycleState(LifecycleStateEnum state) {
291 this.componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
295 public String getUUID() {
296 return componentMetadataDefinition.getMetadataDataDefinition().getUUID();
299 public void setUUID(String uUID) {
300 componentMetadataDefinition.getMetadataDataDefinition().setUUID(uUID);
303 public void setSystemName(String systemName) {
304 componentMetadataDefinition.getMetadataDataDefinition().setSystemName(systemName);
307 public String getSystemName() {
308 return componentMetadataDefinition.getMetadataDataDefinition().getSystemName();
311 public void setAllVersions(Map<String, String> allVersions) {
312 componentMetadataDefinition.getMetadataDataDefinition().setAllVersions(allVersions);
315 public Map<String, String> getAllVersions() {
316 return componentMetadataDefinition.getMetadataDataDefinition().getAllVersions();
319 public Map<String, ArtifactDefinition> getDeploymentArtifacts() {
320 return deploymentArtifacts;
323 public void setDeploymentArtifacts(Map<String, ArtifactDefinition> deploymentArtifacts) {
324 this.deploymentArtifacts = deploymentArtifacts;
327 public Map<String, ArtifactDefinition> getAllArtifacts() {
328 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
329 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(emptyMap()));
330 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(emptyMap()));
334 Optional<ArtifactDefinition> getArtifact(String id) {
335 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
336 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(emptyMap()));
337 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(emptyMap()));
338 allArtifacts.putAll(Optional.ofNullable(this.toscaArtifacts).orElse(emptyMap()));
339 return Optional.ofNullable(allArtifacts.get(id));
342 public List<CategoryDefinition> getCategories() {
346 public void setCategories(List<CategoryDefinition> categories) {
347 this.categories = categories;
351 public String getNormalizedName() {
352 return componentMetadataDefinition.getMetadataDataDefinition().getNormalizedName();
355 public void setNormalizedName(String normalizedName) {
356 componentMetadataDefinition.getMetadataDataDefinition().setNormalizedName(normalizedName);
359 public ComponentTypeEnum getComponentType() {
360 return this.componentMetadataDefinition.getMetadataDataDefinition().getComponentType();
363 public void setComponentType(ComponentTypeEnum componentType) {
364 this.componentMetadataDefinition.getMetadataDataDefinition().setComponentType(componentType);
367 public Map<String, List<CapabilityDefinition>> getCapabilities() {
368 if (MapUtils.isEmpty(capabilities)) {
369 capabilities = Maps.newHashMap();
374 public void setCapabilities(Map<String, List<CapabilityDefinition>> capabilities) {
375 this.capabilities = capabilities;
378 public Map<String, List<RequirementDefinition>> getRequirements() {
382 public void setRequirements(Map<String, List<RequirementDefinition>> requirements) {
383 this.requirements = requirements;
386 public List<ComponentInstance> getComponentInstances() {
387 return componentInstances;
390 public List<ComponentInstance> safeGetComponentInstances() {
391 if(componentInstances != null) {
392 return componentInstances;
398 public Optional<ComponentInstance> fetchInstanceById(String instanceId) {
399 return Optional.ofNullable(MapUtil.toMap(componentInstances, ComponentInstance::getUniqueId).get(instanceId));
402 public Map<String, ArtifactDefinition> safeGetComponentInstanceDeploymentArtifacts(String componentInstanceId) {
403 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetDeploymentArtifacts)
407 public Map<String, ArtifactDefinition> safeGetComponentInstanceInformationalArtifacts(String componentInstanceId) {
408 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetInformationalArtifacts)
412 public List<ArtifactDefinition> safeGetComponentInstanceHeatArtifacts(String componentInstanceId) {
413 return safeGetComponentInstanceDeploymentArtifacts(componentInstanceId)
416 .filter(artifact -> ArtifactTypeEnum.HEAT_ENV.name().equals(artifact.getArtifactType()))
417 .collect(Collectors.toList());
420 public void setComponentInstances(List<ComponentInstance> resourceInstances) {
421 this.componentInstances = resourceInstances;
424 public List<RequirementCapabilityRelDef> getComponentInstancesRelations() {
425 return componentInstancesRelations;
428 public void setComponentInstancesRelations(List<RequirementCapabilityRelDef> resourceInstancesRelations) {
429 this.componentInstancesRelations = resourceInstancesRelations;
432 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesProperties() {
433 return componentInstancesProperties;
436 public Map<String, List<ComponentInstanceProperty>> safeGetComponentInstancesProperties() {
437 return componentInstancesProperties == null ? emptyMap() : componentInstancesProperties;
440 public Map<String, List<ComponentInstanceProperty>> safeGetUiComponentInstancesProperties() {
441 return componentInstancesProperties == null ? emptyMap() : findUiComponentInstancesProperties();
444 private Map<String,List<ComponentInstanceProperty>> findUiComponentInstancesProperties() {
445 List<String> instancesFromUi = componentInstances.stream()
446 .filter(i->!i.isCreatedFromCsar())
447 .map(ComponentInstance::getUniqueId)
448 .collect(Collectors.toList());
449 return componentInstancesProperties.entrySet().stream()
450 .filter(e -> instancesFromUi.contains(e.getKey()))
451 .collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
454 public Map<String, List<ComponentInstanceInput>> safeGetComponentInstancesInputs() {
455 return componentInstancesInputs == null ? emptyMap() : componentInstancesInputs;
458 public Map<String, List<ComponentInstanceInput>> safeGetUiComponentInstancesInputs() {
459 return componentInstancesInputs == null ? emptyMap() : findUiComponentInstancesInputs();
462 private Map<String,List<ComponentInstanceInput>> findUiComponentInstancesInputs() {
463 List<String> instancesFromUi = componentInstances.stream()
464 .filter(i->!i.isCreatedFromCsar())
465 .map(ComponentInstance::getUniqueId)
466 .collect(Collectors.toList());
467 return componentInstancesInputs.entrySet().stream()
468 .filter(e -> instancesFromUi.contains(e.getKey()))
469 .collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
472 public List<ComponentInstanceProperty> safeGetComponentInstanceProperties(String cmptInstacneId) {
473 return this.safeGetComponentInstanceEntity(cmptInstacneId, this.componentInstancesProperties);
476 public List<ComponentInstanceInput> safeGetComponentInstanceInput(String comptInstanceId) {
477 return this.safeGetComponentInstanceEntity(comptInstanceId, this.componentInstancesInputs);
480 public List<ComponentInstanceInterface> safeGetComponentInstanceInterfaces(String cmptInstacneId) {
481 return this.safeGetComponentInstanceEntity(cmptInstacneId, this.componentInstancesInterfaces);
484 public void setComponentInstancesProperties(
485 Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties) {
486 this.componentInstancesProperties = resourceInstancesProperties;
489 public Boolean getIsDeleted() {
490 return componentMetadataDefinition.getMetadataDataDefinition().isDeleted();
493 public void setIsDeleted(Boolean isDeleted) {
494 componentMetadataDefinition.getMetadataDataDefinition().setIsDeleted(isDeleted);
497 public String getProjectCode() {
498 return componentMetadataDefinition.getMetadataDataDefinition().getProjectCode();
501 public void setProjectCode(String projectCode) {
502 componentMetadataDefinition.getMetadataDataDefinition().setProjectCode(projectCode);
505 public String getCsarUUID() {
506 return componentMetadataDefinition.getMetadataDataDefinition().getCsarUUID();
509 public void setCsarUUID(String csarUUID) {
510 componentMetadataDefinition.getMetadataDataDefinition().setCsarUUID(csarUUID);
513 public String getCsarVersion() {
514 return componentMetadataDefinition.getMetadataDataDefinition().getCsarVersion();
517 public void setCsarVersion(String csarVersion) {
518 componentMetadataDefinition.getMetadataDataDefinition().setCsarVersion(csarVersion);
521 public String getImportedToscaChecksum() {
522 return componentMetadataDefinition.getMetadataDataDefinition().getImportedToscaChecksum();
525 public void setImportedToscaChecksum(String importedToscaChecksum) {
526 componentMetadataDefinition.getMetadataDataDefinition().setImportedToscaChecksum(importedToscaChecksum);
529 public String getInvariantUUID() {
530 return componentMetadataDefinition.getMetadataDataDefinition().getInvariantUUID();
533 public void setInvariantUUID(String invariantUUID) {
534 componentMetadataDefinition.getMetadataDataDefinition().setInvariantUUID(invariantUUID);
537 public Optional<ComponentInstance> getComponentInstanceById(String id) {
538 return getComponentInstanceByPredicate(instance -> id.equals(instance.getUniqueId()));
541 public Optional<ComponentInstance> getComponentInstanceByName(String name) {
542 return getComponentInstanceByPredicate(instance -> name.equals(instance.getName()));
545 private Optional<ComponentInstance> getComponentInstanceByPredicate(Predicate<ComponentInstance> predicate) {
546 if (componentInstances == null) {
547 return Optional.empty();
549 return componentInstances.stream().filter(predicate).findFirst();
552 public List<GroupDefinition> getGroups() {
556 public List<GroupDefinition> safeGetGroups() {
557 return groups == null ? emptyList() : groups;
560 public Optional<GroupDefinition> getGroupById(String id) {
561 return getGroupByPredicate(group -> group.getUniqueId().equals(id));
564 public Optional<GroupDefinition> getGroupByInvariantName(String name) {
565 return getGroupByPredicate(group -> name.equals(group.getInvariantName()));
568 public boolean containsGroupWithInvariantName(String invariantName) {
569 return groups != null && groups.stream().anyMatch(gr -> invariantName.equals(gr.getInvariantName()));
572 private Optional<GroupDefinition> getGroupByPredicate(Predicate<GroupDefinition> predicate) {
573 if (groups == null) {
574 return Optional.empty();
576 return groups.stream()
581 public Map<String, List<ComponentInstanceInterface>> getComponentInstancesInterfaces() {
582 return componentInstancesInterfaces;
585 public void setComponentInstancesInterfaces(Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces) {
586 this.componentInstancesInterfaces = componentInstancesInterfaces;
589 public void setGroups(List<GroupDefinition> groups) {
590 this.groups = groups;
593 public void addGroups(List<GroupDefinition> groupsToAdd) {
594 if (groups == null) {
595 groups = new ArrayList<>();
597 groups.addAll(groupsToAdd);
600 public Map<String, PolicyDefinition> getPolicies() {
604 public void setPolicies(Map<String, PolicyDefinition> policies) {
605 this.policies = policies;
608 public void addPolicy(PolicyDefinition policyDefinition) {
609 if(MapUtils.isEmpty(this.policies)) {
610 this.policies = new HashMap<>();
613 this.policies.put(policyDefinition.getUniqueId(), policyDefinition);
616 public Map<String, CINodeFilterDataDefinition> getNodeFilterComponents() {
617 return nodeFilterComponents;
620 public void setNodeFilterComponents(Map<String, CINodeFilterDataDefinition> nodeFilter) {
621 this.nodeFilterComponents = nodeFilter;
626 public Map<String, List<UploadNodeFilterInfo>> getNodeFilters() {
630 public void setNodeFilters(
631 Map<String, List<UploadNodeFilterInfo>> nodeFilters) {
632 this.nodeFilters = nodeFilters;
635 public Map<String, List<UploadNodeFilterInfo>> getServiceFilters() {
636 return serviceFilters;
639 public void setServiceFilters(
640 Map<String, List<UploadNodeFilterInfo>> serviceFilters) {
641 this.serviceFilters = serviceFilters;
644 public List<PropertyDefinition> getProperties() {
648 public void setProperties(List<PropertyDefinition> properties) {
649 this.properties = properties;
652 public void addProperty(PropertyDefinition propertyDefinition) {
653 if(org.apache.commons.collections.CollectionUtils.isEmpty(this.properties)) {
654 this.properties = new ArrayList<>();
657 this.properties.add(propertyDefinition);;
661 public int hashCode() {
662 final int prime = 31;
664 result = prime * result + ((artifacts == null) ? 0 : artifacts.hashCode());
665 result = prime * result + ((categories == null) ? 0 : categories.hashCode());
666 result = prime * result + ((componentMetadataDefinition == null) ? 0 : componentMetadataDefinition.hashCode());
667 result = prime * result + ((deploymentArtifacts == null) ? 0 : deploymentArtifacts.hashCode());
668 result = prime * result + ((capabilities == null) ? 0 : capabilities.hashCode());
669 result = prime * result + ((requirements == null) ? 0 : requirements.hashCode());
670 result = prime * result + ((componentInstances == null) ? 0 : componentInstances.hashCode());
671 result = prime * result
672 + ((componentInstancesProperties == null) ? 0 : componentInstancesProperties.hashCode());
673 result = prime * result
674 + ((componentInstancesAttributes == null) ? 0 : componentInstancesAttributes.hashCode());
675 result = prime * result + ((componentInstancesInputs == null) ? 0 : componentInstancesInputs.hashCode());
676 result = prime * result + ((componentInstancesRelations == null) ? 0 : componentInstancesRelations.hashCode());
677 result = prime * result + ((groups == null) ? 0 : groups.hashCode());
678 result = prime * result + ((policies == null) ? 0 : policies.hashCode());
679 result = prime * result + ((derivedFromGenericType == null) ? 0 : derivedFromGenericType.hashCode());
680 result = prime * result + ((derivedFromGenericVersion == null) ? 0 : derivedFromGenericVersion.hashCode());
681 result = prime * result + ((interfaces == null) ? 0 : interfaces.hashCode());
686 public boolean equals(Object obj) {
693 if (getClass() != obj.getClass()) {
696 Component other = (Component) obj;
697 if (artifacts == null) {
698 if (other.artifacts != null) {
702 else if (!artifacts.equals(other.artifacts)) {
705 if (categories == null) {
706 if (other.categories != null) {
710 else if (!categories.equals(other.categories)) {
713 if (componentMetadataDefinition == null) {
714 if (other.componentMetadataDefinition != null) {
718 else if (!componentMetadataDefinition.equals(other.componentMetadataDefinition)) {
722 if (deploymentArtifacts == null) {
723 if (other.deploymentArtifacts != null) {
727 else if (!deploymentArtifacts.equals(other.deploymentArtifacts)) {
731 if (componentInstances == null) {
732 if (other.componentInstances != null) {
736 else if (!componentInstances.equals(other.componentInstances)) {
739 if (componentInstancesProperties == null) {
740 if (other.componentInstancesProperties != null) {
744 else if (!componentInstancesProperties.equals(other.componentInstancesProperties)) {
748 if (!Objects.equals(componentInstancesAttributes, other.componentInstancesAttributes)) {
751 if (!Objects.equals(componentInstancesInputs, other.componentInstancesInputs)) {
754 if (componentInstancesRelations == null) {
755 if (other.componentInstancesRelations != null) {
759 else if (!componentInstancesRelations.equals(other.componentInstancesRelations)) {
762 if (requirements == null) {
763 if (other.requirements != null) {
767 else if (!requirements.equals(other.requirements)) {
770 if (capabilities == null) {
771 if (other.capabilities != null) {
775 else if (!capabilities.equals(other.capabilities)) {
778 if (groups == null) {
779 if (other.groups != null) {
783 else if (!groups.equals(other.groups)) {
786 if (policies == null) {
787 if (other.policies != null) {
791 else if (!policies.equals(other.policies)) {
794 if (derivedFromGenericType == null) {
795 if (other.derivedFromGenericType != null) {
799 else if (!derivedFromGenericType.equals(other.derivedFromGenericType)) {
802 if (derivedFromGenericVersion == null) {
803 if (other.derivedFromGenericVersion != null) {
807 else if (!derivedFromGenericVersion.equals(other.derivedFromGenericVersion)) {
810 if (interfaces == null) {
811 if (other.interfaces != null) {
815 else if (!interfaces.equals(other.interfaces)) {
818 if (properties == null) {
819 if (other.properties != null) {
823 else if (!properties.equals(other.properties)) {
826 else if (!nodeFilterComponents.equals(other.nodeFilterComponents)) {
832 public void addCategory(String category, String subCategory) {
833 if (category != null || subCategory != null) {
834 if (categories == null) {
835 categories = new ArrayList<>();
837 CategoryDefinition selectedCategory = null;
838 for (CategoryDefinition categoryDef : categories) {
839 if (categoryDef.getName().equals(category)) {
840 selectedCategory = categoryDef;
843 if (selectedCategory == null) {
844 selectedCategory = new CategoryDefinition();
845 selectedCategory.setName(category);
846 categories.add(selectedCategory);
848 List<SubCategoryDefinition> subcategories = selectedCategory.getSubcategories();
849 if (subcategories == null) {
850 subcategories = new ArrayList<>();
851 selectedCategory.setSubcategories(subcategories);
853 SubCategoryDefinition selectedSubcategory = null;
854 for (SubCategoryDefinition subcategory : subcategories) {
855 if (subcategory.getName().equals(subCategory)) {
856 selectedSubcategory = subcategory;
859 if (selectedSubcategory == null) {
860 selectedSubcategory = new SubCategoryDefinition();
861 selectedSubcategory.setName(subCategory);
862 subcategories.add(selectedSubcategory);
867 public void addCategory(CategoryDefinition category) {
868 addCategory(category, null);
871 public void addCategory(CategoryDefinition category, SubCategoryDefinition subCategory) {
872 if (categories == null) {
873 categories = new ArrayList<>();
875 boolean foundCat = false;
876 for (CategoryDefinition cat : categories) {
877 if (cat.getName().equals(category.getName())) {
879 if (subCategory != null) {
880 List<SubCategoryDefinition> subcategories = cat.getSubcategories();
881 if (subcategories == null) {
882 subcategories = new ArrayList<>();
883 cat.setSubcategories(subcategories);
885 for (SubCategoryDefinition subcat : subcategories) {
886 boolean foundSub = false;
887 if (subcat.getName().equals(subCategory.getName())) {
891 subcategories.add(subCategory);
899 if (subCategory != null) {
900 category.addSubCategory(subCategory);
902 categories.add(category);
906 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesAttributes() {
907 return componentInstancesAttributes;
910 public void setComponentInstancesAttributes(
911 Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes) {
912 this.componentInstancesAttributes = componentInstancesAttributes;
915 public Map<String, List<ComponentInstanceInput>> getComponentInstancesInputs() {
916 return componentInstancesInputs;
919 public Map<String, List<PropertyDataDefinition>> safeGetGroupsProperties() {
920 if (isEmpty(groups)) {
923 return groups.stream()
924 .filter(gr -> Objects.nonNull(gr.getProperties()))
925 .collect(toMap(GroupDataDefinition::getUniqueId,
926 GroupDataDefinition::getProperties));
929 public Map<String, List<PropertyDataDefinition>> safeGetPolicyProperties() {
930 if (isEmpty(policies)) {
933 return policies.values()
935 .filter(policy -> Objects.nonNull(policy.getProperties()))
936 .collect(toMap(PolicyDataDefinition::getUniqueId,
937 PolicyDataDefinition::getProperties));
940 public List<ComponentInstanceInput> safeGetComponentInstanceInputsByName(String cmptInstanceName) {
941 List<ComponentInstanceInput> emptyPropsList = emptyList();
942 if (this.componentInstancesInputs == null) {
943 return emptyPropsList;
945 return this.componentInstances.stream()
946 .filter(ci -> ci.getName().equals(cmptInstanceName))
947 .map(ComponentInstance::getUniqueId)
948 .map(instanceId -> safeGetComponentInstanceEntity(instanceId, this.componentInstancesInputs))
950 .orElse(emptyPropsList);
953 private <T> List<T> safeGetComponentInstanceEntity(String cmptInstanceId, Map<String, List<T>> instanceEntities) {
954 List<T> emptyPropsList = emptyList();
955 if (instanceEntities == null) {
956 return emptyPropsList;
958 List<T> cmptInstanceProps = instanceEntities.get(cmptInstanceId);
959 return cmptInstanceProps == null ? emptyPropsList : cmptInstanceProps;
963 public void setComponentInstancesInputs(Map<String, List<ComponentInstanceInput>> componentInstancesInputs) {
964 this.componentInstancesInputs = componentInstancesInputs;
967 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
968 // Implement where needed
971 public void setMetadataDefinition(ComponentMetadataDefinition metadataDefinition) {
972 this.componentMetadataDefinition = metadataDefinition;
975 public String fetchGenericTypeToscaNameFromConfig() {
976 // Implement where needed
977 return ConfigurationManager.getConfigurationManager()
979 .getGenericAssetNodeTypes()
980 .get(this.assetType());
983 public String assetType() {
984 // Implement where needed
985 return this.getComponentType().getValue();
988 public boolean shouldGenerateInputs() {
989 // Implement where needed
993 public boolean deriveFromGeneric() {
994 // Implement where needed
998 public void setDerivedFromGenericInfo(Resource genericType) {
999 derivedFromGenericType = genericType.getToscaResourceName();
1000 derivedFromGenericVersion = genericType.getVersion();
1003 public boolean isTopologyTemplate() {
1004 return ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue().equals(toscaType);
1007 public String getToscaType() {
1011 public void setToscaType(String toscaType) {
1012 this.toscaType = toscaType;
1015 public List<AdditionalInformationDefinition> getAdditionalInformation() {
1016 return additionalInformation;
1019 public void setAdditionalInformation(List<AdditionalInformationDefinition> additionalInformation) {
1020 this.additionalInformation = additionalInformation;
1023 public PolicyDefinition getPolicyById(String id) {
1024 return policies != null ? policies.get(id) : null;
1027 public List<PolicyDefinition> resolvePoliciesList() {
1028 if (policies == null) {
1031 return new ArrayList<>(policies.values());
1034 public List<PolicyDefinition> resolvePoliciesContainingTarget(String targetId, PolicyTargetType targetType) {
1035 Predicate<PolicyDefinition> containsTarget = policy -> policy.containsTarget(targetId, targetType);
1036 return resolvePoliciesByPredicate(containsTarget);
1039 private List<PolicyDefinition> resolvePoliciesByPredicate(Predicate<PolicyDefinition> policyPredicate) {
1040 if (policies == null) {
1043 return policies.values().stream()
1044 .filter(policyPredicate)
1045 .collect(Collectors.toList());
1048 public List<GroupDefinition> resolveGroupsByMember(String instanceId) {
1049 if (groups == null) {
1052 return groups.stream()
1053 .filter(group -> group.containsInstanceAsMember(instanceId))
1054 .collect(Collectors.toList());
1057 public String getActualComponentType() {
1058 return componentMetadataDefinition.getMetadataDataDefinition().getActualComponentType();
1061 public Boolean isArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isArchived(); }
1063 public void setArchived(Boolean archived) { componentMetadataDefinition.getMetadataDataDefinition().setArchived(archived); }
1065 public Long getArchiveTime() { return componentMetadataDefinition.getMetadataDataDefinition().getArchiveTime(); }
1067 public void setArchiveTime(Long archiveTime) { componentMetadataDefinition.getMetadataDataDefinition().setArchiveTime(archiveTime); }
1069 public Boolean isVspArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isVspArchived(); }
1071 public void setVspArchived(Boolean vspArchived) { componentMetadataDefinition.getMetadataDataDefinition().setVspArchived(vspArchived); }
1073 //supportability log method return map of component metadata teddy.h
1074 public Map<String,String> getComponentMetadataForSupportLog(){
1075 Map<String,String>componentMetadata=new HashMap<>();
1076 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_NAME,this.getName());
1077 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_VERSION,this.getVersion());
1078 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_UUID,this.getUUID());
1079 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_CSAR_UUID,this.getCsarUUID());
1080 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_CSAR_VERSION,this.getCsarVersion());
1081 return componentMetadata;