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 com.fasterxml.jackson.annotation.JsonIgnore;
24 import com.google.common.collect.Maps;
25 import org.apache.commons.collections.MapUtils;
26 import org.openecomp.sdc.be.config.ConfigurationManager;
27 import org.openecomp.sdc.be.dao.utils.MapUtil;
28 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
29 import org.openecomp.sdc.be.model.category.CategoryDefinition;
30 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
31 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElementTypeEnum;
32 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
33 import static java.util.Collections.emptyList;
34 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
35 import org.openecomp.sdc.be.datatypes.elements.PolicyDataDefinition;
36 import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType;
37 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
39 import java.util.function.Predicate;
40 import java.util.stream.Collectors;
42 import static java.util.Collections.emptyList;
43 import static java.util.Collections.emptyMap;
44 import static java.util.stream.Collectors.toMap;
45 import static org.apache.commons.collections.CollectionUtils.isEmpty;
46 import static org.apache.commons.collections.MapUtils.isEmpty;
48 public abstract class Component {
50 private ComponentMetadataDefinition componentMetadataDefinition;
51 private Map<String, ArtifactDefinition> artifacts;
52 private Map<String, ArtifactDefinition> deploymentArtifacts;
53 private Map<String, ArtifactDefinition> toscaArtifacts;
54 private List<CategoryDefinition> categories;
55 private List<ComponentInstance> componentInstances;
56 private List<RequirementCapabilityRelDef> componentInstancesRelations;
57 private Map<String, List<ComponentInstanceInput>> componentInstancesInputs;
58 private Map<String, List<ComponentInstanceProperty>> componentInstancesProperties;
59 private Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes;
60 private Map<String, List<CapabilityDefinition>> capabilities;
61 private Map<String, List<RequirementDefinition>> requirements;
62 private List<InputDefinition> inputs;
63 private List<GroupDefinition> groups;
64 private Map<String, PolicyDefinition> policies;
65 private String derivedFromGenericType;
66 private String derivedFromGenericVersion;
67 private String toscaType;
68 protected List<AdditionalInformationDefinition> additionalInformation;
69 private Map<String, InterfaceDefinition> interfaces;
71 public Map<String, InterfaceDefinition> getInterfaces() {
75 public void setInterfaces(Map<String, InterfaceDefinition> interfaces) {
76 this.interfaces = interfaces;
79 public Component(ComponentMetadataDefinition componentMetadataDefinition) {
80 this.componentMetadataDefinition = componentMetadataDefinition;
83 public String getDerivedFromGenericVersion() {
84 return derivedFromGenericVersion;
87 public void setDerivedFromGenericVersion(String derivedFromGenericVersion) {
88 this.derivedFromGenericVersion = derivedFromGenericVersion;
91 public String getDerivedFromGenericType() {
92 return derivedFromGenericType;
95 public void setDerivedFromGenericType(String derivedFromGenericType) {
96 this.derivedFromGenericType = derivedFromGenericType;
101 public ComponentMetadataDefinition getComponentMetadataDefinition() {
102 return componentMetadataDefinition;
105 public Map<String, ArtifactDefinition> getArtifacts() {
109 public void setArtifacts(Map<String, ArtifactDefinition> artifacts) {
110 this.artifacts = artifacts;
113 public Map<String, ArtifactDefinition> getToscaArtifacts() {
114 return toscaArtifacts;
117 public void setToscaArtifacts(Map<String, ArtifactDefinition> toscaArtifacts) {
118 this.toscaArtifacts = toscaArtifacts;
121 public String getUniqueId() {
122 return componentMetadataDefinition.getMetadataDataDefinition().getUniqueId();
125 public void setUniqueId(String uniqueId) {
126 componentMetadataDefinition.getMetadataDataDefinition().setUniqueId(uniqueId);
129 public void setName(String name) {
130 componentMetadataDefinition.getMetadataDataDefinition().setName(name);
133 public void setVersion(String version) {
134 componentMetadataDefinition.getMetadataDataDefinition().setVersion(version);
137 public void setHighestVersion(Boolean isHighestVersion) {
138 componentMetadataDefinition.getMetadataDataDefinition().setHighestVersion(isHighestVersion);
141 public void setCreationDate(Long creationDate) {
142 componentMetadataDefinition.getMetadataDataDefinition().setCreationDate(creationDate);
145 public void setLastUpdateDate(Long lastUpdateDate) {
146 componentMetadataDefinition.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
149 public void setDescription(String description) {
150 componentMetadataDefinition.getMetadataDataDefinition().setDescription(description);
153 public void setState(LifecycleStateEnum state) {
154 componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
157 public void setTags(List<String> tags) {
158 componentMetadataDefinition.getMetadataDataDefinition().setTags(tags);
161 public void setConformanceLevel(String conformanceLevel) {
162 componentMetadataDefinition.getMetadataDataDefinition().setConformanceLevel(conformanceLevel);
165 public void setIcon(String icon) {
166 componentMetadataDefinition.getMetadataDataDefinition().setIcon(icon);
169 public void setContactId(String contactId) {
170 componentMetadataDefinition.getMetadataDataDefinition().setContactId(contactId);
173 public String getCreatorUserId() {
174 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorUserId();
177 public void setCreatorUserId(String creatorUserId) {
178 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorUserId(creatorUserId);
181 public String getCreatorFullName() {
182 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorFullName();
185 public void setCreatorFullName(String creatorFullName) {
186 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorFullName(creatorFullName);
189 public String getLastUpdaterUserId() {
190 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterUserId();
193 public void setLastUpdaterUserId(String lastUpdaterUserId) {
194 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterUserId(lastUpdaterUserId);
197 public String getLastUpdaterFullName() {
198 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterFullName();
201 public void setLastUpdaterFullName(String lastUpdaterFullName) {
202 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterFullName(lastUpdaterFullName);
205 public String getName() {
206 return componentMetadataDefinition.getMetadataDataDefinition().getName();
209 public String getVersion() {
210 return componentMetadataDefinition.getMetadataDataDefinition().getVersion();
213 public Boolean isHighestVersion() {
214 return componentMetadataDefinition.getMetadataDataDefinition().isHighestVersion();
217 public Long getCreationDate() {
218 return componentMetadataDefinition.getMetadataDataDefinition().getCreationDate();
221 public Long getLastUpdateDate() {
222 return componentMetadataDefinition.getMetadataDataDefinition().getLastUpdateDate();
225 public String getDescription() {
226 return componentMetadataDefinition.getMetadataDataDefinition().getDescription();
229 public LifecycleStateEnum getLifecycleState() {
230 if (componentMetadataDefinition.getMetadataDataDefinition().getState() != null) {
231 return LifecycleStateEnum.valueOf(componentMetadataDefinition.getMetadataDataDefinition().getState());
238 public List<String> getTags() {
239 return componentMetadataDefinition.getMetadataDataDefinition().getTags();
242 public String getConformanceLevel() {
243 return componentMetadataDefinition.getMetadataDataDefinition().getConformanceLevel();
246 public String getIcon() {
247 return componentMetadataDefinition.getMetadataDataDefinition().getIcon();
250 public String getContactId() {
251 return componentMetadataDefinition.getMetadataDataDefinition().getContactId();
254 public List<InputDefinition> getInputs() {
258 public List<InputDefinition> safeGetInputs() {
259 return inputs == null ? new ArrayList<>() : inputs;
262 public void setInputs(List<InputDefinition> inputs) {
263 this.inputs = inputs;
266 public void setLifecycleState(LifecycleStateEnum state) {
268 this.componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
272 public String getUUID() {
273 return componentMetadataDefinition.getMetadataDataDefinition().getUUID();
276 public void setUUID(String uUID) {
277 componentMetadataDefinition.getMetadataDataDefinition().setUUID(uUID);
280 public void setSystemName(String systemName) {
281 componentMetadataDefinition.getMetadataDataDefinition().setSystemName(systemName);
284 public String getSystemName() {
285 return componentMetadataDefinition.getMetadataDataDefinition().getSystemName();
288 public void setAllVersions(Map<String, String> allVersions) {
289 componentMetadataDefinition.getMetadataDataDefinition().setAllVersions(allVersions);
292 public Map<String, String> getAllVersions() {
293 return componentMetadataDefinition.getMetadataDataDefinition().getAllVersions();
296 public Map<String, ArtifactDefinition> getDeploymentArtifacts() {
297 return deploymentArtifacts;
300 public void setDeploymentArtifacts(Map<String, ArtifactDefinition> deploymentArtifacts) {
301 this.deploymentArtifacts = deploymentArtifacts;
304 public Map<String, ArtifactDefinition> getAllArtifacts() {
305 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
306 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(emptyMap()));
307 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(emptyMap()));
311 public List<CategoryDefinition> getCategories() {
315 public void setCategories(List<CategoryDefinition> categories) {
316 this.categories = categories;
319 public String getNormalizedName() {
320 return componentMetadataDefinition.getMetadataDataDefinition().getNormalizedName();
323 public void setNormalizedName(String normalizedName) {
324 componentMetadataDefinition.getMetadataDataDefinition().setNormalizedName(normalizedName);
327 public ComponentTypeEnum getComponentType() {
328 return this.componentMetadataDefinition.getMetadataDataDefinition().getComponentType();
331 public void setComponentType(ComponentTypeEnum componentType) {
332 this.componentMetadataDefinition.getMetadataDataDefinition().setComponentType(componentType);
335 public Map<String, List<CapabilityDefinition>> getCapabilities() {
336 if (MapUtils.isEmpty(capabilities)) {
337 capabilities = Maps.newHashMap();
342 public void setCapabilities(Map<String, List<CapabilityDefinition>> capabilities) {
343 this.capabilities = capabilities;
346 public Map<String, List<RequirementDefinition>> getRequirements() {
350 public void setRequirements(Map<String, List<RequirementDefinition>> requirements) {
351 this.requirements = requirements;
354 public List<ComponentInstance> getComponentInstances() {
355 return componentInstances;
358 public List<ComponentInstance> safeGetComponentInstances() {
359 if(componentInstances != null) {
360 return componentInstances;
366 public Optional<ComponentInstance> fetchInstanceById(String instanceId) {
367 return Optional.ofNullable(MapUtil.toMap(componentInstances, ComponentInstance::getUniqueId).get(instanceId));
370 public Map<String, ArtifactDefinition> safeGetComponentInstanceDeploymentArtifacts(String componentInstanceId) {
371 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetDeploymentArtifacts)
375 public Map<String, ArtifactDefinition> safeGetComponentInstanceInformationalArtifacts(String componentInstanceId) {
376 return getComponentInstanceById(componentInstanceId).map(ComponentInstance::safeGetInformationalArtifacts)
380 public List<ArtifactDefinition> safeGetComponentInstanceHeatArtifacts(String componentInstanceId) {
381 return safeGetComponentInstanceDeploymentArtifacts(componentInstanceId)
384 .filter(artifact -> ArtifactTypeEnum.HEAT_ENV.name().equals(artifact.getArtifactType()))
385 .collect(Collectors.toList());
388 public void setComponentInstances(List<ComponentInstance> resourceInstances) {
389 this.componentInstances = resourceInstances;
392 public List<RequirementCapabilityRelDef> getComponentInstancesRelations() {
393 return componentInstancesRelations;
396 public void setComponentInstancesRelations(List<RequirementCapabilityRelDef> resourceInstancesRelations) {
397 this.componentInstancesRelations = resourceInstancesRelations;
400 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesProperties() {
401 return componentInstancesProperties;
404 public Map<String, List<ComponentInstanceProperty>> safeGetComponentInstancesProperties() {
405 return componentInstancesProperties == null ? emptyMap() : componentInstancesProperties;
408 public Map<String, List<ComponentInstanceInput>> safeGetComponentInstancesInputs() {
409 return componentInstancesInputs == null ? emptyMap() : componentInstancesInputs;
412 public List<ComponentInstanceProperty> safeGetComponentInstanceProperties(String cmptInstacneId) {
413 return this.safeGetComponentInstanceEntity(cmptInstacneId, this.componentInstancesProperties);
416 public List<ComponentInstanceInput> safeGetComponentInstanceInput(String comptInstanceId) {
417 return this.safeGetComponentInstanceEntity(comptInstanceId, this.componentInstancesInputs);
420 public void setComponentInstancesProperties(
421 Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties) {
422 this.componentInstancesProperties = resourceInstancesProperties;
425 public Boolean getIsDeleted() {
426 return componentMetadataDefinition.getMetadataDataDefinition().isDeleted();
429 public void setIsDeleted(Boolean isDeleted) {
430 componentMetadataDefinition.getMetadataDataDefinition().setIsDeleted(isDeleted);
433 public String getProjectCode() {
434 return componentMetadataDefinition.getMetadataDataDefinition().getProjectCode();
437 public void setProjectCode(String projectCode) {
438 componentMetadataDefinition.getMetadataDataDefinition().setProjectCode(projectCode);
441 public String getCsarUUID() {
442 return componentMetadataDefinition.getMetadataDataDefinition().getCsarUUID();
445 public void setCsarUUID(String csarUUID) {
446 componentMetadataDefinition.getMetadataDataDefinition().setCsarUUID(csarUUID);
449 public String getCsarVersion() {
450 return componentMetadataDefinition.getMetadataDataDefinition().getCsarVersion();
453 public void setCsarVersion(String csarVersion) {
454 componentMetadataDefinition.getMetadataDataDefinition().setCsarVersion(csarVersion);
457 public String getImportedToscaChecksum() {
458 return componentMetadataDefinition.getMetadataDataDefinition().getImportedToscaChecksum();
461 public void setImportedToscaChecksum(String importedToscaChecksum) {
462 componentMetadataDefinition.getMetadataDataDefinition().setImportedToscaChecksum(importedToscaChecksum);
465 public String getInvariantUUID() {
466 return componentMetadataDefinition.getMetadataDataDefinition().getInvariantUUID();
469 public void setInvariantUUID(String invariantUUID) {
470 componentMetadataDefinition.getMetadataDataDefinition().setInvariantUUID(invariantUUID);
473 public Optional<ComponentInstance> getComponentInstanceById(String id) {
474 return getComponentInstanceByPredicate(instance -> id.equals(instance.getUniqueId()));
477 public Optional<ComponentInstance> getComponentInstanceByName(String name) {
478 return getComponentInstanceByPredicate(instance -> name.equals(instance.getName()));
481 private Optional<ComponentInstance> getComponentInstanceByPredicate(Predicate<ComponentInstance> predicate) {
482 if (componentInstances == null) {
483 return Optional.empty();
485 return componentInstances.stream().filter(predicate).findFirst();
488 public List<GroupDefinition> getGroups() {
492 public List<GroupDefinition> safeGetGroups() {
493 return groups == null ? emptyList() : groups;
496 public Optional<GroupDefinition> getGroupById(String id) {
497 return getGroupByPredicate(group -> group.getUniqueId().equals(id));
500 public Optional<GroupDefinition> getGroupByInvariantName(String name) {
501 return getGroupByPredicate(group -> name.equals(group.getInvariantName()));
504 public boolean containsGroupWithInvariantName(String invariantName) {
505 return groups != null && groups.stream().anyMatch(gr -> invariantName.equals(gr.getInvariantName()));
508 private Optional<GroupDefinition> getGroupByPredicate(Predicate<GroupDefinition> predicate) {
509 if (groups == null) {
510 return Optional.empty();
512 return groups.stream()
517 public void setGroups(List<GroupDefinition> groups) {
518 this.groups = groups;
521 public void addGroups(List<GroupDefinition> groupsToAdd) {
522 if (groups == null) {
523 groups = new ArrayList<>();
525 groups.addAll(groupsToAdd);
528 public Map<String, PolicyDefinition> getPolicies() {
532 public void setPolicies(Map<String, PolicyDefinition> policies) {
533 this.policies = policies;
537 public int hashCode() {
538 final int prime = 31;
540 result = prime * result + ((artifacts == null) ? 0 : artifacts.hashCode());
541 result = prime * result + ((categories == null) ? 0 : categories.hashCode());
542 result = prime * result + ((componentMetadataDefinition == null) ? 0 : componentMetadataDefinition.hashCode());
543 result = prime * result + ((deploymentArtifacts == null) ? 0 : deploymentArtifacts.hashCode());
544 result = prime * result + ((capabilities == null) ? 0 : capabilities.hashCode());
545 result = prime * result + ((requirements == null) ? 0 : requirements.hashCode());
546 result = prime * result + ((componentInstances == null) ? 0 : componentInstances.hashCode());
547 result = prime * result
548 + ((componentInstancesProperties == null) ? 0 : componentInstancesProperties.hashCode());
549 result = prime * result
550 + ((componentInstancesAttributes == null) ? 0 : componentInstancesAttributes.hashCode());
551 result = prime * result + ((componentInstancesInputs == null) ? 0 : componentInstancesInputs.hashCode());
552 result = prime * result + ((componentInstancesRelations == null) ? 0 : componentInstancesRelations.hashCode());
553 result = prime * result + ((groups == null) ? 0 : groups.hashCode());
554 result = prime * result + ((policies == null) ? 0 : policies.hashCode());
555 result = prime * result + ((derivedFromGenericType == null) ? 0 : derivedFromGenericType.hashCode());
556 result = prime * result + ((derivedFromGenericVersion == null) ? 0 : derivedFromGenericVersion.hashCode());
557 result = prime * result + ((interfaces == null) ? 0 : interfaces.hashCode());
562 public boolean equals(Object obj) {
569 if (getClass() != obj.getClass()) {
572 Component other = (Component) obj;
573 if (artifacts == null) {
574 if (other.artifacts != null) {
578 else if (!artifacts.equals(other.artifacts)) {
581 if (categories == null) {
582 if (other.categories != null) {
586 else if (!categories.equals(other.categories)) {
589 if (componentMetadataDefinition == null) {
590 if (other.componentMetadataDefinition != null) {
594 else if (!componentMetadataDefinition.equals(other.componentMetadataDefinition)) {
598 if (deploymentArtifacts == null) {
599 if (other.deploymentArtifacts != null) {
603 else if (!deploymentArtifacts.equals(other.deploymentArtifacts)) {
607 if (componentInstances == null) {
608 if (other.componentInstances != null) {
612 else if (!componentInstances.equals(other.componentInstances)) {
615 if (componentInstancesProperties == null) {
616 if (other.componentInstancesProperties != null) {
620 else if (!componentInstancesProperties.equals(other.componentInstancesProperties)) {
624 if (!Objects.equals(componentInstancesAttributes, other.componentInstancesAttributes)) {
627 if (!Objects.equals(componentInstancesInputs, other.componentInstancesInputs)) {
630 if (componentInstancesRelations == null) {
631 if (other.componentInstancesRelations != null) {
635 else if (!componentInstancesRelations.equals(other.componentInstancesRelations)) {
638 if (requirements == null) {
639 if (other.requirements != null) {
643 else if (!requirements.equals(other.requirements)) {
646 if (capabilities == null) {
647 if (other.capabilities != null) {
651 else if (!capabilities.equals(other.capabilities)) {
654 if (groups == null) {
655 if (other.groups != null) {
659 else if (!groups.equals(other.groups)) {
662 if (policies == null) {
663 if (other.policies != null) {
667 else if (!policies.equals(other.policies)) {
670 if (derivedFromGenericType == null) {
671 if (other.derivedFromGenericType != null) {
675 else if (!derivedFromGenericType.equals(other.derivedFromGenericType)) {
678 if (derivedFromGenericVersion == null) {
679 if (other.derivedFromGenericVersion != null) {
683 else if (!derivedFromGenericVersion.equals(other.derivedFromGenericVersion)) {
686 if (interfaces == null) {
687 if (other.interfaces != null) {
691 else if (!interfaces.equals(other.interfaces)) {
697 public void addCategory(String category, String subCategory) {
698 if (category != null || subCategory != null) {
699 if (categories == null) {
700 categories = new ArrayList<>();
702 CategoryDefinition selectedCategory = null;
703 for (CategoryDefinition categoryDef : categories) {
704 if (categoryDef.getName().equals(category)) {
705 selectedCategory = categoryDef;
708 if (selectedCategory == null) {
709 selectedCategory = new CategoryDefinition();
710 selectedCategory.setName(category);
711 categories.add(selectedCategory);
713 List<SubCategoryDefinition> subcategories = selectedCategory.getSubcategories();
714 if (subcategories == null) {
715 subcategories = new ArrayList<>();
716 selectedCategory.setSubcategories(subcategories);
718 SubCategoryDefinition selectedSubcategory = null;
719 for (SubCategoryDefinition subcategory : subcategories) {
720 if (subcategory.getName().equals(subCategory)) {
721 selectedSubcategory = subcategory;
724 if (selectedSubcategory == null) {
725 selectedSubcategory = new SubCategoryDefinition();
726 selectedSubcategory.setName(subCategory);
727 subcategories.add(selectedSubcategory);
732 public void addCategory(CategoryDefinition category) {
733 addCategory(category, null);
736 public void addCategory(CategoryDefinition category, SubCategoryDefinition subCategory) {
737 if (categories == null) {
738 categories = new ArrayList<>();
740 boolean foundCat = false;
741 for (CategoryDefinition cat : categories) {
742 if (cat.getName().equals(category.getName())) {
744 if (subCategory != null) {
745 List<SubCategoryDefinition> subcategories = cat.getSubcategories();
746 if (subcategories == null) {
747 subcategories = new ArrayList<>();
748 cat.setSubcategories(subcategories);
750 for (SubCategoryDefinition subcat : subcategories) {
751 boolean foundSub = false;
752 if (subcat.getName().equals(subCategory.getName())) {
756 subcategories.add(subCategory);
764 if (subCategory != null) {
765 category.addSubCategory(subCategory);
767 categories.add(category);
771 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesAttributes() {
772 return componentInstancesAttributes;
775 public void setComponentInstancesAttributes(
776 Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes) {
777 this.componentInstancesAttributes = componentInstancesAttributes;
780 public Map<String, List<ComponentInstanceInput>> getComponentInstancesInputs() {
781 return componentInstancesInputs;
784 public Map<String, List<PropertyDataDefinition>> safeGetGroupsProperties() {
785 if (isEmpty(groups)) {
788 return groups.stream()
789 .filter(gr -> Objects.nonNull(gr.getProperties()))
790 .collect(toMap(GroupDataDefinition::getUniqueId,
791 GroupDataDefinition::getProperties));
794 public Map<String, List<PropertyDataDefinition>> safeGetPolicyProperties() {
795 if (isEmpty(policies)) {
798 return policies.values()
800 .filter(policy -> Objects.nonNull(policy.getProperties()))
801 .collect(toMap(PolicyDataDefinition::getUniqueId,
802 PolicyDataDefinition::getProperties));
805 public List<ComponentInstanceInput> safeGetComponentInstanceInputsByName(String cmptInstanceName) {
806 List<ComponentInstanceInput> emptyPropsList = emptyList();
807 if (this.componentInstancesInputs == null) {
808 return emptyPropsList;
810 return this.componentInstances.stream()
811 .filter(ci -> ci.getName().equals(cmptInstanceName))
812 .map(ComponentInstance::getUniqueId)
813 .map(instanceId -> safeGetComponentInstanceEntity(instanceId, this.componentInstancesInputs))
815 .orElse(emptyPropsList);
818 private <T> List<T> safeGetComponentInstanceEntity(String cmptInstanceId, Map<String, List<T>> instanceEntities) {
819 List<T> emptyPropsList = emptyList();
820 if (instanceEntities == null) {
821 return emptyPropsList;
823 List<T> cmptInstanceProps = instanceEntities.get(cmptInstanceId);
824 return cmptInstanceProps == null ? emptyPropsList : cmptInstanceProps;
828 public void setComponentInstancesInputs(Map<String, List<ComponentInstanceInput>> componentInstancesInputs) {
829 this.componentInstancesInputs = componentInstancesInputs;
832 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
833 // Implement where needed
836 public void setMetadataDefinition(ComponentMetadataDefinition metadataDefinition) {
837 this.componentMetadataDefinition = metadataDefinition;
840 public String fetchGenericTypeToscaNameFromConfig() {
841 // Implement where needed
842 return ConfigurationManager.getConfigurationManager()
844 .getGenericAssetNodeTypes()
845 .get(this.assetType());
848 public String assetType() {
849 // Implement where needed
850 return this.getComponentType().getValue();
853 public boolean shouldGenerateInputs() {
854 // Implement where needed
858 public boolean deriveFromGeneric() {
859 // Implement where needed
863 public void setDerivedFromGenericInfo(Resource genericType) {
864 derivedFromGenericType = genericType.getToscaResourceName();
865 derivedFromGenericVersion = genericType.getVersion();
868 public boolean isTopologyTemplate() {
869 return ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue().equals(toscaType);
872 public String getToscaType() {
876 public void setToscaType(String toscaType) {
877 this.toscaType = toscaType;
880 public List<AdditionalInformationDefinition> getAdditionalInformation() {
881 return additionalInformation;
884 public void setAdditionalInformation(List<AdditionalInformationDefinition> additionalInformation) {
885 this.additionalInformation = additionalInformation;
888 public PolicyDefinition getPolicyById(String id) {
889 return policies != null ? policies.get(id) : null;
892 public List<PolicyDefinition> resolvePoliciesList() {
893 if (policies == null) {
896 return new ArrayList<>(policies.values());
899 public List<PolicyDefinition> resolvePoliciesContainingTarget(String targetId, PolicyTargetType targetType) {
900 Predicate<PolicyDefinition> containsTarget = policy -> policy.containsTarget(targetId, targetType);
901 return resolvePoliciesByPredicate(containsTarget);
904 private List<PolicyDefinition> resolvePoliciesByPredicate(Predicate<PolicyDefinition> policyPredicate) {
905 if (policies == null) {
908 return policies.values().stream()
909 .filter(policyPredicate)
910 .collect(Collectors.toList());
913 public List<GroupDefinition> resolveGroupsByMember(String instanceId) {
914 if (groups == null) {
917 return groups.stream()
918 .filter(group -> group.containsInstanceAsMember(instanceId))
919 .collect(Collectors.toList());
922 public String getActualComponentType() {
923 return componentMetadataDefinition.getMetadataDataDefinition().getActualComponentType();
926 public Boolean isArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isArchived(); }
928 public void setArchived(Boolean archived) { componentMetadataDefinition.getMetadataDataDefinition().setArchived(archived); }
930 public Long getArchiveTime() { return componentMetadataDefinition.getMetadataDataDefinition().getArchiveTime(); }
932 public void setArchiveTime(Long archiveTime) { componentMetadataDefinition.getMetadataDataDefinition().setArchiveTime(archiveTime); }
934 public Boolean isVspArchived() { return componentMetadataDefinition.getMetadataDataDefinition().isVspArchived(); }
936 public void setVspArchived(Boolean vspArchived) { componentMetadataDefinition.getMetadataDataDefinition().setVspArchived(vspArchived); }