Unit Tests
[sdc.git] / openecomp-be / tools / zusammen-tools / src / main / java / org / openecomp / core / tools / store / VspGeneralLoader.java
1 package org.openecomp.core.tools.store;
2
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import com.amdocs.zusammen.datatypes.item.Info;
6 import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext;
7 import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
8
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12 import java.util.Objects;
13 import java.util.Optional;
14
15 public class VspGeneralLoader {
16
17   public static final String NAME = "name";
18   public static final String GENERAL = "General";
19
20   private static CassandraElementRepository cassandraElementRepository =
21           new CassandraElementRepository();
22
23   public static Map<String, ElementEntity> load(SessionContext context,
24                                                 Map<String, List<String>> vspItemVersionsMap,
25                                                 Map<String, List<String>> vspItemChangeRefssMap) {
26     Map<String, ElementEntity> elementEntityMap = new HashMap<>();
27     System.setProperty("cassandra.dox.keystore", "zusammen_dox");
28
29     Id entityId;
30     Id itemId;
31     Id changeRefId;
32     for (Map.Entry<String, List<String>> entry : vspItemVersionsMap.entrySet()) {
33
34       for (String version : entry.getValue()) {
35
36
37         itemId = new Id(entry.getKey());
38         changeRefId = new Id(version);
39         entityId = getEntityIdByInfoNameValue(context, itemId, changeRefId, null, null, NAME,
40                 GENERAL);
41         if (entityId != null) {
42           Optional<ElementEntity> result =
43                   cassandraElementRepository.get(context, new ElementEntityContext(
44                                   context.getUser().getUserName(),
45                                   itemId,
46                                   changeRefId),
47                           new ElementEntity(entityId));
48           if (result.isPresent()) {
49             elementEntityMap.put(buildKey(context, entry, version), result.get());
50           }
51         }
52       }
53     }
54
55
56     for (Map.Entry<String, List<String>> entry : vspItemChangeRefssMap.entrySet()) {
57
58       for (String revisionId : entry.getValue()) {
59
60
61         itemId = new Id(entry.getKey());
62
63         entityId = getEntityIdByInfoNameValue(context, itemId, null, revisionId,null, NAME,
64                 GENERAL);
65         if (entityId != null) {
66           ElementEntityContext elementContext = new ElementEntityContext(
67                   context.getUser().getUserName(),
68                   itemId,
69                   null);
70           elementContext.setRevisionId(new Id(revisionId));
71           Optional<ElementEntity> result =
72                   cassandraElementRepository.get(context, elementContext,
73                           new ElementEntity(entityId));
74           if (result.isPresent()) {
75             elementEntityMap.put(buildKey(context, entry, revisionId), result.get());
76           }
77         }
78       }
79     }
80
81
82     return elementEntityMap;
83   }
84
85   public static String buildKey(SessionContext context, Map.Entry<String, List<String>> entry, String version) {
86     return String.format("%s_%s_%s", context.getUser().getUserName(), entry.getKey(), version);
87   }
88
89   private static Id getEntityIdByInfoNameValue(SessionContext context,
90                                                Id itemId,
91                                                Id versionId,
92                                                String revisionId,
93                                                Id elementId,
94                                                String name,
95                                                String value) {
96
97
98     ElementEntityContext elementContext = new ElementEntityContext(
99             context.getUser().getUserName(),
100             itemId,
101             versionId);
102     if (revisionId != null) {
103       elementContext.setRevisionId(new Id(revisionId));
104     }
105     Optional<ElementEntity> result =
106             cassandraElementRepository.get(context, elementContext,
107                     new ElementEntity(Id.ZERO));
108     if (result.isPresent()) {
109       ElementEntity elementEntity = result.get();
110       return elementEntity.getSubElementIds().stream().filter(subelementId -> {
111         ElementEntityContext subElementContext = new ElementEntityContext(
112                 context.getUser().getUserName(),
113                 itemId,
114                 versionId);
115         if(revisionId!= null){
116           subElementContext.setRevisionId(new Id(revisionId));
117         }
118         Optional<ElementEntity> subElementEntityOptional =
119                 cassandraElementRepository.get(context, subElementContext,
120                         new ElementEntity(subelementId));
121         if (subElementEntityOptional.isPresent()) {
122           Info info = subElementEntityOptional.get().getInfo();
123           if (isValid(name, info)) {
124             return false;
125           }
126           if (NAME.equals(name)) {
127             if (value.equals(info.getName())) {
128               return true;
129             }
130           }
131           if (value.equals(info.getProperty(name))) {
132             return true;
133           }
134         }
135         return false;
136
137       }).findFirst().orElse(null);
138     }
139     return null;
140
141
142   }
143
144   private static boolean isValid(String name, Info info) {
145     return Objects.isNull(info)|| Objects.isNull(info.getProperty(name));
146   }
147
148
149 }