1 /*******************************************************************************
\r
2 * ============LICENSE_START==================================================
\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
11 * * http://www.apache.org/licenses/LICENSE-2.0
\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
20 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
22 ******************************************************************************/
\r
24 package com.att.research.datarouter.provisioning.beans;
\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.ArrayList;
\r
32 import java.util.Collection;
\r
33 import java.util.HashMap;
\r
34 import java.util.Map;
\r
36 import org.apache.log4j.Logger;
\r
37 import org.json.JSONObject;
\r
39 import com.att.research.datarouter.provisioning.utils.DB;
\r
42 * Methods to provide access to Provisioning parameters in the DB.
\r
43 * This class also provides constants of the standard parameters used by the Data Router.
\r
44 * @author Robert Eby
\r
45 * @version $Id: Parameters.java,v 1.11 2014/03/12 19:45:41 eby Exp $
\r
47 public class Parameters extends Syncable {
\r
48 public static final String PROV_REQUIRE_SECURE = "PROV_REQUIRE_SECURE";
\r
49 public static final String PROV_REQUIRE_CERT = "PROV_REQUIRE_CERT";
\r
50 public static final String PROV_AUTH_ADDRESSES = "PROV_AUTH_ADDRESSES";
\r
51 public static final String PROV_AUTH_SUBJECTS = "PROV_AUTH_SUBJECTS";
\r
52 public static final String PROV_NAME = "PROV_NAME";
\r
53 public static final String PROV_ACTIVE_NAME = "PROV_ACTIVE_NAME";
\r
54 public static final String PROV_DOMAIN = "PROV_DOMAIN";
\r
55 public static final String PROV_MAXFEED_COUNT = "PROV_MAXFEED_COUNT";
\r
56 public static final String PROV_MAXSUB_COUNT = "PROV_MAXSUB_COUNT";
\r
57 public static final String PROV_POKETIMER1 = "PROV_POKETIMER1";
\r
58 public static final String PROV_POKETIMER2 = "PROV_POKETIMER2";
\r
59 public static final String PROV_SPECIAL_SUBNET = "PROV_SPECIAL_SUBNET";
\r
60 public static final String PROV_LOG_RETENTION = "PROV_LOG_RETENTION";
\r
61 public static final String NODES = "NODES";
\r
62 public static final String ACTIVE_POD = "ACTIVE_POD";
\r
63 public static final String STANDBY_POD = "STANDBY_POD";
\r
64 public static final String LOGROLL_INTERVAL = "LOGROLL_INTERVAL";
\r
65 public static final String DELIVERY_INIT_RETRY_INTERVAL = "DELIVERY_INIT_RETRY_INTERVAL";
\r
66 public static final String DELIVERY_MAX_RETRY_INTERVAL = "DELIVERY_MAX_RETRY_INTERVAL";
\r
67 public static final String DELIVERY_RETRY_RATIO = "DELIVERY_RETRY_RATIO";
\r
68 public static final String DELIVERY_MAX_AGE = "DELIVERY_MAX_AGE";
\r
69 public static final String THROTTLE_FILTER = "THROTTLE_FILTER";
\r
70 public static final String STATIC_ROUTING_NODES = "STATIC_ROUTING_NODES"; //Adding new param for static Routing - Rally:US664862-1610
\r
72 private static Logger intlogger = Logger.getLogger("com.att.research.datarouter.provisioning.internal");
\r
74 private String keyname;
\r
75 private String value;
\r
78 * Get all parameters in the DB as a Map.
\r
79 * @return the Map of keynames/values from the DB.
\r
81 public static Map<String,String> getParameters() {
\r
82 Map<String,String> props = new HashMap<String,String>();
\r
83 for (Parameters p : getParameterCollection()) {
\r
84 props.put(p.getKeyname(), p.getValue());
\r
88 public static Collection<Parameters> getParameterCollection() {
\r
89 Collection<Parameters> coll = new ArrayList<Parameters>();
\r
92 @SuppressWarnings("resource")
\r
93 Connection conn = db.getConnection();
\r
94 Statement stmt = conn.createStatement();
\r
95 String sql = "select * from PARAMETERS";
\r
96 ResultSet rs = stmt.executeQuery(sql);
\r
98 Parameters p = new Parameters(rs);
\r
104 } catch (SQLException e) {
\r
105 e.printStackTrace();
\r
110 * Get a specific parameter value from the DB.
\r
111 * @param k the key to lookup
\r
112 * @return the value, or null if non-existant
\r
114 public static Parameters getParameter(String k) {
\r
115 Parameters v = null;
\r
118 @SuppressWarnings("resource")
\r
119 Connection conn = db.getConnection();
\r
120 Statement stmt = conn.createStatement();
\r
121 String sql = "select KEYNAME, VALUE from PARAMETERS where KEYNAME = \"" + k + "\"";
\r
122 ResultSet rs = stmt.executeQuery(sql);
\r
124 v = new Parameters(rs);
\r
129 } catch (SQLException e) {
\r
130 e.printStackTrace();
\r
135 public Parameters() {
\r
138 public Parameters(String k, String v) {
\r
142 public Parameters(ResultSet rs) throws SQLException {
\r
143 this.keyname = rs.getString("KEYNAME");
\r
144 this.value = rs.getString("VALUE");
\r
146 public String getKeyname() {
\r
149 public void setKeyname(String keyname) {
\r
150 this.keyname = keyname;
\r
152 public String getValue() {
\r
155 public void setValue(String value) {
\r
156 this.value = value;
\r
159 public JSONObject asJSONObject() {
\r
160 JSONObject jo = new JSONObject();
\r
161 jo.put("keyname", keyname);
\r
162 jo.put("value", value);
\r
166 public boolean doInsert(Connection c) {
\r
168 PreparedStatement ps = null;
\r
170 // Create the SUBSCRIPTIONS row
\r
171 String sql = "insert into PARAMETERS values (?, ?)";
\r
172 ps = c.prepareStatement(sql);
\r
173 ps.setString(1, getKeyname());
\r
174 ps.setString(2, getValue());
\r
176 } catch (SQLException e) {
\r
178 intlogger.warn("PROV0005 doInsert: "+e.getMessage());
\r
179 e.printStackTrace();
\r
183 } catch (SQLException e) {
\r
184 e.printStackTrace();
\r
190 public boolean doUpdate(Connection c) {
\r
192 PreparedStatement ps = null;
\r
194 // Update the PARAMETERS row
\r
195 String sql = "update PARAMETERS set VALUE = ? where KEYNAME = ?";
\r
196 ps = c.prepareStatement(sql);
\r
197 ps.setString(1, getValue());
\r
198 ps.setString(2, getKeyname());
\r
199 ps.executeUpdate();
\r
200 } catch (SQLException e) {
\r
202 intlogger.warn("PROV0006 doUpdate: "+e.getMessage());
\r
203 e.printStackTrace();
\r
207 } catch (SQLException e) {
\r
208 e.printStackTrace();
\r
214 public boolean doDelete(Connection c) {
\r
216 PreparedStatement ps = null;
\r
218 // Create the SUBSCRIPTIONS row
\r
219 String sql = "delete from PARAMETERS where KEYNAME = ?";
\r
220 ps = c.prepareStatement(sql);
\r
221 ps.setString(1, getKeyname());
\r
223 } catch (SQLException e) {
\r
225 intlogger.warn("PROV0007 doDelete: "+e.getMessage());
\r
226 e.printStackTrace();
\r
230 } catch (SQLException e) {
\r
231 e.printStackTrace();
\r
237 public String getKey() {
\r
238 return getKeyname();
\r
241 public boolean equals(Object obj) {
\r
242 if (!(obj instanceof Parameters))
\r
244 Parameters of = (Parameters) obj;
\r
245 if (!keyname.equals(of.keyname))
\r
247 if (!value.equals(of.value))
\r
253 public String toString() {
\r
254 return "PARAM: keyname=" + keyname + ", value=" + value;
\r