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.List;
27 import java.util.Objects;
29 import org.codehaus.jackson.annotate.JsonIgnore;
30 import org.openecomp.sdc.be.config.ConfigurationManager;
31 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
32 import org.openecomp.sdc.be.model.category.CategoryDefinition;
33 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
35 public abstract class Component implements Serializable {
40 private static final long serialVersionUID = -6373756459967949120L;
42 private ComponentMetadataDefinition componentMetadataDefinition;
43 private Map<String, ArtifactDefinition> artifacts;
44 private Map<String, ArtifactDefinition> deploymentArtifacts;
45 private Map<String, ArtifactDefinition> toscaArtifacts;
47 private List<CategoryDefinition> categories;
49 private List<ComponentInstance> componentInstances;
51 private List<RequirementCapabilityRelDef> componentInstancesRelations;
53 private Map<String, List<ComponentInstanceInput>> componentInstancesInputs;
55 private Map<String, List<ComponentInstanceProperty>> componentInstancesProperties;
57 private Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes;
59 private Map<String, List<CapabilityDefinition>> capabilities;
61 private Map<String, List<RequirementDefinition>> requirements;
63 private List<InputDefinition> inputs;
65 private List<GroupDefinition> groups;
67 private String derivedFromGenericType;
68 private String derivedFromGenericVersion;
69 private String toscaType;
70 protected List<AdditionalInformationDefinition> additionalInformation;
72 public String getDerivedFromGenericVersion() {
73 return derivedFromGenericVersion;
76 public void setDerivedFromGenericVersion(String derivedFromGenericVersion) {
77 this.derivedFromGenericVersion = derivedFromGenericVersion;
80 public String getDerivedFromGenericType() {
81 return derivedFromGenericType;
84 public void setDerivedFromGenericType(String derivedFromGenericType) {
85 this.derivedFromGenericType = derivedFromGenericType;
88 public Component(ComponentMetadataDefinition componentMetadataDefinition) {
89 this.componentMetadataDefinition = componentMetadataDefinition;
93 public ComponentMetadataDefinition getComponentMetadataDefinition() {
94 return componentMetadataDefinition;
97 public Map<String, ArtifactDefinition> getArtifacts() {
101 public void setArtifacts(Map<String, ArtifactDefinition> artifacts) {
102 this.artifacts = artifacts;
105 public Map<String, ArtifactDefinition> getToscaArtifacts() {
106 return toscaArtifacts;
109 public void setToscaArtifacts(Map<String, ArtifactDefinition> toscaArtifacts) {
110 this.toscaArtifacts = toscaArtifacts;
113 public String getUniqueId() {
114 return componentMetadataDefinition.getMetadataDataDefinition().getUniqueId();
117 public void setUniqueId(String uniqueId) {
118 componentMetadataDefinition.getMetadataDataDefinition().setUniqueId(uniqueId);
121 public void setName(String name) {
122 componentMetadataDefinition.getMetadataDataDefinition().setName(name);
125 public void setVersion(String version) {
126 componentMetadataDefinition.getMetadataDataDefinition().setVersion(version);
129 public void setHighestVersion(Boolean isHighestVersion) {
130 componentMetadataDefinition.getMetadataDataDefinition().setHighestVersion(isHighestVersion);
133 public void setCreationDate(Long creationDate) {
134 componentMetadataDefinition.getMetadataDataDefinition().setCreationDate(creationDate);
137 public void setLastUpdateDate(Long lastUpdateDate) {
138 componentMetadataDefinition.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
141 public void setDescription(String description) {
142 componentMetadataDefinition.getMetadataDataDefinition().setDescription(description);
145 public void setState(LifecycleStateEnum state) {
146 componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
149 public void setTags(List<String> tags) {
150 componentMetadataDefinition.getMetadataDataDefinition().setTags(tags);
153 public void setConformanceLevel(String conformanceLevel) {
154 componentMetadataDefinition.getMetadataDataDefinition().setConformanceLevel(conformanceLevel);
157 public void setIcon(String icon) {
158 componentMetadataDefinition.getMetadataDataDefinition().setIcon(icon);
161 public void setContactId(String contactId) {
162 componentMetadataDefinition.getMetadataDataDefinition().setContactId(contactId);
165 public String getCreatorUserId() {
166 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorUserId();
169 public void setCreatorUserId(String creatorUserId) {
170 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorUserId(creatorUserId);
173 public String getCreatorFullName() {
174 return this.componentMetadataDefinition.getMetadataDataDefinition().getCreatorFullName();
177 public void setCreatorFullName(String creatorFullName) {
178 this.componentMetadataDefinition.getMetadataDataDefinition().setCreatorFullName(creatorFullName);
181 public String getLastUpdaterUserId() {
182 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterUserId();
185 public void setLastUpdaterUserId(String lastUpdaterUserId) {
186 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterUserId(lastUpdaterUserId);
189 public String getLastUpdaterFullName() {
190 return this.componentMetadataDefinition.getMetadataDataDefinition().getLastUpdaterFullName();
193 public void setLastUpdaterFullName(String lastUpdaterFullName) {
194 this.componentMetadataDefinition.getMetadataDataDefinition().setLastUpdaterFullName(lastUpdaterFullName);
197 public String getName() {
198 return componentMetadataDefinition.getMetadataDataDefinition().getName();
201 public String getVersion() {
202 return componentMetadataDefinition.getMetadataDataDefinition().getVersion();
205 public Boolean isHighestVersion() {
206 return componentMetadataDefinition.getMetadataDataDefinition().isHighestVersion();
209 public Long getCreationDate() {
210 return componentMetadataDefinition.getMetadataDataDefinition().getCreationDate();
213 public Long getLastUpdateDate() {
214 return componentMetadataDefinition.getMetadataDataDefinition().getLastUpdateDate();
217 public String getDescription() {
218 return componentMetadataDefinition.getMetadataDataDefinition().getDescription();
221 public LifecycleStateEnum getLifecycleState() {
222 if (componentMetadataDefinition.getMetadataDataDefinition().getState() != null) {
223 return LifecycleStateEnum.valueOf(componentMetadataDefinition.getMetadataDataDefinition().getState());
229 public List<String> getTags() {
230 return componentMetadataDefinition.getMetadataDataDefinition().getTags();
233 public String getConformanceLevel() {
234 return componentMetadataDefinition.getMetadataDataDefinition().getConformanceLevel();
237 public String getIcon() {
238 return componentMetadataDefinition.getMetadataDataDefinition().getIcon();
241 public String getContactId() {
242 return componentMetadataDefinition.getMetadataDataDefinition().getContactId();
245 public List<InputDefinition> getInputs() {
249 public void setInputs(List<InputDefinition> inputs) {
250 this.inputs = inputs;
253 public void setLifecycleState(LifecycleStateEnum state) {
255 this.componentMetadataDefinition.getMetadataDataDefinition().setState(state.name());
259 public String getUUID() {
260 return componentMetadataDefinition.getMetadataDataDefinition().getUUID();
263 public void setUUID(String uUID) {
264 componentMetadataDefinition.getMetadataDataDefinition().setUUID(uUID);
267 public void setSystemName(String systemName) {
268 componentMetadataDefinition.getMetadataDataDefinition().setSystemName(systemName);
271 public String getSystemName() {
272 return componentMetadataDefinition.getMetadataDataDefinition().getSystemName();
275 public void setAllVersions(Map<String, String> allVersions) {
276 componentMetadataDefinition.getMetadataDataDefinition().setAllVersions(allVersions);
279 public Map<String, String> getAllVersions() {
280 return componentMetadataDefinition.getMetadataDataDefinition().getAllVersions();
283 public Map<String, ArtifactDefinition> getDeploymentArtifacts() {
284 return deploymentArtifacts;
287 public void setDeploymentArtifacts(Map<String, ArtifactDefinition> deploymentArtifacts) {
288 this.deploymentArtifacts = deploymentArtifacts;
291 public List<CategoryDefinition> getCategories() {
295 public void setCategories(List<CategoryDefinition> categories) {
296 this.categories = categories;
299 public String getNormalizedName() {
300 return componentMetadataDefinition.getMetadataDataDefinition().getNormalizedName();
303 public void setNormalizedName(String normalizedName) {
304 componentMetadataDefinition.getMetadataDataDefinition().setNormalizedName(normalizedName);
307 public ComponentTypeEnum getComponentType() {
308 return this.componentMetadataDefinition.getMetadataDataDefinition().getComponentType();
311 public void setComponentType(ComponentTypeEnum componentType) {
312 this.componentMetadataDefinition.getMetadataDataDefinition().setComponentType(componentType);
315 public Map<String, List<CapabilityDefinition>> getCapabilities() {
319 public void setCapabilities(Map<String, List<CapabilityDefinition>> capabilities) {
320 this.capabilities = capabilities;
323 public Map<String, List<RequirementDefinition>> getRequirements() {
327 public void setRequirements(Map<String, List<RequirementDefinition>> requirements) {
328 this.requirements = requirements;
331 public List<ComponentInstance> getComponentInstances() {
332 return componentInstances;
335 public void setComponentInstances(List<ComponentInstance> resourceInstances) {
336 this.componentInstances = resourceInstances;
339 public List<RequirementCapabilityRelDef> getComponentInstancesRelations() {
340 return componentInstancesRelations;
343 public void setComponentInstancesRelations(List<RequirementCapabilityRelDef> resourceInstancesRelations) {
344 this.componentInstancesRelations = resourceInstancesRelations;
347 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesProperties() {
348 return componentInstancesProperties;
351 public void setComponentInstancesProperties(
352 Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties) {
353 this.componentInstancesProperties = resourceInstancesProperties;
356 public Boolean getIsDeleted() {
357 return componentMetadataDefinition.getMetadataDataDefinition().isDeleted();
360 public void setIsDeleted(Boolean isDeleted) {
361 componentMetadataDefinition.getMetadataDataDefinition().setIsDeleted(isDeleted);
364 public String getProjectCode() {
365 return componentMetadataDefinition.getMetadataDataDefinition().getProjectCode();
368 public void setProjectCode(String projectCode) {
369 componentMetadataDefinition.getMetadataDataDefinition().setProjectCode(projectCode);
372 public String getCsarUUID() {
373 return componentMetadataDefinition.getMetadataDataDefinition().getCsarUUID();
376 public void setCsarUUID(String csarUUID) {
377 componentMetadataDefinition.getMetadataDataDefinition().setCsarUUID(csarUUID);
380 public String getCsarVersion() {
381 return componentMetadataDefinition.getMetadataDataDefinition().getCsarVersion();
384 public void setCsarVersion(String csarVersion) {
385 componentMetadataDefinition.getMetadataDataDefinition().setCsarVersion(csarVersion);
388 public String getImportedToscaChecksum() {
389 return componentMetadataDefinition.getMetadataDataDefinition().getImportedToscaChecksum();
392 public void setImportedToscaChecksum(String importedToscaChecksum) {
393 componentMetadataDefinition.getMetadataDataDefinition().setImportedToscaChecksum(importedToscaChecksum);
396 public String getInvariantUUID() {
397 return componentMetadataDefinition.getMetadataDataDefinition().getInvariantUUID();
400 public void setInvariantUUID(String invariantUUID) {
401 componentMetadataDefinition.getMetadataDataDefinition().setInvariantUUID(invariantUUID);
404 public List<GroupDefinition> getGroups() {
408 public void setGroups(List<GroupDefinition> groups) {
409 this.groups = groups;
413 public int hashCode() {
414 final int prime = 31;
416 result = prime * result + ((artifacts == null) ? 0 : artifacts.hashCode());
417 result = prime * result + ((categories == null) ? 0 : categories.hashCode());
418 result = prime * result + ((componentMetadataDefinition == null) ? 0 : componentMetadataDefinition.hashCode());
419 // result = prime * result + ((creatorUserId == null) ? 0 : creatorUserId.hashCode());
420 // result = prime * result + ((creatorFullName == null) ? 0 : creatorFullName.hashCode());
421 result = prime * result + ((deploymentArtifacts == null) ? 0 : deploymentArtifacts.hashCode());
422 // result = prime * result + ((lastUpdaterUserId == null) ? 0 : lastUpdaterUserId.hashCode());
423 // result = prime * result + ((lastUpdaterFullName == null) ? 0 : lastUpdaterFullName.hashCode());
424 result = prime * result + ((capabilities == null) ? 0 : capabilities.hashCode());
425 result = prime * result + ((requirements == null) ? 0 : requirements.hashCode());
426 result = prime * result + ((componentInstances == null) ? 0 : componentInstances.hashCode());
427 result = prime * result
428 + ((componentInstancesProperties == null) ? 0 : componentInstancesProperties.hashCode());
429 result = prime * result
430 + ((componentInstancesAttributes == null) ? 0 : componentInstancesAttributes.hashCode());
431 result = prime * result + ((componentInstancesInputs == null) ? 0 : componentInstancesInputs.hashCode());
432 result = prime * result + ((componentInstancesRelations == null) ? 0 : componentInstancesRelations.hashCode());
433 result = prime * result + ((groups == null) ? 0 : groups.hashCode());
434 result = prime * result + ((derivedFromGenericType == null) ? 0 : derivedFromGenericType.hashCode());
435 result = prime * result + ((derivedFromGenericVersion == null) ? 0 : derivedFromGenericVersion.hashCode());
440 public boolean equals(Object obj) {
445 if (getClass() != obj.getClass())
447 Component other = (Component) obj;
448 if (artifacts == null) {
449 if (other.artifacts != null)
451 } else if (!artifacts.equals(other.artifacts))
453 if (categories == null) {
454 if (other.categories != null)
456 } else if (!categories.equals(other.categories))
458 if (componentMetadataDefinition == null) {
459 if (other.componentMetadataDefinition != null)
461 } else if (!componentMetadataDefinition.equals(other.componentMetadataDefinition))
463 // if (creatorUserId == null) {
464 // if (other.creatorUserId != null)
466 // } else if (!creatorUserId.equals(other.creatorUserId))
468 // if (creatorFullName == null) {
469 // if (other.creatorFullName != null)
471 // } else if (!creatorFullName.equals(other.creatorFullName))
473 if (deploymentArtifacts == null) {
474 if (other.deploymentArtifacts != null)
476 } else if (!deploymentArtifacts.equals(other.deploymentArtifacts))
478 // if (lastUpdaterUserId == null) {
479 // if (other.lastUpdaterUserId != null)
481 // } else if (!lastUpdaterUserId.equals(other.lastUpdaterUserId))
483 // if (lastUpdaterFullName == null) {
484 // if (other.lastUpdaterFullName != null)
486 // } else if (!lastUpdaterFullName.equals(other.lastUpdaterFullName))
488 if (componentInstances == null) {
489 if (other.componentInstances != null)
491 } else if (!componentInstances.equals(other.componentInstances))
493 if (componentInstancesProperties == null) {
494 if (other.componentInstancesProperties != null)
496 } else if (!componentInstancesProperties.equals(other.componentInstancesProperties))
499 if (!Objects.equals(componentInstancesAttributes, other.componentInstancesAttributes)) {
502 if (!Objects.equals(componentInstancesInputs, other.componentInstancesInputs)) {
505 if (componentInstancesRelations == null) {
506 if (other.componentInstancesRelations != null)
508 } else if (!componentInstancesRelations.equals(other.componentInstancesRelations))
510 if (requirements == null) {
511 if (other.requirements != null)
513 } else if (!requirements.equals(other.requirements))
515 if (capabilities == null) {
516 if (other.capabilities != null)
518 } else if (!capabilities.equals(other.capabilities))
520 if (groups == null) {
521 if (other.groups != null)
523 } else if (!groups.equals(other.groups))
525 if (derivedFromGenericType == null) {
526 if (other.derivedFromGenericType != null)
528 } else if (!derivedFromGenericType.equals(other.derivedFromGenericType))
530 if (derivedFromGenericVersion == null) {
531 if (other.derivedFromGenericVersion != null)
533 } else if (!derivedFromGenericVersion.equals(other.derivedFromGenericVersion))
538 public void addCategory(String category, String subCategory) {
539 if (category != null || subCategory != null) {
540 if (categories == null) {
541 categories = new ArrayList<>();
543 CategoryDefinition selectedCategory = null;
544 for (CategoryDefinition categoryDef : categories) {
545 if (categoryDef.getName().equals(category)) {
546 selectedCategory = categoryDef;
549 if (selectedCategory == null) {
550 selectedCategory = new CategoryDefinition();
551 selectedCategory.setName(category);
552 categories.add(selectedCategory);
554 List<SubCategoryDefinition> subcategories = selectedCategory.getSubcategories();
555 if (subcategories == null) {
556 subcategories = new ArrayList<>();
557 selectedCategory.setSubcategories(subcategories);
559 SubCategoryDefinition selectedSubcategory = null;
560 for (SubCategoryDefinition subcategory : subcategories) {
561 if (subcategory.getName().equals(subCategory)) {
562 selectedSubcategory = subcategory;
565 if (selectedSubcategory == null) {
566 selectedSubcategory = new SubCategoryDefinition();
567 selectedSubcategory.setName(subCategory);
568 subcategories.add(selectedSubcategory);
573 public void addCategory(CategoryDefinition category) {
574 addCategory(category, null);
577 public void addCategory(CategoryDefinition category, SubCategoryDefinition subCategory) {
578 if (categories == null) {
579 categories = new ArrayList<>();
581 boolean foundCat = false;
582 for (CategoryDefinition cat : categories) {
583 if (cat.getName().equals(category.getName())) {
585 if (subCategory != null) {
586 List<SubCategoryDefinition> subcategories = cat.getSubcategories();
587 if (subcategories == null) {
588 subcategories = new ArrayList<>();
589 cat.setSubcategories(subcategories);
591 for (SubCategoryDefinition subcat : subcategories) {
592 boolean foundSub = false;
593 if (subcat.getName().equals(subCategory.getName())) {
596 if (foundSub == false) {
597 subcategories.add(subCategory);
604 if (foundCat == false) {
605 if (subCategory != null) {
606 category.addSubCategory(subCategory);
608 categories.add(category);
612 public Map<String, List<ComponentInstanceProperty>> getComponentInstancesAttributes() {
613 return componentInstancesAttributes;
616 public void setComponentInstancesAttributes(
617 Map<String, List<ComponentInstanceProperty>> componentInstancesAttributes) {
618 this.componentInstancesAttributes = componentInstancesAttributes;
621 public Map<String, List<ComponentInstanceInput>> getComponentInstancesInputs() {
622 return componentInstancesInputs;
625 public void setComponentInstancesInputs(Map<String, List<ComponentInstanceInput>> componentInstancesInputs) {
626 this.componentInstancesInputs = componentInstancesInputs;
629 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
630 // Implement where needed
633 public void setMetadataDefinition(ComponentMetadataDefinition metadataDefinition) {
634 this.componentMetadataDefinition = metadataDefinition;
637 public String fetchGenericTypeToscaNameFromConfig(){
638 // Implement where needed
639 return ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get(this.assetType());
642 public String assetType(){
643 // Implement where needed
644 return this.getComponentType().getValue();
647 public boolean shouldGenerateInputs(){
648 // Implement where needed
652 public boolean deriveFromGeneric(){
653 // Implement where needed
657 public void setDerivedFromGenericInfo(Resource genericType){
658 derivedFromGenericType = genericType.getToscaResourceName();
659 derivedFromGenericVersion = genericType.getVersion();
662 public String getToscaType() {
666 public void setToscaType(String toscaType) {
667 this.toscaType = toscaType;
669 public List<AdditionalInformationDefinition> getAdditionalInformation() {
670 return additionalInformation;
673 public void setAdditionalInformation(List<AdditionalInformationDefinition> additionalInformation) {
674 this.additionalInformation = additionalInformation;