2edb4fb8f2d8b5c29eb000fc687a52ad4dfe6d25
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / ConsolidationTypesConnectivity.java
1 package org.openecomp.sdc.translator.services.heattotosca;
2
3 import org.apache.commons.collections.CollectionUtils;
4
5 import java.util.EnumMap;
6 import java.util.Map;
7 import java.util.Set;
8 import java.util.stream.Collectors;
9 import java.util.stream.Stream;
10
11 public class ConsolidationTypesConnectivity {
12
13   private static Map<ConsolidationEntityType, Set<ConsolidationEntityType>>
14       entityToEntitiesWithoutRelationship = new EnumMap<>(ConsolidationEntityType.class);
15
16   static {
17     entityToEntitiesWithoutRelationship
18         .put(ConsolidationEntityType.COMPUTE, getIgnoredComputeRelationships());
19     entityToEntitiesWithoutRelationship
20         .put(ConsolidationEntityType.PORT,getIgnoredPortRelationships());
21     entityToEntitiesWithoutRelationship
22         .put(ConsolidationEntityType.VOLUME, getIgnoredVolumeRelationships());
23     entityToEntitiesWithoutRelationship
24         .put(ConsolidationEntityType.VFC_NESTED, getIgnoredVfcNestedRelationships());
25     entityToEntitiesWithoutRelationship
26         .put(ConsolidationEntityType.NESTED, getIgnoredNestedRelationships());
27   }
28
29   private ConsolidationTypesConnectivity() {
30   }
31
32   private static Set<ConsolidationEntityType> getIgnoredComputeRelationships(){
33     return Stream.of(ConsolidationEntityType.COMPUTE,
34         ConsolidationEntityType.VOLUME,
35         ConsolidationEntityType.PORT,
36         ConsolidationEntityType.NESTED,
37         ConsolidationEntityType.VFC_NESTED).collect(Collectors.toSet());
38   }
39
40   private static Set<ConsolidationEntityType> getIgnoredPortRelationships(){
41     return Stream.of(ConsolidationEntityType.COMPUTE,
42         ConsolidationEntityType.VOLUME,
43         ConsolidationEntityType.PORT,
44         ConsolidationEntityType.NESTED,
45         ConsolidationEntityType.VFC_NESTED).collect(Collectors.toSet());
46   }
47
48   private static Set<ConsolidationEntityType> getIgnoredVolumeRelationships(){
49     return Stream.of(ConsolidationEntityType.COMPUTE,
50         ConsolidationEntityType.VOLUME,
51         ConsolidationEntityType.PORT,
52         ConsolidationEntityType.NESTED,
53         ConsolidationEntityType.VFC_NESTED).collect(Collectors.toSet());
54   }
55
56   private static Set<ConsolidationEntityType> getIgnoredVfcNestedRelationships(){
57     return Stream.of(ConsolidationEntityType.COMPUTE,
58         ConsolidationEntityType.VOLUME,
59         ConsolidationEntityType.PORT,
60         ConsolidationEntityType.NESTED,
61         ConsolidationEntityType.VFC_NESTED).collect(Collectors.toSet());
62   }
63
64   private static Set<ConsolidationEntityType> getIgnoredNestedRelationships(){
65     return Stream.of(ConsolidationEntityType.COMPUTE,
66         ConsolidationEntityType.PORT,
67         ConsolidationEntityType.NESTED,
68         ConsolidationEntityType.VFC_NESTED).collect(Collectors.toSet());
69   }
70
71   public static boolean isDependsOnRelationshipValid(ConsolidationEntityType source,
72                                                      ConsolidationEntityType target) {
73     Set<ConsolidationEntityType> consolidationEntityTypes =
74         entityToEntitiesWithoutRelationship.get(source);
75     return CollectionUtils.isEmpty(consolidationEntityTypes) ||
76         !consolidationEntityTypes.contains(target);
77
78   }
79 }