Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / command / CommandParentData.java
1 package org.onap.vid.job.command;
2
3 import com.fasterxml.jackson.core.type.TypeReference;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.onap.vid.mso.model.ModelInfo;
6
7 import java.util.HashMap;
8 import java.util.Map;
9
10 public class CommandParentData {
11
12
13     public enum CommandDataKey{
14         SERVICE_MODEL_INFO,
15         SERVICE_INSTANCE_ID,
16         VNF_INSTANCE_ID,
17         VNF_MODEL_INFO,
18         VG_INSTANCE_ID,
19         ;
20     }
21
22     private static final String RESOURCE_INSTANCE_IDS = "resourceInstancesIds";
23     private static final String RESOURCE_MODEL_INFOS = "resourceModelInfos";
24
25     private final TypeReference<Map<CommandDataKey, String>> mapCommandKeyToString =
26             new TypeReference<Map<CommandDataKey, String>> () {};
27
28     private  final TypeReference<Map<CommandDataKey, ModelInfo>> mapCommandKeyToModelInfo =
29             new TypeReference<Map<CommandDataKey, ModelInfo>> () {};
30
31
32     private ObjectMapper objectMapper = new ObjectMapper();
33
34     private Map<CommandDataKey,ModelInfo> getModelInfosByCommandData(Map<String, Object> commandData) {
35         Object object = commandData.get(RESOURCE_MODEL_INFOS);
36         if (object != null) {
37             return objectMapper.convertValue(object, mapCommandKeyToModelInfo);
38         }
39         return null;
40     }
41
42     private Map<CommandDataKey,String> getInstanceIdsByCommandData(Map<String, Object> commandData) {
43         Object object = commandData.get(RESOURCE_INSTANCE_IDS);
44         if (object != null) {
45             return objectMapper.convertValue(object, mapCommandKeyToString);
46         }
47         return null;
48     }
49
50     public Map<String, Object> getParentData() {
51         Map<String, Object> data = new HashMap<>();
52         data.put(RESOURCE_INSTANCE_IDS, resourceInstancesIds);
53         data.put(RESOURCE_MODEL_INFOS, resourceModelInfos);
54         return data;
55     }
56     private Map<CommandDataKey, String> resourceInstancesIds = new HashMap<>();
57     private Map<CommandDataKey, ModelInfo> resourceModelInfos = new HashMap<>();
58
59     public void addModelInfo(CommandDataKey modelInfoKey, ModelInfo modelInfo) {
60         resourceModelInfos.put(modelInfoKey, modelInfo);
61     }
62
63     public void addInstanceId(CommandDataKey instanceIdKey, String instanceId) {
64          resourceInstancesIds.put(instanceIdKey, instanceId);
65     }
66     public ModelInfo getModelInfo(CommandDataKey modelInfoKey) {
67         return resourceModelInfos.get(modelInfoKey);
68     }
69
70     public String getInstanceId(CommandDataKey instanceIdKey) {
71         return resourceInstancesIds.get(instanceIdKey);
72     }
73
74     public CommandParentData initParentData(Map<String, Object> commandData) {
75         resourceModelInfos = getModelInfosByCommandData(commandData);
76         resourceInstancesIds = getInstanceIdsByCommandData(commandData);
77         return this;
78     }
79
80 }