Removed MsoLogger class
[so.git] / adapters / mso-sdnc-adapter / src / main / java / org / onap / so / adapters / sdnc / impl / Utils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.adapters.sdnc.impl;
24
25
26 import java.io.StringWriter;
27
28 import javax.xml.XMLConstants;
29 import javax.xml.parsers.DocumentBuilder;
30 import javax.xml.parsers.DocumentBuilderFactory;
31 import javax.xml.transform.Transformer;
32 import javax.xml.transform.TransformerFactory;
33 import javax.xml.transform.dom.DOMSource;
34 import javax.xml.transform.stream.StreamResult;
35
36 import org.onap.so.logger.ErrorCode;
37 import org.onap.so.logger.MessageEnum;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40 import org.w3c.dom.Document;
41 import org.w3c.dom.Element;
42 import org.w3c.dom.Node;
43 import org.w3c.dom.NodeList;
44 public class Utils {
45
46         private static Logger logger = LoggerFactory.getLogger(Utils.class);
47
48         private Utils() {
49         }
50
51         public static String genSdncReq(Document reqDoc, RequestTunables rt) {
52                 try {
53
54                         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
55                         DocumentBuilder db = dbf.newDocumentBuilder();
56
57                         //NewDoc for output
58                         //Root
59                         Document newdoc = db.newDocument();
60                         Element root = newdoc.createElementNS(rt.getNamespace(), "input");
61                         newdoc.appendChild(root);
62
63                         //Header
64                         Element hdr = newdoc.createElement(rt.getHeaderName());
65                         root.appendChild(hdr);
66
67                         String elemData = rt.getReqId();
68                         Element hdrChild;
69                         if (elemData != null && elemData.length() > 0)
70                         {
71                                 hdrChild = newdoc.createElement("svc-request-id");
72                                 hdrChild.appendChild(newdoc.createTextNode(elemData));
73                                 hdr.appendChild(hdrChild);
74                         }
75
76                         elemData = rt.getAction();
77                         if (elemData != null && elemData.length() > 0)
78                         {
79                                 hdrChild = newdoc.createElement("svc-action");
80                                 hdrChild.appendChild(newdoc.createTextNode(elemData));
81                                 hdr.appendChild(hdrChild);
82                         }
83
84                         elemData = rt.getSdncaNotificationUrl();
85                         if (elemData != null && elemData.length() > 0)
86                         {
87                                 hdrChild = newdoc.createElement("svc-notification-url");
88                                 hdrChild.appendChild(newdoc.createTextNode(elemData));
89                                 hdr.appendChild(hdrChild);
90                         }
91
92                         //RequestData
93                         NodeList nodes = reqDoc.getDocumentElement().getChildNodes();
94                         for (int i = 0; i < nodes.getLength(); i++) {
95                                 Node n = nodes.item(i);
96                                 Node newNode = newdoc.importNode(n, true);
97                                 root.appendChild(newNode);
98                         }
99
100                         String s = domToStr(newdoc);
101                         logger.debug("Formatted SdncReq:\n",  s);
102                         return s;
103
104                 } catch (Exception e) {
105                         logger.error("{} {} {} {}", MessageEnum.RA_ERROR_CREATE_SDNC_REQUEST.toString(), "SDNC",
106                                 ErrorCode.BusinessProcesssError.getValue(), "Exception in genSdncReq", e);
107                 }
108                 return null;
109         }
110         
111         public static String genSdncPutReq(Document reqDoc, RequestTunables rt) {
112                 try {
113
114                         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
115                         DocumentBuilder db = dbf.newDocumentBuilder();
116
117                         //NewDoc for output
118                         //Root
119                         Document newdoc = db.newDocument();
120                         
121                         //RequestData
122                         NodeList nodes = reqDoc.getDocumentElement().getChildNodes();
123                         
124                         Element root = newdoc.createElementNS(nodes.item(0).getNamespaceURI(), nodes.item(0).getNodeName());
125                         newdoc.appendChild(root);
126
127                         NodeList childNodes = nodes.item(0).getChildNodes();
128                         for (int i = 0; i < childNodes.getLength(); i++) {                              
129                                         Node n = childNodes.item(i);
130                                         Node newNode = newdoc.importNode(n, true);
131                                         root.appendChild(newNode);                              
132                         }
133
134                         String s = domToStr(newdoc);
135                         logger.debug("Formatted SdncPutReq:\n {}", s);
136                         return s;
137
138                 } catch (Exception e) {
139                         logger.error("{} {} {} {}", MessageEnum.RA_ERROR_CREATE_SDNC_REQUEST.toString(), "SDNC",
140                                 ErrorCode.DataError.getValue(), "Exception in genSdncPutReq", e);
141                 }
142                 return null;
143         }
144
145         public static String genMsoFailResp(SDNCResponse resp) {
146                 try {
147
148                         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
149                         DocumentBuilder db = dbf.newDocumentBuilder();
150
151                         //NewDoc for output
152                         //Root
153                         Document newdoc = db.newDocument();
154                         Element root = newdoc.createElement("output");
155                         newdoc.appendChild(root);
156
157                         Element elem1 = newdoc.createElement("svc-request-id");
158                         elem1.appendChild(newdoc.createTextNode(resp.getReqId()));
159                         root.appendChild(elem1);
160
161                         Element elem2 = newdoc.createElement("response-code");
162                         elem2.appendChild(newdoc.createTextNode(String.valueOf(resp.getRespCode())));
163                         root.appendChild(elem2);
164
165                         Element elem3 = newdoc.createElement("response-message");
166                         elem3.appendChild(newdoc.createTextNode(String.valueOf(resp.getRespMsg())));
167                         root.appendChild(elem3);
168
169                         String s = domToStr(newdoc);
170                         logger.debug("Formatted SdncReq: {}", s);
171                         return s;
172
173                 } catch (Exception e) {
174                         logger.error("{} {} {} {}", MessageEnum.RA_ERROR_CREATE_SDNC_RESPONSE.toString(), "SDNC",
175                                 ErrorCode.DataError.getValue(), "Exception in genMsoFailResp", e);
176                 }
177                 return null;
178         }
179
180
181         public static String domToStr(Document doc)
182         {
183                 if (doc != null)
184                 {
185                         try {
186                                 DOMSource ds = new DOMSource(doc);
187                                 StringWriter sw = new StringWriter();
188                                 StreamResult sr = new StreamResult(sw);
189                                 TransformerFactory tf = TransformerFactory.newInstance();
190                                 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
191                                 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
192                                 Transformer t = tf.newTransformer();
193                                 //t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");//<?xml version="1.0" encoding="UTF-8"?>
194                                 t.transform(ds, sr);
195                                 String s = sw.toString();
196                                 
197                                 // This is an awful fix for now but we don't want that xmlns="" to be generated
198                                 s = s.replaceAll("xmlns=\"\"", "");
199                                 return s;
200                         } catch (Exception e) {
201                                 logger.error("{} {} {}", MessageEnum.RA_ERROR_CONVERT_XML2STR.toString(), ErrorCode.DataError
202                                                 .getValue(), "Exception - domToStr", e);
203                         }
204                 }
205                 return null;
206         }
207 }