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.GroupDataDefinition;
43 import org.openecomp.sdc.be.datatypes.elements.PolicyDataDefinition;
44 import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType;
45 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
46 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
47 import org.openecomp.sdc.be.datatypes.elements.PropertiesOwner;
49 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
50 import org.openecomp.sdc.be.model.category.CategoryDefinition;
51 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
52 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
53 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
54 import org.openecomp.sdc.common.log.api.ILogConfiguration;
56 import static java.util.stream.Collectors.toMap;
58 public abstract class Component implements PropertiesOwner {
60 private ComponentMetadataDefinition componentMetadataDefinition;
61 private Map<String, ArtifactDefinition> artifacts;
62 private Map<String, ArtifactDefinition> deploymentArtifacts;
63 private Map<String, ArtifactDefinition> toscaArtifacts;
64 private List<CategoryDefinition> categories;
65 private List<ComponentInstance> componentInstances;
66 private List<RequirementCapabilityRelDef> componentInstancesRelations;
67 private Map<String, List<ComponentInstanceInput>> componentInstancesInputs;
68 private Map<String, List<ComponentInstanceProperty>> componentInstancesProperties;
69 private Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes;
70 private Map<String, List<CapabilityDefinition>> capabilities;
71 private Map<String, List<RequirementDefinition>> requirements;
72 private Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces;
73 private List<InputDefinition> inputs;
74 private List<GroupDefinition> groups;
75 private Map<String, PolicyDefinition> policies;
76 private String derivedFromGenericType;
77 private String derivedFromGenericVersion;
78 private String toscaType;
79 protected List<AdditionalInformationDefinition> additionalInformation;
80 private Map<String, CINodeFilterDataDefinition> nodeFilterComponents;
81 private Map<String, List<UploadNodeFilterInfo>> nodeFilters;
82 private Map<String, List<UploadNodeFilterInfo>> serviceFilters;
83 protected List<PropertyDefinition> properties;
84 private Map<String, InterfaceDefinition> interfaces;
85 private List<DataTypeDefinition> dataTypes;
87 public List<DataTypeDefinition> getDataTypes() {
91 public void setDataTypes(List<DataTypeDefinition> dataTypes) {
92 this.dataTypes = dataTypes;
95 public Map<String, InterfaceDefinition> getInterfaces() {
99 public void setInterfaces(Map<String, InterfaceDefinition> interfaces) {
100 this.interfaces = interfaces;
103 public Component(ComponentMetadataDefinition componentMetadataDefinition) {
104 this.componentMetadataDefinition = componentMetadataDefinition;
107 public String getDerivedFromGenericVersion() {
108 return derivedFromGenericVersion;
111 public void setDerivedFromGenericVersion(String derivedFromGenericVersion) {
112 this.derivedFromGenericVersion = derivedFromGenericVersion;
115 public String getDerivedFromGenericType() {
116 return derivedFromGenericType;
119 public void setDerivedFromGenericType(String derivedFromGenericType) {
120 this.derivedFromGenericType = derivedFromGenericType;
125 public ComponentMetadataDefinition getComponentMetadataDefinition() {
126 return componentMetadataDefinition;
129 public Map<String, ArtifactDefinition> getArtifacts() {
133 public void setArtifacts(Map<String, ArtifactDefinition> artifacts) {
134 this.artifacts = artifacts;
137 public Map<String, ArtifactDefinition> getToscaArtifacts() {
138 return toscaArtifacts;
141 public void setToscaArtifacts(Map<String, ArtifactDefinition> toscaArtifacts) {
142 this.toscaArtifacts = toscaArtifacts;
146 public String getUniqueId() {
147 return componentMetadataDefinition.getMetadataDataDefinition().getUniqueId();
150 public void setUniqueId(String uniqueId) {
151 componentMetadataDefinition.getMetadataDataDefinition().setUniqueId(uniqueId);
154 public void setName(String name) {
155 componentMetadataDefinition.getMetadataDataDefinition().setName(name);
158 public void setVersion(String version) {
159 componentMetadataDefinition.getMetadataDataDefinition().setVersion(version);
162 public void setHighestVersion(Boolean isHighestVersion) {
163 componentMetadataDefinition.getMetadataDataDefinition().setHighestVersion(isHighestVersion);
166 public void setCreationDate(Long creationDate) {
167 componentMetadataDefinition.getMetadataDataDefinition().setCreationDate(creationDate);
170 public void setLastUpdateDate(Long lastUpdateDate) {
171 componentMetadataDefinition.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
174 public void setDescription(String description) {
175 componentMetadataDefinition.getMetadataDataDefinition().setDescription(description);
178 public void setState(LifecycleStateEnum state) {
179 componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
182 public void setTags(List<String> tags) {
183 componentMetadataDefinition.getMetadataDataDefinition().setTags(tags);
186 public void setConformanceLevel(String conformanceLevel) {
187 componentMetadataDefinition.getMetadataDataDefinition().setConformanceLevel(conformanceLevel);
190 public void setIcon(String icon) {
191 componentMetadataDefinition.getMetadataDataDefinition().setIcon(icon);
194 public void setContactId(String contactId) {
195 componentMetadataDefinition.getMetadataDataDefinition().setContactId(contactId);
198 public String getCreatorUserId() {
199 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorUserId();
202 public void setCreatorUserId(String creatorUserId) {
203 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorUserId(creatorUserId);
206 public String getCreatorFullName() {
207 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorFullName();
210 public void setCreatorFullName(String creatorFullName) {
211 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorFullName(creatorFullName);
214 public String getLastUpdaterUserId() {
215 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterUserId();
218 public void setLastUpdaterUserId(String lastUpdaterUserId) {
219 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterUserId(lastUpdaterUserId);
222 public String getLastUpdaterFullName() {
223 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterFullName();
226 public void setLastUpdaterFullName(String lastUpdaterFullName) {
227 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterFullName(lastUpdaterFullName);
231 public String getName() {
232 return componentMetadataDefinition.getMetadataDataDefinition().getName();
235 public String getVersion() {
236 return componentMetadataDefinition.getMetadataDataDefinition().getVersion();
239 public Boolean isHighestVersion() {
240 return componentMetadataDefinition.getMetadataDataDefinition().isHighestVersion();
243 public Long getCreationDate() {
244 return componentMetadataDefinition.getMetadataDataDefinition().getCreationDate();
247 public Long getLastUpdateDate() {
248 return componentMetadataDefinition.getMetadataDataDefinition().getLastUpdateDate();
251 public String getDescription() {
252 return componentMetadataDefinition.getMetadataDataDefinition().getDescription();
255 public LifecycleStateEnum getLifecycleState() {
256 if (componentMetadataDefinition.getMetadataDataDefinition().getState() != null) {
257 return LifecycleStateEnum.valueOf(componentMetadataDefinition.getMetadataDataDefinition().getState());
264 public List<String> getTags() {
265 return componentMetadataDefinition.getMetadataDataDefinition().getTags();
268 public String getConformanceLevel() {
269 return componentMetadataDefinition.getMetadataDataDefinition().getConformanceLevel();
272 public String getIcon() {
273 return componentMetadataDefinition.getMetadataDataDefinition().getIcon();
276 public String getContactId() {
277 return componentMetadataDefinition.getMetadataDataDefinition().getContactId();
280 public List<InputDefinition> getInputs() {
284 public List<InputDefinition> safeGetInputs() {
285 return inputs == null ? new ArrayList<>() : inputs;
288 public void setInputs(List<InputDefinition> inputs) {
289 this.inputs = inputs;
292 public void setLifecycleState(LifecycleStateEnum state) {
294 this.componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
298 public String getUUID() {
299 return componentMetadataDefinition.getMetadataDataDefinition().getUUID();
302 public void setUUID(String uUID) {
303 componentMetadataDefinition.getMetadataDataDefinition().setUUID(uUID);
306 public void setSystemName(String systemName) {
307 componentMetadataDefinition.getMetadataDataDefinition().setSystemName(systemName);
310 public String getSystemName() {
311 return componentMetadataDefinition.getMetadataDataDefinition().getSystemName();
314 public void setAllVersions(Map<String, String> allVersions) {
315 componentMetadataDefinition.getMetadataDataDefinition().setAllVersions(allVersions);
318 public Map<String, String> getAllVersions() {
319 return componentMetadataDefinition.getMetadataDataDefinition().getAllVersions();
322 public Map<String, ArtifactDefinition> getDeploymentArtifacts() {
323 return deploymentArtifacts;
326 public void setDeploymentArtifacts(Map<String, ArtifactDefinition> deploymentArtifacts) {
327 this.deploymentArtifacts = deploymentArtifacts;
330 public Map<String, ArtifactDefinition> getAllArtifacts() {
331 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
332 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(emptyMap()));
333 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(emptyMap()));
337 Optional<ArtifactDefinition> getArtifact(String id) {
338 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
339 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(emptyMap()));
340 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(emptyMap()));
341 allArtifacts.putAll(Optional.ofNullable(this.toscaArtifacts).orElse(emptyMap()));
342 return Optional.ofNullable(allArtifacts.get(id));
345 public List<CategoryDefinition> getCategories() {
349 public void setCategories(List<CategoryDefinition> categories) {
350 this.categories = categories;
354 public String getNormalizedName() {
355 return componentMetadataDefinition.getMetadataDataDefinition().getNormalizedName();
358 public void setNormalizedName(String normalizedName) {
359 componentMetadataDefinition.getMetadataDataDefinition().setNormalizedName(normalizedName);
362 public ComponentTypeEnum getComponentType() {
363 return this.componentMetadataDefinition.getMetadataDataDefinition().getComponentType();
366 public void setComponentType(ComponentTypeEnum componentType) {
367 this.componentMetadataDefinition.getMetadataDataDefinition().setComponentType(componentType);
370 public Map<String, List<CapabilityDefinition>> getCapabilities() {
371 if (MapUtils.isEmpty(capabilities)) {
372 capabilities = Maps.newHashMap();
377 public void setCapabilities(Map<String, List<CapabilityDefinition>> capabilities) {
378 this.capabilities = capabilities;
381 public Map<String, List<RequirementDefinition>> getRequirements() {
385 public void setRequirements(Map<String, List<RequirementDefinition>> requirements) {
386 this.requirements = requirements;
389 public List<ComponentInstance> getComponentInstances() {
390 return componentInstances;
393 public List<ComponentInstance> safeGetComponentInstances() {
394 if(componentInstances != null) {
395 return componentInstances;
401 public Optional<ComponentInstance> fetchInstanceById(String instanceId) {
402 return Optional.ofNullable(MapUtil.toMap(componentInstances, ComponentInstance::getUniqueId).get(instanceId));
405 public Map<String, ArtifactDefinition> safeGetComponentInstanceDeploymentArtifacts(String componentInstanceId) {
406 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetDeploymentArtifacts)
410 public Map<String, ArtifactDefinition> safeGetComponentInstanceInformationalArtifacts(String componentInstanceId) {
411 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetInformationalArtifacts)
415 public List<ArtifactDefinition> safeGetComponentInstanceHeatArtifacts(String componentInstanceId) {
416 return safeGetComponentInstanceDeploymentArtifacts(componentInstanceId)
419 .filter(artifact -> ArtifactTypeEnum.HEAT_ENV.name().equals(artifact.getArtifactType()))
420 .collect(Collectors.toList());
423 public void setComponentInstances(List<ComponentInstance> resourceInstances) {
424 this.componentInstances = resourceInstances;
427 public List<RequirementCapabilityRelDef> getComponentInstancesRelations() {
428 return componentInstancesRelations;
431 public void setComponentInstancesRelations(List<RequirementCapabilityRelDef> resourceInstancesRelations) {
432 this.componentInstancesRelations = resourceInstancesRelations;
435 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesProperties() {
436 return componentInstancesProperties;
439 public Map<String, List<ComponentInstanceProperty>> safeGetComponentInstancesProperties() {
440 return componentInstancesProperties == null ? emptyMap() : componentInstancesProperties;
443 public Map<String, List<ComponentInstanceProperty>> safeGetUiComponentInstancesProperties() {
444 return componentInstancesProperties == null ? emptyMap() : findUiComponentInstancesProperties();
447 private Map<String,List<ComponentInstanceProperty>> findUiComponentInstancesProperties() {
448 List<String> instancesFromUi = componentInstances.stream()
449 .filter(i->!i.isCreatedFromCsar())
450 .map(ComponentInstance::getUniqueId)
451 .collect(Collectors.toList());
452 return componentInstancesProperties.entrySet().stream()
453 .filter(e -> instancesFromUi.contains(e.getKey()))
454 .collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
457 public Map<String, List<ComponentInstanceInput>> safeGetComponentInstancesInputs() {
458 return componentInstancesInputs == null ? emptyMap() : componentInstancesInputs;
461 public Map<String, List<ComponentInstanceInput>> safeGetUiComponentInstancesInputs() {
462 return componentInstancesInputs == null ? emptyMap() : findUiComponentInstancesInputs();
465 private Map<String,List<ComponentInstanceInput>> findUiComponentInstancesInputs() {
466 List<String> instancesFromUi = componentInstances.stream()
467 .filter(i->!i.isCreatedFromCsar())
468 .map(ComponentInstance::getUniqueId)
469 .collect(Collectors.toList());
470 return componentInstancesInputs.entrySet().stream()
471 .filter(e -> instancesFromUi.contains(e.getKey()))
472 .collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
475 public List<ComponentInstanceProperty> safeGetComponentInstanceProperties(String cmptInstacneId) {
476 return this.safeGetComponentInstanceEntity(cmptInstacneId, this.componentInstancesProperties);
479 public List<ComponentInstanceInput> safeGetComponentInstanceInput(String comptInstanceId) {
480 return this.safeGetComponentInstanceEntity(comptInstanceId, this.componentInstancesInputs);
483 public List<ComponentInstanceInterface> safeGetComponentInstanceInterfaces(String cmptInstacneId) {
484 return this.safeGetComponentInstanceEntity(cmptInstacneId, this.componentInstancesInterfaces);
487 public void setComponentInstancesProperties(
488 Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties) {
489 this.componentInstancesProperties = resourceInstancesProperties;
492 public Boolean getIsDeleted() {
493 return componentMetadataDefinition.getMetadataDataDefinition().isDeleted();
496 public void setIsDeleted(Boolean isDeleted) {
497 componentMetadataDefinition.getMetadataDataDefinition().setIsDeleted(isDeleted);
500 public String getProjectCode() {
501 return componentMetadataDefinition.getMetadataDataDefinition().getProjectCode();
504 public void setProjectCode(String projectCode) {
505 componentMetadataDefinition.getMetadataDataDefinition().setProjectCode(projectCode);
508 public String getCsarUUID() {
509 return componentMetadataDefinition.getMetadataDataDefinition().getCsarUUID();
512 public void setCsarUUID(String csarUUID) {
513 componentMetadataDefinition.getMetadataDataDefinition().setCsarUUID(csarUUID);
516 public String getCsarVersion() {
517 return componentMetadataDefinition.getMetadataDataDefinition().getCsarVersion();
520 public void setCsarVersion(String csarVersion) {
521 componentMetadataDefinition.getMetadataDataDefinition().setCsarVersion(csarVersion);
524 public String getImportedToscaChecksum() {
525 return componentMetadataDefinition.getMetadataDataDefinition().getImportedToscaChecksum();
528 public void setImportedToscaChecksum(String importedToscaChecksum) {
529 componentMetadataDefinition.getMetadataDataDefinition().setImportedToscaChecksum(importedToscaChecksum);
532 public String getInvariantUUID() {
533 return componentMetadataDefinition.getMetadataDataDefinition().getInvariantUUID();
536 public void setInvariantUUID(String invariantUUID) {
537 componentMetadataDefinition.getMetadataDataDefinition().setInvariantUUID(invariantUUID);
540 public Optional<ComponentInstance> getComponentInstanceById(String id) {
541 return getComponentInstanceByPredicate(instance -> id.equals(instance.getUniqueId()));
544 public Optional<ComponentInstance> getComponentInstanceByName(String name) {
545 return getComponentInstanceByPredicate(instance -> name.equals(instance.getName()));
548 private Optional<ComponentInstance> getComponentInstanceByPredicate(Predicate<ComponentInstance> predicate) {
549 if (componentInstances == null) {
550 return Optional.empty();
552 return componentInstances.stream().filter(predicate).findFirst();
555 public List<GroupDefinition> getGroups() {
559 public List<GroupDefinition> safeGetGroups() {
560 return groups == null ? emptyList() : groups;
563 public Optional<GroupDefinition> getGroupById(String id) {
564 return getGroupByPredicate(group -> group.getUniqueId().equals(id));
567 public Optional<GroupDefinition> getGroupByInvariantName(String name) {
568 return getGroupByPredicate(group -> name.equals(group.getInvariantName()));
571 public boolean containsGroupWithInvariantName(String invariantName) {
572 return groups != null && groups.stream().anyMatch(gr -> invariantName.equals(gr.getInvariantName()));
575 private Optional<GroupDefinition> getGroupByPredicate(Predicate<GroupDefinition> predicate) {
576 if (groups == null) {
577 return Optional.empty();
579 return groups.stream()
584 public Map<String, List<ComponentInstanceInterface>> getComponentInstancesInterfaces() {
585 return componentInstancesInterfaces;
588 public void setComponentInstancesInterfaces(Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces) {
589 this.componentInstancesInterfaces = componentInstancesInterfaces;
592 public void setGroups(List<GroupDefinition> groups) {
593 this.groups = groups;
596 public void addGroups(List<GroupDefinition> groupsToAdd) {
597 if (groups == null) {
598 groups = new ArrayList<>();
600 groups.addAll(groupsToAdd);
603 public Map<String, PolicyDefinition> getPolicies() {
607 public void setPolicies(Map<String, PolicyDefinition> policies) {
608 this.policies = policies;
611 public void addPolicy(PolicyDefinition policyDefinition) {
612 if(MapUtils.isEmpty(this.policies)) {
613 this.policies = new HashMap<>();
616 this.policies.put(policyDefinition.getUniqueId(), policyDefinition);
619 public Map<String, CINodeFilterDataDefinition> getNodeFilterComponents() {
620 return nodeFilterComponents;
623 public void setNodeFilterComponents(Map<String, CINodeFilterDataDefinition> nodeFilter) {
624 this.nodeFilterComponents = nodeFilter;
629 public Map<String, List<UploadNodeFilterInfo>> getNodeFilters() {
633 public void setNodeFilters(
634 Map<String, List<UploadNodeFilterInfo>> nodeFilters) {
635 this.nodeFilters = nodeFilters;
638 public Map<String, List<UploadNodeFilterInfo>> getServiceFilters() {
639 return serviceFilters;
642 public void setServiceFilters(
643 Map<String, List<UploadNodeFilterInfo>> serviceFilters) {
644 this.serviceFilters = serviceFilters;
647 public List<PropertyDefinition> getProperties() {
651 public void setProperties(List<PropertyDefinition> properties) {
652 this.properties = properties;
655 public void addProperty(PropertyDefinition propertyDefinition) {
656 if(org.apache.commons.collections.CollectionUtils.isEmpty(this.properties)) {
657 this.properties = new ArrayList<>();
660 this.properties.add(propertyDefinition);;
664 public int hashCode() {
665 final int prime = 31;
667 result = prime * result + ((artifacts == null) ? 0 : artifacts.hashCode());
668 result = prime * result + ((categories == null) ? 0 : categories.hashCode());
669 result = prime * result + ((componentMetadataDefinition == null) ? 0 : componentMetadataDefinition.hashCode());
670 result = prime * result + ((deploymentArtifacts == null) ? 0 : deploymentArtifacts.hashCode());
671 result = prime * result + ((capabilities == null) ? 0 : capabilities.hashCode());
672 result = prime * result + ((requirements == null) ? 0 : requirements.hashCode());
673 result = prime * result + ((componentInstances == null) ? 0 : componentInstances.hashCode());
674 result = prime * result
675 + ((componentInstancesProperties == null) ? 0 : componentInstancesProperties.hashCode());
676 result = prime * result
677 + ((componentInstancesAttributes == null) ? 0 : componentInstancesAttributes.hashCode());
678 result = prime * result + ((componentInstancesInputs == null) ? 0 : componentInstancesInputs.hashCode());
679 result = prime * result + ((componentInstancesRelations == null) ? 0 : componentInstancesRelations.hashCode());
680 result = prime * result + ((groups == null) ? 0 : groups.hashCode());
681 result = prime * result + ((policies == null) ? 0 : policies.hashCode());
682 result = prime * result + ((derivedFromGenericType == null) ? 0 : derivedFromGenericType.hashCode());
683 result = prime * result + ((derivedFromGenericVersion == null) ? 0 : derivedFromGenericVersion.hashCode());
684 result = prime * result + ((interfaces == null) ? 0 : interfaces.hashCode());
689 public boolean equals(Object obj) {
696 if (getClass() != obj.getClass()) {
699 Component other = (Component) obj;
700 if (artifacts == null) {
701 if (other.artifacts != null) {
705 else if (!artifacts.equals(other.artifacts)) {
708 if (categories == null) {
709 if (other.categories != null) {
713 else if (!categories.equals(other.categories)) {
716 if (componentMetadataDefinition == null) {
717 if (other.componentMetadataDefinition != null) {
721 else if (!componentMetadataDefinition.equals(other.componentMetadataDefinition)) {
725 if (deploymentArtifacts == null) {
726 if (other.deploymentArtifacts != null) {
730 else if (!deploymentArtifacts.equals(other.deploymentArtifacts)) {
734 if (componentInstances == null) {
735 if (other.componentInstances != null) {
739 else if (!componentInstances.equals(other.componentInstances)) {
742 if (componentInstancesProperties == null) {
743 if (other.componentInstancesProperties != null) {
747 else if (!componentInstancesProperties.equals(other.componentInstancesProperties)) {
751 if (!Objects.equals(componentInstancesAttributes, other.componentInstancesAttributes)) {
754 if (!Objects.equals(componentInstancesInputs, other.componentInstancesInputs)) {
757 if (componentInstancesRelations == null) {
758 if (other.componentInstancesRelations != null) {
762 else if (!componentInstancesRelations.equals(other.componentInstancesRelations)) {
765 if (requirements == null) {
766 if (other.requirements != null) {
770 else if (!requirements.equals(other.requirements)) {
773 if (capabilities == null) {
774 if (other.capabilities != null) {
778 else if (!capabilities.equals(other.capabilities)) {
781 if (groups == null) {
782 if (other.groups != null) {
786 else if (!groups.equals(other.groups)) {
789 if (policies == null) {
790 if (other.policies != null) {
794 else if (!policies.equals(other.policies)) {
797 if (derivedFromGenericType == null) {
798 if (other.derivedFromGenericType != null) {
802 else if (!derivedFromGenericType.equals(other.derivedFromGenericType)) {
805 if (derivedFromGenericVersion == null) {
806 if (other.derivedFromGenericVersion != null) {
810 else if (!derivedFromGenericVersion.equals(other.derivedFromGenericVersion)) {
813 if (interfaces == null) {
814 if (other.interfaces != null) {
818 else if (!interfaces.equals(other.interfaces)) {
821 else if (!properties.equals(other.properties)) {
824 else if (!nodeFilterComponents.equals(other.nodeFilterComponents)) {
830 public void addCategory(String category, String subCategory) {
831 if (category != null || subCategory != null) {
832 if (categories == null) {
833 categories = new ArrayList<>();
835 CategoryDefinition selectedCategory = null;
836 for (CategoryDefinition categoryDef : categories) {
837 if (categoryDef.getName().equals(category)) {
838 selectedCategory = categoryDef;
841 if (selectedCategory == null) {
842 selectedCategory = new CategoryDefinition();
843 selectedCategory.setName(category);
844 categories.add(selectedCategory);
846 List<SubCategoryDefinition> subcategories = selectedCategory.getSubcategories();
847 if (subcategories == null) {
848 subcategories = new ArrayList<>();
849 selectedCategory.setSubcategories(subcategories);
851 SubCategoryDefinition selectedSubcategory = null;
852 for (SubCategoryDefinition subcategory : subcategories) {
853 if (subcategory.getName().equals(subCategory)) {
854 selectedSubcategory = subcategory;
857 if (selectedSubcategory == null) {
858 selectedSubcategory = new SubCategoryDefinition();
859 selectedSubcategory.setName(subCategory);
860 subcategories.add(selectedSubcategory);
865 public void addCategory(CategoryDefinition category) {
866 addCategory(category, null);
869 public void addCategory(CategoryDefinition category, SubCategoryDefinition subCategory) {
870 if (categories == null) {
871 categories = new ArrayList<>();
873 boolean foundCat = false;
874 for (CategoryDefinition cat : categories) {
875 if (cat.getName().equals(category.getName())) {
877 if (subCategory != null) {
878 List<SubCategoryDefinition> subcategories = cat.getSubcategories();
879 if (subcategories == null) {
880 subcategories = new ArrayList<>();
881 cat.setSubcategories(subcategories);
883 for (SubCategoryDefinition subcat : subcategories) {
884 boolean foundSub = false;
885 if (subcat.getName().equals(subCategory.getName())) {
889 subcategories.add(subCategory);
897 if (subCategory != null) {
898 category.addSubCategory(subCategory);
900 categories.add(category);
904 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesAttributes() {
905 return componentInstancesAttributes;
908 public void setComponentInstancesAttributes(
909 Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes) {
910 this.componentInstancesAttributes = componentInstancesAttributes;
913 public Map<String, List<ComponentInstanceInput>> getComponentInstancesInputs() {
914 return componentInstancesInputs;
917 public Map<String, List<PropertyDataDefinition>> safeGetGroupsProperties() {
918 if (isEmpty(groups)) {
921 return groups.stream()
922 .filter(gr -> Objects.nonNull(gr.getProperties()))
923 .collect(toMap(GroupDataDefinition::getUniqueId,
924 GroupDataDefinition::getProperties));
927 public Map<String, List<PropertyDataDefinition>> safeGetPolicyProperties() {
928 if (isEmpty(policies)) {
931 return policies.values()
933 .filter(policy -> Objects.nonNull(policy.getProperties()))
934 .collect(toMap(PolicyDataDefinition::getUniqueId,
935 PolicyDataDefinition::getProperties));
938 public List<ComponentInstanceInput> safeGetComponentInstanceInputsByName(String cmptInstanceName) {
939 List<ComponentInstanceInput> emptyPropsList = emptyList();
940 if (this.componentInstancesInputs == null) {
941 return emptyPropsList;
943 return this.componentInstances.stream()
944 .filter(ci -> ci.getName().equals(cmptInstanceName))
945 .map(ComponentInstance::getUniqueId)
946 .map(instanceId -> safeGetComponentInstanceEntity(instanceId, this.componentInstancesInputs))
948 .orElse(emptyPropsList);
951 private <T> List<T> safeGetComponentInstanceEntity(String cmptInstanceId, Map<String, List<T>> instanceEntities) {
952 List<T> emptyPropsList = emptyList();
953 if (instanceEntities == null) {
954 return emptyPropsList;
956 List<T> cmptInstanceProps = instanceEntities.get(cmptInstanceId);
957 return cmptInstanceProps == null ? emptyPropsList : cmptInstanceProps;
961 public void setComponentInstancesInputs(Map<String, List<ComponentInstanceInput>> componentInstancesInputs) {
962 this.componentInstancesInputs = componentInstancesInputs;
965 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
966 // Implement where needed
969 public void setMetadataDefinition(ComponentMetadataDefinition metadataDefinition) {
970 this.componentMetadataDefinition = metadataDefinition;
973 public String fetchGenericTypeToscaNameFromConfig() {
974 // Implement where needed
975 return ConfigurationManager.getConfigurationManager()
977 .getGenericAssetNodeTypes()
978 .get(this.assetType());
981 public String assetType() {
982 // Implement where needed
983 return this.getComponentType().getValue();
986 public boolean shouldGenerateInputs() {
987 // Implement where needed
991 public boolean deriveFromGeneric() {
992 // Implement where needed
996 public void setDerivedFromGenericInfo(Resource genericType) {
997 derivedFromGenericType = genericType.getToscaResourceName();
998 derivedFromGenericVersion = genericType.getVersion();
1001 public boolean isTopologyTemplate() {
1002 return ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue().equals(toscaType);
1005 public String getToscaType() {
1009 public void setToscaType(String toscaType) {
1010 this.toscaType = toscaType;
1013 public List<AdditionalInformationDefinition> getAdditionalInformation() {
1014 return additionalInformation;
1017 public void setAdditionalInformation(List<AdditionalInformationDefinition> additionalInformation) {
1018 this.additionalInformation = additionalInformation;
1021 public PolicyDefinition getPolicyById(String id) {
1022 return policies != null ? policies.get(id) : null;
1025 public List<PolicyDefinition> resolvePoliciesList() {
1026 if (policies == null) {
1029 return new ArrayList<>(policies.values());
1032 public List<PolicyDefinition> resolvePoliciesContainingTarget(String targetId, PolicyTargetType targetType) {
1033 Predicate<PolicyDefinition> containsTarget = policy -> policy.containsTarget(targetId, targetType);
1034 return resolvePoliciesByPredicate(containsTarget);
1037 private List<PolicyDefinition> resolvePoliciesByPredicate(Predicate<PolicyDefinition> policyPredicate) {
1038 if (policies == null) {
1041 return policies.values().stream()
1042 .filter(policyPredicate)
1043 .collect(Collectors.toList());
1046 public List<GroupDefinition> resolveGroupsByMember(String instanceId) {
1047 if (groups == null) {
1050 return groups.stream()
1051 .filter(group -> group.containsInstanceAsMember(instanceId))
1052 .collect(Collectors.toList());
1055 public String getActualComponentType() {
1056 return componentMetadataDefinition.getMetadataDataDefinition().getActualComponentType();
1059 public Boolean isArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isArchived(); }
1061 public void setArchived(Boolean archived) { componentMetadataDefinition.getMetadataDataDefinition().setArchived(archived); }
1063 public Long getArchiveTime() { return componentMetadataDefinition.getMetadataDataDefinition().getArchiveTime(); }
1065 public void setArchiveTime(Long archiveTime) { componentMetadataDefinition.getMetadataDataDefinition().setArchiveTime(archiveTime); }
1067 public Boolean isVspArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isVspArchived(); }
1069 public void setVspArchived(Boolean vspArchived) { componentMetadataDefinition.getMetadataDataDefinition().setVspArchived(vspArchived); }
1071 //supportability log method return map of component metadata teddy.h
1072 public Map<String,String> getComponentMetadataForSupportLog(){
1073 Map<String,String>componentMetadata=new HashMap<>();
1074 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_NAME,this.getName());
1075 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_VERSION,this.getVersion());
1076 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_COMPONENT_UUID,this.getUUID());
1077 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_CSAR_UUID,this.getCsarUUID());
1078 componentMetadata.put(ILogConfiguration.MDC_SUPPORTABLITY_CSAR_VERSION,this.getCsarVersion());
1079 return componentMetadata;