Code style cleanup for prov authz and beans
[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 com.att.eelf.configuration.EELFLogger;\r
27 import com.att.eelf.configuration.EELFManager;\r
28 import java.sql.Connection;\r
29 import java.sql.PreparedStatement;\r
30 import java.sql.ResultSet;\r
31 import java.sql.SQLException;\r
32 import java.sql.Statement;\r
33 import java.util.ArrayList;\r
34 import java.util.Collection;\r
35 import java.util.HashMap;\r
36 import java.util.Map;\r
37 import java.util.Objects;\r
38 import org.json.JSONObject;\r
39 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
40 \r
41 /**\r
42  * Methods to provide access to Provisioning parameters in the DB. This class also provides constants of the standard\r
43  * parameters used by the Data Router.\r
44  *\r
45  * @author Robert Eby\r
46  * @version $Id: Parameters.java,v 1.11 2014/03/12 19:45:41 eby Exp $\r
47  */\r
48 \r
49 public class Parameters extends Syncable {\r
50 \r
51     public static final String PROV_REQUIRE_SECURE = "PROV_REQUIRE_SECURE";\r
52     public static final String PROV_REQUIRE_CERT = "PROV_REQUIRE_CERT";\r
53     public static final String PROV_AUTH_ADDRESSES = "PROV_AUTH_ADDRESSES";\r
54     public static final String PROV_AUTH_SUBJECTS = "PROV_AUTH_SUBJECTS";\r
55     public static final String PROV_NAME = "PROV_NAME";\r
56     public static final String PROV_ACTIVE_NAME = "PROV_ACTIVE_NAME";\r
57     public static final String PROV_DOMAIN = "PROV_DOMAIN";\r
58     public static final String PROV_MAXFEED_COUNT = "PROV_MAXFEED_COUNT";\r
59     public static final String PROV_MAXSUB_COUNT = "PROV_MAXSUB_COUNT";\r
60     public static final String PROV_POKETIMER1 = "PROV_POKETIMER1";\r
61     public static final String PROV_POKETIMER2 = "PROV_POKETIMER2";\r
62     public static final String PROV_SPECIAL_SUBNET = "PROV_SPECIAL_SUBNET";\r
63     public static final String PROV_LOG_RETENTION = "PROV_LOG_RETENTION";\r
64     public static final String DEFAULT_LOG_RETENTION = "DEFAULT_LOG_RETENTION";\r
65     public static final String NODES = "NODES";\r
66     public static final String ACTIVE_POD = "ACTIVE_POD";\r
67     public static final String STANDBY_POD = "STANDBY_POD";\r
68     public static final String LOGROLL_INTERVAL = "LOGROLL_INTERVAL";\r
69     public static final String DELIVERY_INIT_RETRY_INTERVAL = "DELIVERY_INIT_RETRY_INTERVAL";\r
70     public static final String DELIVERY_MAX_RETRY_INTERVAL = "DELIVERY_MAX_RETRY_INTERVAL";\r
71     public static final String DELIVERY_RETRY_RATIO = "DELIVERY_RETRY_RATIO";\r
72     public static final String DELIVERY_MAX_AGE = "DELIVERY_MAX_AGE";\r
73     public static final String THROTTLE_FILTER = "THROTTLE_FILTER";\r
74     public static final String STATIC_ROUTING_NODES = "STATIC_ROUTING_NODES";\r
75 \r
76     private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");\r
77     private static final String SQLEXCEPTION = "SQLException: ";\r
78 \r
79     private String keyname;\r
80     private String value;\r
81 \r
82     public Parameters(String key, String val) {\r
83         this.keyname = key;\r
84         this.value = val;\r
85     }\r
86 \r
87     public Parameters(ResultSet rs) throws SQLException {\r
88         this.keyname = rs.getString("KEYNAME");\r
89         this.value = rs.getString("VALUE");\r
90     }\r
91 \r
92     /**\r
93      * Get all parameters in the DB as a Map.\r
94      *\r
95      * @return the Map of keynames/values from the DB.\r
96      */\r
97     public static Map<String, String> getParameters() {\r
98         Map<String, String> props = new HashMap<>();\r
99         for (Parameters p : getParameterCollection()) {\r
100             props.put(p.getKeyname(), p.getValue());\r
101         }\r
102         return props;\r
103     }\r
104 \r
105     /**\r
106      * Method to get parameters.\r
107      * @return collection of parameters\r
108      */\r
109     public static Collection<Parameters> getParameterCollection() {\r
110         Collection<Parameters> coll = new ArrayList<>();\r
111         DB db = new DB();\r
112         String sql = "select * from PARAMETERS";\r
113         try (Connection conn = db.getConnection();\r
114                 Statement stmt = conn.createStatement()) {\r
115             try (ResultSet rs = stmt.executeQuery(sql)) {\r
116                 while (rs.next()) {\r
117                     Parameters param = new Parameters(rs);\r
118                     coll.add(param);\r
119                 }\r
120             }\r
121             db.release(conn);\r
122         } catch (SQLException e) {\r
123             intlogger.error(SQLEXCEPTION + e.getMessage(), e);\r
124         }\r
125         return coll;\r
126     }\r
127 \r
128     /**\r
129      * Get a specific parameter value from the DB.\r
130      *\r
131      * @param key the key to lookup\r
132      * @return the value, or null if non-existant\r
133      */\r
134     public static Parameters getParameter(String key) {\r
135         Parameters val = null;\r
136         DB db = new DB();\r
137         String sql = "select KEYNAME, VALUE from PARAMETERS where KEYNAME = ?";\r
138         try (Connection conn = db.getConnection();\r
139                 PreparedStatement stmt = conn.prepareStatement(sql)) {\r
140             stmt.setString(1, key);\r
141             try (ResultSet rs = stmt.executeQuery()) {\r
142                 if (rs.next()) {\r
143                     val = new Parameters(rs);\r
144                 }\r
145             }\r
146             db.release(conn);\r
147         } catch (SQLException e) {\r
148             intlogger.error(SQLEXCEPTION + e.getMessage(), e);\r
149         }\r
150         return val;\r
151     }\r
152 \r
153     public String getKeyname() {\r
154         return keyname;\r
155     }\r
156 \r
157     public String getValue() {\r
158         return value;\r
159     }\r
160 \r
161     public void setValue(String value) {\r
162         this.value = value;\r
163     }\r
164 \r
165     @Override\r
166     public JSONObject asJSONObject() {\r
167         JSONObject jo = new JSONObject();\r
168         jo.put("keyname", keyname);\r
169         jo.put("value", value);\r
170         return jo;\r
171     }\r
172 \r
173     @Override\r
174     public boolean doInsert(Connection conn) {\r
175         boolean rv = true;\r
176         String sql = "insert into PARAMETERS values (?, ?)";\r
177         try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
178             ps.setString(1, getKeyname());\r
179             ps.setString(2, getValue());\r
180             ps.execute();\r
181         } catch (SQLException e) {\r
182             rv = false;\r
183             intlogger.warn("PROV0005 doInsert: " + e.getMessage(), e);\r
184         }\r
185         return rv;\r
186     }\r
187 \r
188     @Override\r
189     public boolean doUpdate(Connection conn) {\r
190         boolean rv = true;\r
191         String sql = "update PARAMETERS set VALUE = ? where KEYNAME = ?";\r
192         try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
193             ps.setString(1, getValue());\r
194             ps.setString(2, getKeyname());\r
195             ps.executeUpdate();\r
196         } catch (SQLException e) {\r
197             rv = false;\r
198             intlogger.warn("PROV0006 doUpdate: " + e.getMessage(),e);\r
199         }\r
200         return rv;\r
201     }\r
202 \r
203     @Override\r
204     public boolean doDelete(Connection conn) {\r
205         boolean rv = true;\r
206         String sql = "delete from PARAMETERS where KEYNAME = ?";\r
207         try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
208             ps.setString(1, getKeyname());\r
209             ps.execute();\r
210         } catch (SQLException e) {\r
211             rv = false;\r
212             intlogger.warn("PROV0007 doDelete: " + e.getMessage(), e);\r
213         }\r
214         return rv;\r
215     }\r
216 \r
217     @Override\r
218     public String getKey() {\r
219         return getKeyname();\r
220     }\r
221 \r
222     @Override\r
223     public boolean equals(Object obj) {\r
224         if (!(obj instanceof Parameters)) {\r
225             return false;\r
226         }\r
227         Parameters of = (Parameters) obj;\r
228         return (!value.equals(of.value)) && (!keyname.equals(of.keyname));\r
229     }\r
230 \r
231     @Override\r
232     public int hashCode() {\r
233         return Objects.hash(keyname, value);\r
234     }\r
235 \r
236     @Override\r
237     public String toString() {\r
238         return "PARAM: keyname=" + keyname + ", value=" + value;\r
239     }\r
240 }\r
241 \r