Fix: Update Sonar needed parameters
[oam/tr069-adapter.git] / acs / cpe / src / main / java / org / commscope / tr069adapter / acs / cpe / rpc / Inform.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 package org.commscope.tr069adapter.acs.cpe.rpc;\r
20 \r
21 import java.util.HashMap;\r
22 import java.util.Iterator;\r
23 import java.util.LinkedHashSet;\r
24 import java.util.Map;\r
25 import java.util.Map.Entry;\r
26 import java.util.Set;\r
27 \r
28 import javax.xml.soap.Name;\r
29 import javax.xml.soap.SOAPBodyElement;\r
30 import javax.xml.soap.SOAPElement;\r
31 import javax.xml.soap.SOAPException;\r
32 import javax.xml.soap.SOAPFactory;\r
33 \r
34 import org.commscope.tr069adapter.acs.cpe.TR069RPC;\r
35 \r
36 public class Inform extends TR069RPC {\r
37 \r
38   private static final long serialVersionUID = 929353181551497549L;\r
39 \r
40   public class Event implements Entry<String, String> {\r
41 \r
42     private String eventCode;\r
43     private String cmdKey;\r
44 \r
45     public Event(String event, String cmdKey) {\r
46       this.eventCode = event;\r
47       this.cmdKey = cmdKey;\r
48     }\r
49 \r
50     public String getKey() {\r
51       return eventCode;\r
52     }\r
53 \r
54     public String getValue() {\r
55       return cmdKey;\r
56     }\r
57 \r
58     public String setValue(String value) {\r
59       cmdKey = value;\r
60       return cmdKey;\r
61     }\r
62   }\r
63 \r
64   protected void createBody(SOAPBodyElement body, SOAPFactory spf) throws SOAPException {\r
65     throw new UnsupportedOperationException();\r
66   }\r
67 \r
68   @SuppressWarnings("rawtypes")\r
69   protected void parseBody(SOAPBodyElement body, SOAPFactory spf) throws SOAPException {\r
70     SOAPElement deviceid = getRequestChildElement(spf, body, "DeviceId");\r
71     defns = deviceid.getNamespaceURI();\r
72 \r
73     oui = getRequestElement(spf, deviceid, "OUI");\r
74     sn = getRequestElement(spf, deviceid, "SerialNumber");\r
75     manufacturer = getRequestElement(spf, deviceid, "Manufacturer");\r
76     productClass = getRequestElement(spf, deviceid, "ProductClass");\r
77     if (productClass == null) {\r
78       productClass = "";\r
79     }\r
80     maxEnvelopes = Integer.parseInt(getRequestElement(spf, body, "MaxEnvelopes"));\r
81     retryCount = Integer.parseInt(getRequestElement(spf, body, "RetryCount"));\r
82     currentTime = getRequestElement(spf, body, "CurrentTime");\r
83 \r
84     Iterator<SOAPElement> pi = getRequestChildElement(spf, body, "ParameterList")\r
85         .getChildElements(spf.createName("ParameterValueStruct"));\r
86     Name nameKey = spf.createName("Name");\r
87     Name nameValue = spf.createName("Value");\r
88     params = new HashMap<>();\r
89     while (pi.hasNext()) {\r
90       SOAPElement param = pi.next();\r
91       String key = getRequestElement(param, nameKey);\r
92       if (root == null && !key.startsWith(".")) {\r
93         if (key.startsWith("Device.")) {\r
94           root = "Device";\r
95         } else {\r
96           root = "InternetGatewayDevice";\r
97         }\r
98       }\r
99       String value = "";\r
100       try {\r
101         value = getRequestElement(param, nameValue);\r
102         value = setEmptyValueIfNull(value);\r
103       } catch (Exception e) {\r
104         logger.error("Exception while Inform parseBody. {}", e.toString());\r
105       }\r
106       params.put(key, value);\r
107     }\r
108 \r
109     if (root == null) {\r
110       throw new SOAPException("Invalid root. Must be InternetGatewayDevice or Device");\r
111     }\r
112 \r
113     pi = getRequestChildElement(spf, body, "Event").getChildElements(spf.createName("EventStruct"));\r
114     Name eventCode = spf.createName("EventCode");\r
115     Name commandKey = spf.createName(COMMAND_KEY);\r
116     events = new LinkedHashSet<>();\r
117     while (pi.hasNext()) {\r
118       SOAPElement param = pi.next();\r
119       String event = getRequestElement(param, eventCode);\r
120       String cmdKey = getRequestElement(param, commandKey);\r
121       cmdKey = setEmptyValueIfNull(cmdKey);\r
122       events.add(new Event(event, cmdKey));\r
123     }\r
124 \r
125   }\r
126 \r
127   private String setEmptyValueIfNull(String value) {\r
128     if (value == null)\r
129       value = "";\r
130 \r
131     return value;\r
132   }\r
133 \r
134   public String getSoftwareVersion() {\r
135     String v = params.get(root + ".DeviceInfo.SoftwareVersion");\r
136     if (v != null) {\r
137       v = v.replace('-', '.');\r
138       v = v.replace(',', ' ');\r
139     }\r
140     return v;\r
141   }\r
142 \r
143   public String getHardwareVersion() {\r
144     return params.get(root + ".DeviceInfo.HardwareVersion");\r
145   }\r
146 \r
147   public String getConfigVersion() {\r
148     return params.get(root + ".DeviceInfo.VendorConfigFile.1.Version");\r
149   }\r
150 \r
151   public String getURL() {\r
152     String url = params.get(root + ".ManagementServer.ConnectionRequestURL");\r
153     if (url != null) {\r
154       return url;\r
155     }\r
156     url = params.get(root + ".ManagementServer.UDPConnectionRequestAddress");\r
157     if (url != null) {\r
158       url = (url.indexOf(':') == -1) ? "udp://" + url + ":80" : "udp://" + url;\r
159     }\r
160     return url;\r
161   }\r
162 \r
163   public String getConreqUser() {\r
164     return params.get(root + ".ManagementServer.ConnectionRequestUsername");\r
165   }\r
166 \r
167   public String getConreqPass() {\r
168     return params.get(root + ".ManagementServer.ConnectionRequestPassword");\r
169   }\r
170 \r
171   public String getProvisiongCode() {\r
172     return params.get(root + ".DeviceInfo.ProvisioningCode");\r
173   }\r
174 \r
175   public void setProvisiongCode(String code) {\r
176     params.put(root + ".DeviceInfo.ProvisioningCode", code);\r
177   }\r
178 \r
179   public String getRoot() {\r
180     return root;\r
181   }\r
182 \r
183   public boolean isEvent(String event) {\r
184     for (Entry<String, String> e : events) {\r
185       if (e.getKey().equals(event)) {\r
186         return true;\r
187       }\r
188     }\r
189     return false;\r
190   }\r
191 \r
192   @Override\r
193   public String toString() {\r
194     StringBuilder s = new StringBuilder(1024);\r
195     s.append("Inform:\n");\r
196     println(s, "\toui: ", oui);\r
197     println(s, "\tsn: ", sn);\r
198     println(s, "\tManufacturer: ", manufacturer);\r
199 \r
200     s.append("\tEvents:\n");\r
201     for (Entry<String, String> ev : events) {\r
202       println(s, "\t\t", ev.getKey(), ev.getValue());\r
203     }\r
204 \r
205     s.append("\tParams:\n");\r
206     for (Entry<String, String> k : params.entrySet()) {\r
207       println(s, "\t\t", k.getKey(), k.getValue());\r
208     }\r
209     return s.toString();\r
210   }\r
211 \r
212   private String oui;\r
213   private String sn;\r
214   private String productClass;\r
215   private String manufacturer;\r
216   private int retryCount;\r
217   private String currentTime;\r
218   private Map<String, String> params;\r
219   private transient Set<Entry<String, String>> events;\r
220   private transient Set<Entry<String, String>> response;\r
221   private int maxEnvelopes;\r
222   private String defns;\r
223   private String root = null;\r
224   public static final String EVENT_BOOT_STRAP = "0 BOOTSTRAP";\r
225   public static final String EVENT_BOOT = "1 BOOT";\r
226   public static final String EVENT_PERIODIC = "2 PERIODIC";\r
227   public static final String EVENT_SCHEDULED = "3 SCHEDULED";\r
228   public static final String EVENT_VALUE_CHANGE = "4 VALUE CHANGE";\r
229   public static final String EVENT_KICKED = "5 KICKED";\r
230   public static final String EVENT_CONNECTION_REQUEST = "6 CONNECTION REQUEST";\r
231   public static final String EVENT_TRANSFER_COMPLETE = "7 TRANSFER COMPLETE";\r
232 \r
233   public String getOui() {\r
234     return oui;\r
235   }\r
236 \r
237   public void setOui(String oui) {\r
238     this.oui = oui;\r
239   }\r
240 \r
241   public String getSn() {\r
242     return sn;\r
243   }\r
244 \r
245   public void setSn(String sn) {\r
246     this.sn = sn;\r
247   }\r
248 \r
249   public String getProductClass() {\r
250     return productClass;\r
251   }\r
252 \r
253   public void setProductClass(String productClass) {\r
254     this.productClass = productClass;\r
255   }\r
256 \r
257   public String getManufacturer() {\r
258     return manufacturer;\r
259   }\r
260 \r
261   public void setManufacturer(String manufacturer) {\r
262     this.manufacturer = manufacturer;\r
263   }\r
264 \r
265   public int getRetryCount() {\r
266     return retryCount;\r
267   }\r
268 \r
269   public void setRetryCount(int retryCount) {\r
270     this.retryCount = retryCount;\r
271   }\r
272 \r
273   public String getCurrentTime() {\r
274     return currentTime;\r
275   }\r
276 \r
277   public void setCurrentTime(String currentTime) {\r
278     this.currentTime = currentTime;\r
279   }\r
280 \r
281   public Map<String, String> getParams() {\r
282     return params;\r
283   }\r
284 \r
285   public void setParams(Map<String, String> params) {\r
286     this.params = params;\r
287   }\r
288 \r
289   public Set<Entry<String, String>> getResponse() {\r
290     return response;\r
291   }\r
292 \r
293   public void setResponse(Set<Entry<String, String>> response) {\r
294     this.response = response;\r
295   }\r
296 \r
297   public int getMaxEnvelopes() {\r
298     return maxEnvelopes;\r
299   }\r
300 \r
301   public void setMaxEnvelopes(int maxEnvelopes) {\r
302     this.maxEnvelopes = maxEnvelopes;\r
303   }\r
304 \r
305   public Set<Entry<String, String>> getEvents() {\r
306     return events;\r
307   }\r
308 \r
309   public void setEvents(Set<Entry<String, String>> events) {\r
310     this.events = events;\r
311   }\r
312 \r
313   public String getDefns() {\r
314     return defns;\r
315   }\r
316 \r
317   public void setDefns(String defns) {\r
318     this.defns = defns;\r
319   }\r
320 }\r