Added @Override annotation to method signature
[so.git] / bpmn / MSOInfrastructureBPMN / src / main / java / org / openecomp / mso / bpmn / infrastructure / workflow / serviceTask / client / builder / NetworkTopologyRequestBodyBuilder.java
1 package org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.builder;
2
3 import okhttp3.RequestBody;
4 import org.apache.commons.lang3.StringUtils;
5 import org.json.JSONObject;
6 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInput;
7 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInputBuilder;
8 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.request.input.NetworkRequestInputBuilder;
9 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.request.input.network.request.input.NetworkInputParametersBuilder;
10 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.param.Param;
11 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.param.ParamBuilder;
12 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.param.ParamKey;
13 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
14 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
15 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader;
16 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
17 import org.openecomp.mso.yangDecoder.transform.api.ITransformJava2StringService;
18 import org.openecomp.mso.yangDecoder.transform.impl.TransfromJava2StringFactory;
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.Map;
23
24 /**
25  * Created by 10112215 on 2017/9/20.
26  */
27 public class NetworkTopologyRequestBodyBuilder implements AbstractBuilder<Map<String, String>, RequestBody> {
28
29     public static final String URI_PATH = "GENERIC-RESOURCE-API:network-topology-operation";
30     public static final SdncRequestHeader.SvcAction SVC_DEFAULT_ACTION = SdncRequestHeader.SvcAction.Create;
31     public static final String SVC_REQUEST_ID = "MSO";
32     public static final String SDC_ACTION = "SDC_ACTION";
33     public static final RequestInformation.RequestAction REQUEST_ACTION = RequestInformation.RequestAction.CreateNetworkInstance;
34     protected static ITransformJava2StringService java2jsonService;
35
36     static
37     {
38         try {
39             java2jsonService = TransfromJava2StringFactory.getJava2jsonService();
40         } catch (Exception e) {
41             e.printStackTrace();
42             java2jsonService = null;
43         }
44     }
45
46     @Override
47     public RequestBody build(Map<String, String> input) throws Exception {
48         NetworkTopologyOperationInput sdncInput = getSdncInput(input);
49         RequestBody body = getRequestBody(sdncInput);
50         return body;
51     }
52
53     protected String getJsonInput(NetworkTopologyOperationInput sdncInput) throws Exception {
54         return java2jsonService.transformRpcDataObjectToString(URI_PATH, sdncInput);
55     }
56
57     private RequestBody getRequestBody(NetworkTopologyOperationInput sdncInput) throws Exception {
58         String jsonString = getJsonInput(sdncInput);
59         String json = (new JSONObject(jsonString)).toString();
60         return RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),json);
61     }
62
63     protected NetworkTopologyOperationInput getSdncInput(Map<String, String> inputs) {
64         NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder = new NetworkTopologyOperationInputBuilder();
65         {
66             loadSdncRequestHeader(inputs, networkTopologyOperationInputBuilder);
67             loadRequestInformation(networkTopologyOperationInputBuilder);
68             loadNetworkInputParameters(inputs, networkTopologyOperationInputBuilder);
69         }
70         return networkTopologyOperationInputBuilder.build();
71     }
72
73     private void loadNetworkInputParameters(Map<String, String> inputs, NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
74         NetworkRequestInputBuilder networkRequestInputBuilder = new NetworkRequestInputBuilder();
75         {
76             NetworkInputParametersBuilder networkInputParametersBuilder = new NetworkInputParametersBuilder();
77             {
78                 List<Param> paramList = getParamList(inputs);
79                 networkInputParametersBuilder.setParam(paramList);
80             }
81             networkRequestInputBuilder.setNetworkInputParameters(networkInputParametersBuilder.build());
82         }
83         networkTopologyOperationInputBuilder.setNetworkRequestInput(networkRequestInputBuilder.build());
84     }
85
86     private void loadRequestInformation(NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
87         RequestInformationBuilder requestInformationBuilder = new RequestInformationBuilder();
88         {
89             requestInformationBuilder.setRequestId(SVC_REQUEST_ID);
90             requestInformationBuilder.setRequestAction(REQUEST_ACTION);
91         }
92         networkTopologyOperationInputBuilder.setRequestInformation(requestInformationBuilder.build());
93     }
94
95     private void loadSdncRequestHeader(Map<String, String> inputs, NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
96         SdncRequestHeaderBuilder sdncRequestHeaderBuilder = new SdncRequestHeaderBuilder();
97         {
98             sdncRequestHeaderBuilder.setSvcRequestId(SVC_REQUEST_ID);
99             SdncRequestHeader.SvcAction svcAction = SVC_DEFAULT_ACTION;
100             String action = inputs.get(SDC_ACTION);
101             if (!StringUtils.isBlank(action)) {
102                 if (action.toLowerCase().contains("delete")) {
103                     svcAction = SdncRequestHeader.SvcAction.Delete;
104                 } else if (action.toLowerCase().contains("create")) {
105                     svcAction = SdncRequestHeader.SvcAction.Create;
106                 }
107             }
108             sdncRequestHeaderBuilder.setSvcAction(svcAction);
109         }
110         networkTopologyOperationInputBuilder.setSdncRequestHeader(sdncRequestHeaderBuilder.build());
111     }
112
113     private List<Param> getParamList(Map<String, String> inputs) {
114         List<Param> paramList = new ArrayList<>();
115         if (inputs != null && !inputs.isEmpty()) {
116             inputs.keySet().forEach(key -> {
117                 ParamBuilder paramBuilder = new ParamBuilder();
118                 paramBuilder.setName(key);
119                 paramBuilder.setValue(inputs.get(key));
120                 paramBuilder.setKey(new ParamKey(key));
121                 paramList.add(paramBuilder.build());
122             });
123         }
124         return paramList;
125     }
126 }