[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / ConsolidationEntityType.java
1 package org.openecomp.sdc.translator.services.heattotosca;
2
3 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
4 import org.openecomp.sdc.heat.datatypes.model.Resource;
5 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
6
7 import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isComputeResource;
8 import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isPortResource;
9 import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isVolumeResource;
10
11 /**
12  * The enum Entity type.
13  */
14 public enum ConsolidationEntityType {
15   COMPUTE,
16   PORT,
17   VOLUME,
18   NESTED,
19   //Simple nested VFC (nested file with one compute) or a complex VFC (nested ST with more than
20   //one compute)
21   VFC_NESTED,
22   SUB_PORT,
23   OTHER;
24
25   private ConsolidationEntityType sourceEntityType;
26   private ConsolidationEntityType targetEntityType;
27
28   public ConsolidationEntityType getSourceEntityType() {
29     return sourceEntityType;
30   }
31
32   public ConsolidationEntityType getTargetEntityType() {
33     return targetEntityType;
34   }
35
36   /**
37    * Sets entity type.
38    *
39    * @param heatOrchestrationTemplate the heat orchestration template
40    * @param sourceResource          the source resource
41    * @param targetResource          the target resource
42    */
43   public void setEntityType(HeatOrchestrationTemplate heatOrchestrationTemplate,
44                             Resource sourceResource,
45                             Resource targetResource,
46                             TranslationContext context) {
47     targetEntityType =
48         getEntityType(heatOrchestrationTemplate, targetResource, context);
49     sourceEntityType =
50         getEntityType(heatOrchestrationTemplate, sourceResource, context);
51   }
52
53   private ConsolidationEntityType getEntityType(HeatOrchestrationTemplate heatOrchestrationTemplate,
54                                                 Resource resource, TranslationContext context) {
55     if (isComputeResource(resource)) {
56       return ConsolidationEntityType.COMPUTE;
57     } else if (isPortResource(resource)) {
58       return ConsolidationEntityType.PORT;
59     } else if (isVolumeResource(resource)) {
60       return ConsolidationEntityType.VOLUME;
61     } else if (HeatToToscaUtil.isNestedResource(resource)) {
62       if (HeatToToscaUtil.isNestedVfcResource(resource, context)) {
63         return ConsolidationEntityType.VFC_NESTED;
64       } else {
65         return ConsolidationEntityType.NESTED;
66       }
67     } else {
68       return ConsolidationEntityType.OTHER;
69     }
70   }
71 }