7b258d651f268865f0f18109d658debd16a8f8fd
[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 com.google.common.collect.ImmutableSet;
4 import com.google.common.collect.ImmutableSetMultimap;
5 import com.google.common.collect.Multimap;
6
7 public class ConsolidationTypesConnectivity {
8
9     private static Multimap<ConsolidationEntityType, ConsolidationEntityType> entityToEntitiesWithoutRelationship;
10     private static ImmutableSet<ConsolidationEntityType> consolidationEntityRelationNodes = ImmutableSet.of(
11             ConsolidationEntityType.COMPUTE, ConsolidationEntityType.VOLUME,
12             ConsolidationEntityType.PORT, ConsolidationEntityType.NESTED,
13             ConsolidationEntityType.VFC_NESTED);
14
15     static {
16         entityToEntitiesWithoutRelationship =
17                 ImmutableSetMultimap.<ConsolidationEntityType, ConsolidationEntityType>builder()
18                         .putAll(ConsolidationEntityType.COMPUTE, consolidationEntityRelationNodes)
19                         .putAll(ConsolidationEntityType.PORT, consolidationEntityRelationNodes)
20                         .putAll(ConsolidationEntityType.VOLUME, consolidationEntityRelationNodes)
21                         .putAll(ConsolidationEntityType.VFC_NESTED, consolidationEntityRelationNodes)
22                         .putAll(ConsolidationEntityType.NESTED, consolidationEntityRelationNodes)
23                         .build();
24     }
25
26     private ConsolidationTypesConnectivity() {
27     }
28
29     static boolean isDependsOnRelationshipValid(ConsolidationEntityType source, ConsolidationEntityType target) {
30         return !eitherSourceOrTargetIsNested(source, target)
31                        && (!entityToEntitiesWithoutRelationship.containsKey(source)
32                                    || !entityToEntitiesWithoutRelationship.containsEntry(source, target));
33     }
34
35     private static boolean eitherSourceOrTargetIsNested(ConsolidationEntityType source,
36                                                                ConsolidationEntityType target) {
37         return ConsolidationEntityType.isEntityTypeNested(source) || ConsolidationEntityType.isEntityTypeNested(target);
38     }
39 }