2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model;
23 import java.io.Serializable;
24 import java.util.ArrayList;
25 import java.util.Collections;
26 import java.util.HashMap;
27 import java.util.List;
29 import java.util.Objects;
30 import java.util.Optional;
32 import org.codehaus.jackson.annotate.JsonIgnore;
33 import org.openecomp.sdc.be.config.ConfigurationManager;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.model.category.CategoryDefinition;
36 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
38 public abstract class Component implements Serializable {
43 private static final long serialVersionUID = -6373756459967949120L;
45 private ComponentMetadataDefinition componentMetadataDefinition;
46 private Map<String, ArtifactDefinition> artifacts;
47 private Map<String, ArtifactDefinition> deploymentArtifacts;
48 private Map<String, ArtifactDefinition> toscaArtifacts;
50 private List<CategoryDefinition> categories;
52 private List<ComponentInstance> componentInstances;
54 private List<RequirementCapabilityRelDef> componentInstancesRelations;
56 private Map<String, List<ComponentInstanceInput>> componentInstancesInputs;
58 private Map<String, List<ComponentInstanceProperty>> componentInstancesProperties;
60 private Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes;
62 private Map<String, List<CapabilityDefinition>> capabilities;
64 private Map<String, List<RequirementDefinition>> requirements;
66 private List<InputDefinition> inputs;
68 private List<GroupDefinition> groups;
70 private String derivedFromGenericType;
71 private String derivedFromGenericVersion;
72 private String toscaType;
73 protected List<AdditionalInformationDefinition> additionalInformation;
75 public String getDerivedFromGenericVersion() {
76 return derivedFromGenericVersion;
79 public void setDerivedFromGenericVersion(String derivedFromGenericVersion) {
80 this.derivedFromGenericVersion = derivedFromGenericVersion;
83 public String getDerivedFromGenericType() {
84 return derivedFromGenericType;
87 public void setDerivedFromGenericType(String derivedFromGenericType) {
88 this.derivedFromGenericType = derivedFromGenericType;
91 public Component(ComponentMetadataDefinition componentMetadataDefinition) {
92 this.componentMetadataDefinition = componentMetadataDefinition;
96 public ComponentMetadataDefinition getComponentMetadataDefinition() {
97 return componentMetadataDefinition;
100 public Map<String, ArtifactDefinition> getArtifacts() {
104 public void setArtifacts(Map<String, ArtifactDefinition> artifacts) {
105 this.artifacts = artifacts;
108 public Map<String, ArtifactDefinition> getToscaArtifacts() {
109 return toscaArtifacts;
112 public void setToscaArtifacts(Map<String, ArtifactDefinition> toscaArtifacts) {
113 this.toscaArtifacts = toscaArtifacts;
116 public String getUniqueId() {
117 return componentMetadataDefinition.getMetadataDataDefinition().getUniqueId();
120 public void setUniqueId(String uniqueId) {
121 componentMetadataDefinition.getMetadataDataDefinition().setUniqueId(uniqueId);
124 public void setName(String name) {
125 componentMetadataDefinition.getMetadataDataDefinition().setName(name);
128 public void setVersion(String version) {
129 componentMetadataDefinition.getMetadataDataDefinition().setVersion(version);
132 public void setHighestVersion(Boolean isHighestVersion) {
133 componentMetadataDefinition.getMetadataDataDefinition().setHighestVersion(isHighestVersion);
136 public void setCreationDate(Long creationDate) {
137 componentMetadataDefinition.getMetadataDataDefinition().setCreationDate(creationDate);
140 public void setLastUpdateDate(Long lastUpdateDate) {
141 componentMetadataDefinition.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
144 public void setDescription(String description) {
145 componentMetadataDefinition.getMetadataDataDefinition().setDescription(description);
148 public void setState(LifecycleStateEnum state) {
149 componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
152 public void setTags(List<String> tags) {
153 componentMetadataDefinition.getMetadataDataDefinition().setTags(tags);
156 public void setConformanceLevel(String conformanceLevel) {
157 componentMetadataDefinition.getMetadataDataDefinition().setConformanceLevel(conformanceLevel);
160 public void setIcon(String icon) {
161 componentMetadataDefinition.getMetadataDataDefinition().setIcon(icon);
164 public void setContactId(String contactId) {
165 componentMetadataDefinition.getMetadataDataDefinition().setContactId(contactId);
168 public String getCreatorUserId() {
169 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorUserId();
172 public void setCreatorUserId(String creatorUserId) {
173 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorUserId(creatorUserId);
176 public String getCreatorFullName() {
177 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorFullName();
180 public void setCreatorFullName(String creatorFullName) {
181 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorFullName(creatorFullName);
184 public String getLastUpdaterUserId() {
185 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterUserId();
188 public void setLastUpdaterUserId(String lastUpdaterUserId) {
189 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterUserId(lastUpdaterUserId);
192 public String getLastUpdaterFullName() {
193 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterFullName();
196 public void setLastUpdaterFullName(String lastUpdaterFullName) {
197 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterFullName(lastUpdaterFullName);
200 public String getName() {
201 return componentMetadataDefinition.getMetadataDataDefinition().getName();
204 public String getVersion() {
205 return componentMetadataDefinition.getMetadataDataDefinition().getVersion();
208 public Boolean isHighestVersion() {
209 return componentMetadataDefinition.getMetadataDataDefinition().isHighestVersion();
212 public Long getCreationDate() {
213 return componentMetadataDefinition.getMetadataDataDefinition().getCreationDate();
216 public Long getLastUpdateDate() {
217 return componentMetadataDefinition.getMetadataDataDefinition().getLastUpdateDate();
220 public String getDescription() {
221 return componentMetadataDefinition.getMetadataDataDefinition().getDescription();
224 public LifecycleStateEnum getLifecycleState() {
225 if (componentMetadataDefinition.getMetadataDataDefinition().getState() != null) {
226 return LifecycleStateEnum.valueOf(componentMetadataDefinition.getMetadataDataDefinition().getState());
232 public List<String> getTags() {
233 return componentMetadataDefinition.getMetadataDataDefinition().getTags();
236 public String getConformanceLevel() {
237 return componentMetadataDefinition.getMetadataDataDefinition().getConformanceLevel();
240 public String getIcon() {
241 return componentMetadataDefinition.getMetadataDataDefinition().getIcon();
244 public String getContactId() {
245 return componentMetadataDefinition.getMetadataDataDefinition().getContactId();
248 public List<InputDefinition> getInputs() {
252 public void setInputs(List<InputDefinition> inputs) {
253 this.inputs = inputs;
256 public void setLifecycleState(LifecycleStateEnum state) {
258 this.componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
262 public String getUUID() {
263 return componentMetadataDefinition.getMetadataDataDefinition().getUUID();
266 public void setUUID(String uUID) {
267 componentMetadataDefinition.getMetadataDataDefinition().setUUID(uUID);
270 public void setSystemName(String systemName) {
271 componentMetadataDefinition.getMetadataDataDefinition().setSystemName(systemName);
274 public String getSystemName() {
275 return componentMetadataDefinition.getMetadataDataDefinition().getSystemName();
278 public void setAllVersions(Map<String, String> allVersions) {
279 componentMetadataDefinition.getMetadataDataDefinition().setAllVersions(allVersions);
282 public Map<String, String> getAllVersions() {
283 return componentMetadataDefinition.getMetadataDataDefinition().getAllVersions();
286 public Map<String, ArtifactDefinition> getDeploymentArtifacts() {
287 return deploymentArtifacts;
290 public void setDeploymentArtifacts(Map<String, ArtifactDefinition> deploymentArtifacts) {
291 this.deploymentArtifacts = deploymentArtifacts;
294 public Map<String, ArtifactDefinition> getAllArtifacts() {
295 HashMap<String, ArtifactDefinition> allArtifacts = new HashMap<>();
296 allArtifacts.putAll(Optional.ofNullable(this.deploymentArtifacts).orElse(Collections.emptyMap()));
297 allArtifacts.putAll(Optional.ofNullable(this.artifacts).orElse(Collections.emptyMap()));
301 public List<CategoryDefinition> getCategories() {
305 public void setCategories(List<CategoryDefinition> categories) {
306 this.categories = categories;
309 public String getNormalizedName() {
310 return componentMetadataDefinition.getMetadataDataDefinition().getNormalizedName();
313 public void setNormalizedName(String normalizedName) {
314 componentMetadataDefinition.getMetadataDataDefinition().setNormalizedName(normalizedName);
317 public ComponentTypeEnum getComponentType() {
318 return this.componentMetadataDefinition.getMetadataDataDefinition().getComponentType();
321 public void setComponentType(ComponentTypeEnum componentType) {
322 this.componentMetadataDefinition.getMetadataDataDefinition().setComponentType(componentType);
325 public Map<String, List<CapabilityDefinition>> getCapabilities() {
329 public void setCapabilities(Map<String, List<CapabilityDefinition>> capabilities) {
330 this.capabilities = capabilities;
333 public Map<String, List<RequirementDefinition>> getRequirements() {
337 public void setRequirements(Map<String, List<RequirementDefinition>> requirements) {
338 this.requirements = requirements;
341 public List<ComponentInstance> getComponentInstances() {
342 return componentInstances;
345 public void setComponentInstances(List<ComponentInstance> resourceInstances) {
346 this.componentInstances = resourceInstances;
349 public List<RequirementCapabilityRelDef> getComponentInstancesRelations() {
350 return componentInstancesRelations;
353 public void setComponentInstancesRelations(List<RequirementCapabilityRelDef> resourceInstancesRelations) {
354 this.componentInstancesRelations = resourceInstancesRelations;
357 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesProperties() {
358 return componentInstancesProperties;
361 public void setComponentInstancesProperties(
362 Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties) {
363 this.componentInstancesProperties = resourceInstancesProperties;
366 public Boolean getIsDeleted() {
367 return componentMetadataDefinition.getMetadataDataDefinition().isDeleted();
370 public void setIsDeleted(Boolean isDeleted) {
371 componentMetadataDefinition.getMetadataDataDefinition().setIsDeleted(isDeleted);
374 public String getProjectCode() {
375 return componentMetadataDefinition.getMetadataDataDefinition().getProjectCode();
378 public void setProjectCode(String projectCode) {
379 componentMetadataDefinition.getMetadataDataDefinition().setProjectCode(projectCode);
382 public String getCsarUUID() {
383 return componentMetadataDefinition.getMetadataDataDefinition().getCsarUUID();
386 public void setCsarUUID(String csarUUID) {
387 componentMetadataDefinition.getMetadataDataDefinition().setCsarUUID(csarUUID);
390 public String getCsarVersion() {
391 return componentMetadataDefinition.getMetadataDataDefinition().getCsarVersion();
394 public void setCsarVersion(String csarVersion) {
395 componentMetadataDefinition.getMetadataDataDefinition().setCsarVersion(csarVersion);
398 public String getImportedToscaChecksum() {
399 return componentMetadataDefinition.getMetadataDataDefinition().getImportedToscaChecksum();
402 public void setImportedToscaChecksum(String importedToscaChecksum) {
403 componentMetadataDefinition.getMetadataDataDefinition().setImportedToscaChecksum(importedToscaChecksum);
406 public String getInvariantUUID() {
407 return componentMetadataDefinition.getMetadataDataDefinition().getInvariantUUID();
410 public void setInvariantUUID(String invariantUUID) {
411 componentMetadataDefinition.getMetadataDataDefinition().setInvariantUUID(invariantUUID);
414 public List<GroupDefinition> getGroups() {
418 public void setGroups(List<GroupDefinition> groups) {
419 this.groups = groups;
423 public int hashCode() {
424 final int prime = 31;
426 result = prime * result + ((artifacts == null) ? 0 : artifacts.hashCode());
427 result = prime * result + ((categories == null) ? 0 : categories.hashCode());
428 result = prime * result + ((componentMetadataDefinition == null) ? 0 : componentMetadataDefinition.hashCode());
429 // result = prime * result + ((creatorUserId == null) ? 0 : creatorUserId.hashCode());
430 // result = prime * result + ((creatorFullName == null) ? 0 : creatorFullName.hashCode());
431 result = prime * result + ((deploymentArtifacts == null) ? 0 : deploymentArtifacts.hashCode());
432 // result = prime * result + ((lastUpdaterUserId == null) ? 0 : lastUpdaterUserId.hashCode());
433 // result = prime * result + ((lastUpdaterFullName == null) ? 0 : lastUpdaterFullName.hashCode());
434 result = prime * result + ((capabilities == null) ? 0 : capabilities.hashCode());
435 result = prime * result + ((requirements == null) ? 0 : requirements.hashCode());
436 result = prime * result + ((componentInstances == null) ? 0 : componentInstances.hashCode());
437 result = prime * result
438 + ((componentInstancesProperties == null) ? 0 : componentInstancesProperties.hashCode());
439 result = prime * result
440 + ((componentInstancesAttributes == null) ? 0 : componentInstancesAttributes.hashCode());
441 result = prime * result + ((componentInstancesInputs == null) ? 0 : componentInstancesInputs.hashCode());
442 result = prime * result + ((componentInstancesRelations == null) ? 0 : componentInstancesRelations.hashCode());
443 result = prime * result + ((groups == null) ? 0 : groups.hashCode());
444 result = prime * result + ((derivedFromGenericType == null) ? 0 : derivedFromGenericType.hashCode());
445 result = prime * result + ((derivedFromGenericVersion == null) ? 0 : derivedFromGenericVersion.hashCode());
450 public boolean equals(Object obj) {
455 if (getClass() != obj.getClass())
457 Component other = (Component) obj;
458 if (artifacts == null) {
459 if (other.artifacts != null)
461 } else if (!artifacts.equals(other.artifacts))
463 if (categories == null) {
464 if (other.categories != null)
466 } else if (!categories.equals(other.categories))
468 if (componentMetadataDefinition == null) {
469 if (other.componentMetadataDefinition != null)
471 } else if (!componentMetadataDefinition.equals(other.componentMetadataDefinition))
473 // if (creatorUserId == null) {
474 // if (other.creatorUserId != null)
476 // } else if (!creatorUserId.equals(other.creatorUserId))
478 // if (creatorFullName == null) {
479 // if (other.creatorFullName != null)
481 // } else if (!creatorFullName.equals(other.creatorFullName))
483 if (deploymentArtifacts == null) {
484 if (other.deploymentArtifacts != null)
486 } else if (!deploymentArtifacts.equals(other.deploymentArtifacts))
488 // if (lastUpdaterUserId == null) {
489 // if (other.lastUpdaterUserId != null)
491 // } else if (!lastUpdaterUserId.equals(other.lastUpdaterUserId))
493 // if (lastUpdaterFullName == null) {
494 // if (other.lastUpdaterFullName != null)
496 // } else if (!lastUpdaterFullName.equals(other.lastUpdaterFullName))
498 if (componentInstances == null) {
499 if (other.componentInstances != null)
501 } else if (!componentInstances.equals(other.componentInstances))
503 if (componentInstancesProperties == null) {
504 if (other.componentInstancesProperties != null)
506 } else if (!componentInstancesProperties.equals(other.componentInstancesProperties))
509 if (!Objects.equals(componentInstancesAttributes, other.componentInstancesAttributes)) {
512 if (!Objects.equals(componentInstancesInputs, other.componentInstancesInputs)) {
515 if (componentInstancesRelations == null) {
516 if (other.componentInstancesRelations != null)
518 } else if (!componentInstancesRelations.equals(other.componentInstancesRelations))
520 if (requirements == null) {
521 if (other.requirements != null)
523 } else if (!requirements.equals(other.requirements))
525 if (capabilities == null) {
526 if (other.capabilities != null)
528 } else if (!capabilities.equals(other.capabilities))
530 if (groups == null) {
531 if (other.groups != null)
533 } else if (!groups.equals(other.groups))
535 if (derivedFromGenericType == null) {
536 if (other.derivedFromGenericType != null)
538 } else if (!derivedFromGenericType.equals(other.derivedFromGenericType))
540 if (derivedFromGenericVersion == null) {
541 if (other.derivedFromGenericVersion != null)
543 } else if (!derivedFromGenericVersion.equals(other.derivedFromGenericVersion))
548 public void addCategory(String category, String subCategory) {
549 if (category != null || subCategory != null) {
550 if (categories == null) {
551 categories = new ArrayList<>();
553 CategoryDefinition selectedCategory = null;
554 for (CategoryDefinition categoryDef : categories) {
555 if (categoryDef.getName().equals(category)) {
556 selectedCategory = categoryDef;
559 if (selectedCategory == null) {
560 selectedCategory = new CategoryDefinition();
561 selectedCategory.setName(category);
562 categories.add(selectedCategory);
564 List<SubCategoryDefinition> subcategories = selectedCategory.getSubcategories();
565 if (subcategories == null) {
566 subcategories = new ArrayList<>();
567 selectedCategory.setSubcategories(subcategories);
569 SubCategoryDefinition selectedSubcategory = null;
570 for (SubCategoryDefinition subcategory : subcategories) {
571 if (subcategory.getName().equals(subCategory)) {
572 selectedSubcategory = subcategory;
575 if (selectedSubcategory == null) {
576 selectedSubcategory = new SubCategoryDefinition();
577 selectedSubcategory.setName(subCategory);
578 subcategories.add(selectedSubcategory);
583 public void addCategory(CategoryDefinition category) {
584 addCategory(category, null);
587 public void addCategory(CategoryDefinition category, SubCategoryDefinition subCategory) {
588 if (categories == null) {
589 categories = new ArrayList<>();
591 boolean foundCat = false;
592 for (CategoryDefinition cat : categories) {
593 if (cat.getName().equals(category.getName())) {
595 if (subCategory != null) {
596 List<SubCategoryDefinition> subcategories = cat.getSubcategories();
597 if (subcategories == null) {
598 subcategories = new ArrayList<>();
599 cat.setSubcategories(subcategories);
601 for (SubCategoryDefinition subcat : subcategories) {
602 boolean foundSub = false;
603 if (subcat.getName().equals(subCategory.getName())) {
606 if (foundSub == false) {
607 subcategories.add(subCategory);
614 if (foundCat == false) {
615 if (subCategory != null) {
616 category.addSubCategory(subCategory);
618 categories.add(category);
622 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesAttributes() {
623 return componentInstancesAttributes;
626 public void setComponentInstancesAttributes(
627 Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes) {
628 this.componentInstancesAttributes = componentInstancesAttributes;
631 public Map<String, List<ComponentInstanceInput>> getComponentInstancesInputs() {
632 return componentInstancesInputs;
635 public void setComponentInstancesInputs(Map<String, List<ComponentInstanceInput>> componentInstancesInputs) {
636 this.componentInstancesInputs = componentInstancesInputs;
639 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
640 // Implement where needed
643 public void setMetadataDefinition(ComponentMetadataDefinition metadataDefinition) {
644 this.componentMetadataDefinition = metadataDefinition;
647 public String fetchGenericTypeToscaNameFromConfig(){
648 // Implement where needed
649 return ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get(this.assetType());
652 public String assetType(){
653 // Implement where needed
654 return this.getComponentType().getValue();
657 public boolean shouldGenerateInputs(){
658 // Implement where needed
662 public boolean deriveFromGeneric(){
663 // Implement where needed
667 public void setDerivedFromGenericInfo(Resource genericType){
668 derivedFromGenericType = genericType.getToscaResourceName();
669 derivedFromGenericVersion = genericType.getVersion();
672 public String getToscaType() {
676 public void setToscaType(String toscaType) {
677 this.toscaType = toscaType;
679 public List<AdditionalInformationDefinition> getAdditionalInformation() {
680 return additionalInformation;
683 public void setAdditionalInformation(List<AdditionalInformationDefinition> additionalInformation) {
684 this.additionalInformation = additionalInformation;