1 package org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.builder;
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;
20 import java.util.ArrayList;
21 import java.util.List;
25 * Created by 10112215 on 2017/9/20.
27 public class NetworkTopologyRequestBodyBuilder implements AbstractBuilder<Map<String, String>, RequestBody> {
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;
39 java2jsonService = TransfromJava2StringFactory.getJava2jsonService();
40 } catch (Exception e) {
42 java2jsonService = null;
47 public RequestBody build(Map<String, String> input) throws Exception {
48 NetworkTopologyOperationInput sdncInput = getSdncInput(input);
49 RequestBody body = getRequestBody(sdncInput);
53 protected String getJsonInput(NetworkTopologyOperationInput sdncInput) throws Exception {
54 return java2jsonService.transformRpcDataObjectToString(URI_PATH, sdncInput);
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);
63 protected NetworkTopologyOperationInput getSdncInput(Map<String, String> inputs) {
64 NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder = new NetworkTopologyOperationInputBuilder();
66 loadSdncRequestHeader(inputs, networkTopologyOperationInputBuilder);
67 loadRequestInformation(networkTopologyOperationInputBuilder);
68 loadNetworkInputParameters(inputs, networkTopologyOperationInputBuilder);
70 return networkTopologyOperationInputBuilder.build();
73 private void loadNetworkInputParameters(Map<String, String> inputs, NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
74 NetworkRequestInputBuilder networkRequestInputBuilder = new NetworkRequestInputBuilder();
76 NetworkInputParametersBuilder networkInputParametersBuilder = new NetworkInputParametersBuilder();
78 List<Param> paramList = getParamList(inputs);
79 networkInputParametersBuilder.setParam(paramList);
81 networkRequestInputBuilder.setNetworkInputParameters(networkInputParametersBuilder.build());
83 networkTopologyOperationInputBuilder.setNetworkRequestInput(networkRequestInputBuilder.build());
86 private void loadRequestInformation(NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
87 RequestInformationBuilder requestInformationBuilder = new RequestInformationBuilder();
89 requestInformationBuilder.setRequestId(SVC_REQUEST_ID);
90 requestInformationBuilder.setRequestAction(REQUEST_ACTION);
92 networkTopologyOperationInputBuilder.setRequestInformation(requestInformationBuilder.build());
95 private void loadSdncRequestHeader(Map<String, String> inputs, NetworkTopologyOperationInputBuilder networkTopologyOperationInputBuilder) {
96 SdncRequestHeaderBuilder sdncRequestHeaderBuilder = new SdncRequestHeaderBuilder();
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;
108 sdncRequestHeaderBuilder.setSvcAction(svcAction);
110 networkTopologyOperationInputBuilder.setSdncRequestHeader(sdncRequestHeaderBuilder.build());
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());