Merge "Use images from nexus release in docker-compose"
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / Parameters.java
1 /*******************************************************************************\r
2  * ============LICENSE_START==================================================\r
3  * * org.onap.dmaap\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * *\r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * *\r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 \r
24 package org.onap.dmaap.datarouter.provisioning.beans;\r
25 \r
26 import java.sql.Connection;\r
27 import java.sql.PreparedStatement;\r
28 import java.sql.ResultSet;\r
29 import java.sql.SQLException;\r
30 import java.sql.Statement;\r
31 import java.util.*;\r
32 \r
33 import org.apache.log4j.Logger;\r
34 import org.json.JSONObject;\r
35 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
36 \r
37 /**\r
38  * Methods to provide access to Provisioning parameters in the DB.\r
39  * This class also provides constants of the standard parameters used by the Data Router.\r
40  *\r
41  * @author Robert Eby\r
42  * @version $Id: Parameters.java,v 1.11 2014/03/12 19:45:41 eby Exp $\r
43  */\r
44 public class Parameters extends Syncable {\r
45     public static final String PROV_REQUIRE_SECURE = "PROV_REQUIRE_SECURE";\r
46     public static final String PROV_REQUIRE_CERT = "PROV_REQUIRE_CERT";\r
47     public static final String PROV_AUTH_ADDRESSES = "PROV_AUTH_ADDRESSES";\r
48     public static final String PROV_AUTH_SUBJECTS = "PROV_AUTH_SUBJECTS";\r
49     public static final String PROV_NAME = "PROV_NAME";\r
50     public static final String PROV_ACTIVE_NAME = "PROV_ACTIVE_NAME";\r
51     public static final String PROV_DOMAIN = "PROV_DOMAIN";\r
52     public static final String PROV_MAXFEED_COUNT = "PROV_MAXFEED_COUNT";\r
53     public static final String PROV_MAXSUB_COUNT = "PROV_MAXSUB_COUNT";\r
54     public static final String PROV_POKETIMER1 = "PROV_POKETIMER1";\r
55     public static final String PROV_POKETIMER2 = "PROV_POKETIMER2";\r
56     public static final String PROV_SPECIAL_SUBNET = "PROV_SPECIAL_SUBNET";\r
57     public static final String PROV_LOG_RETENTION = "PROV_LOG_RETENTION";\r
58     public static final String NODES = "NODES";\r
59     public static final String ACTIVE_POD = "ACTIVE_POD";\r
60     public static final String STANDBY_POD = "STANDBY_POD";\r
61     public static final String LOGROLL_INTERVAL = "LOGROLL_INTERVAL";\r
62     public static final String DELIVERY_INIT_RETRY_INTERVAL = "DELIVERY_INIT_RETRY_INTERVAL";\r
63     public static final String DELIVERY_MAX_RETRY_INTERVAL = "DELIVERY_MAX_RETRY_INTERVAL";\r
64     public static final String DELIVERY_RETRY_RATIO = "DELIVERY_RETRY_RATIO";\r
65     public static final String DELIVERY_MAX_AGE = "DELIVERY_MAX_AGE";\r
66     public static final String THROTTLE_FILTER = "THROTTLE_FILTER";\r
67     public static final String STATIC_ROUTING_NODES = "STATIC_ROUTING_NODES"; //Adding new param for static Routing - Rally:US664862-1610\r
68 \r
69     private static Logger intlogger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal");\r
70 \r
71     private String keyname;\r
72     private String value;\r
73 \r
74     /**\r
75      * Get all parameters in the DB as a Map.\r
76      *\r
77      * @return the Map of keynames/values from the DB.\r
78      */\r
79     public static Map<String, String> getParameters() {\r
80         Map<String, String> props = new HashMap<String, String>();\r
81         for (Parameters p : getParameterCollection()) {\r
82             props.put(p.getKeyname(), p.getValue());\r
83         }\r
84         return props;\r
85     }\r
86 \r
87     public static Collection<Parameters> getParameterCollection() {\r
88         Collection<Parameters> coll = new ArrayList<Parameters>();\r
89         try {\r
90             DB db = new DB();\r
91             @SuppressWarnings("resource")\r
92             Connection conn = db.getConnection();\r
93             try(Statement stmt = conn.createStatement()) {\r
94                 String sql = "select * from PARAMETERS";\r
95                 try(ResultSet rs = stmt.executeQuery(sql)) {\r
96                     while (rs.next()) {\r
97                         Parameters p = new Parameters(rs);\r
98                         coll.add(p);\r
99                     }\r
100                 }\r
101             }\r
102             db.release(conn);\r
103         } catch (SQLException e) {\r
104             e.printStackTrace();\r
105         }\r
106         return coll;\r
107     }\r
108 \r
109     /**\r
110      * Get a specific parameter value from the DB.\r
111      *\r
112      * @param k the key to lookup\r
113      * @return the value, or null if non-existant\r
114      */\r
115     public static Parameters getParameter(String k) {\r
116         Parameters v = null;\r
117         try {\r
118             DB db = new DB();\r
119             @SuppressWarnings("resource")\r
120             Connection conn = db.getConnection();\r
121             try(Statement stmt = conn.createStatement()) {\r
122                 String sql = "select KEYNAME, VALUE from PARAMETERS where KEYNAME = '" + k + "'";\r
123                 try(ResultSet rs = stmt.executeQuery(sql)) {\r
124                     if (rs.next()) {\r
125                         v = new Parameters(rs);\r
126                     }\r
127                 }\r
128             }\r
129             db.release(conn);\r
130         } catch (SQLException e) {\r
131             e.printStackTrace();\r
132         }\r
133         return v;\r
134     }\r
135 \r
136     public Parameters() {\r
137         this("", "");\r
138     }\r
139 \r
140     public Parameters(String k, String v) {\r
141         this.keyname = k;\r
142         this.value = v;\r
143     }\r
144 \r
145     public Parameters(ResultSet rs) throws SQLException {\r
146         this.keyname = rs.getString("KEYNAME");\r
147         this.value = rs.getString("VALUE");\r
148     }\r
149 \r
150     public String getKeyname() {\r
151         return keyname;\r
152     }\r
153 \r
154     public void setKeyname(String keyname) {\r
155         this.keyname = keyname;\r
156     }\r
157 \r
158     public String getValue() {\r
159         return value;\r
160     }\r
161 \r
162     public void setValue(String value) {\r
163         this.value = value;\r
164     }\r
165 \r
166     @Override\r
167     public JSONObject asJSONObject() {\r
168         JSONObject jo = new JSONObject();\r
169         jo.put("keyname", keyname);\r
170         jo.put("value", value);\r
171         return jo;\r
172     }\r
173 \r
174     @Override\r
175     public boolean doInsert(Connection c) {\r
176         boolean rv = true;\r
177         PreparedStatement ps = null;\r
178         try {\r
179             // Create the SUBSCRIPTIONS row\r
180             String sql = "insert into PARAMETERS values (?, ?)";\r
181             ps = c.prepareStatement(sql);\r
182             ps.setString(1, getKeyname());\r
183             ps.setString(2, getValue());\r
184             ps.execute();\r
185         } catch (SQLException e) {\r
186             rv = false;\r
187             intlogger.warn("PROV0005 doInsert: " + e.getMessage());\r
188             e.printStackTrace();\r
189         } finally {\r
190             try {\r
191                 if(ps!=null) {\r
192                     ps.close();\r
193                 }\r
194             } catch (SQLException e) {\r
195                 e.printStackTrace();\r
196             }\r
197         }\r
198         return rv;\r
199     }\r
200 \r
201     @Override\r
202     public boolean doUpdate(Connection c) {\r
203         boolean rv = true;\r
204         PreparedStatement ps = null;\r
205         try {\r
206             // Update the PARAMETERS row\r
207             String sql = "update PARAMETERS set VALUE = ? where KEYNAME = ?";\r
208             ps = c.prepareStatement(sql);\r
209             ps.setString(1, getValue());\r
210             ps.setString(2, getKeyname());\r
211             ps.executeUpdate();\r
212         } catch (SQLException e) {\r
213             rv = false;\r
214             intlogger.warn("PROV0006 doUpdate: " + e.getMessage());\r
215             e.printStackTrace();\r
216         } finally {\r
217             try {\r
218                 if(ps!=null) {\r
219                     ps.close();\r
220                 }\r
221             } catch (SQLException e) {\r
222                 e.printStackTrace();\r
223             }\r
224         }\r
225         return rv;\r
226     }\r
227 \r
228     @Override\r
229     public boolean doDelete(Connection c) {\r
230         boolean rv = true;\r
231         PreparedStatement ps = null;\r
232         try {\r
233             // Create the SUBSCRIPTIONS row\r
234             String sql = "delete from PARAMETERS where KEYNAME = ?";\r
235             ps = c.prepareStatement(sql);\r
236             ps.setString(1, getKeyname());\r
237             ps.execute();\r
238         } catch (SQLException e) {\r
239             rv = false;\r
240             intlogger.warn("PROV0007 doDelete: " + e.getMessage());\r
241             e.printStackTrace();\r
242         } finally {\r
243             try {\r
244                 if(ps!=null) {\r
245                     ps.close();\r
246                 }\r
247             } catch (SQLException e) {\r
248                 e.printStackTrace();\r
249             }\r
250         }\r
251         return rv;\r
252     }\r
253 \r
254     @Override\r
255     public String getKey() {\r
256         return getKeyname();\r
257     }\r
258 \r
259     @Override\r
260     public boolean equals(Object obj) {\r
261         if (!(obj instanceof Parameters))\r
262             return false;\r
263         Parameters of = (Parameters) obj;\r
264         if (!keyname.equals(of.keyname))\r
265             return false;\r
266         if (!value.equals(of.value))\r
267             return false;\r
268         return true;\r
269     }\r
270 \r
271     @Override\r
272     public int hashCode() {\r
273         return Objects.hash(keyname, value);\r
274     }\r
275 \r
276     @Override\r
277     public String toString() {\r
278         return "PARAM: keyname=" + keyname + ", value=" + value;\r
279     }\r
280 }\r
281 \r