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 org.onap.dmaap.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
33 import com.att.eelf.configuration.EELFLogger;
\r
34 import com.att.eelf.configuration.EELFManager;
\r
35 import org.json.JSONObject;
\r
36 import org.onap.dmaap.datarouter.provisioning.utils.DB;
\r
39 * Methods to provide access to Provisioning parameters in the DB. This class also provides constants of the standard
\r
40 * parameters used by the Data Router.
\r
42 * @author Robert Eby
\r
43 * @version $Id: Parameters.java,v 1.11 2014/03/12 19:45:41 eby Exp $
\r
45 public class Parameters extends Syncable {
\r
47 public static final String PROV_REQUIRE_SECURE = "PROV_REQUIRE_SECURE";
\r
48 public static final String PROV_REQUIRE_CERT = "PROV_REQUIRE_CERT";
\r
49 public static final String PROV_AUTH_ADDRESSES = "PROV_AUTH_ADDRESSES";
\r
50 public static final String PROV_AUTH_SUBJECTS = "PROV_AUTH_SUBJECTS";
\r
51 public static final String PROV_NAME = "PROV_NAME";
\r
52 public static final String PROV_ACTIVE_NAME = "PROV_ACTIVE_NAME";
\r
53 public static final String PROV_DOMAIN = "PROV_DOMAIN";
\r
54 public static final String PROV_MAXFEED_COUNT = "PROV_MAXFEED_COUNT";
\r
55 public static final String PROV_MAXSUB_COUNT = "PROV_MAXSUB_COUNT";
\r
56 public static final String PROV_POKETIMER1 = "PROV_POKETIMER1";
\r
57 public static final String PROV_POKETIMER2 = "PROV_POKETIMER2";
\r
58 public static final String PROV_SPECIAL_SUBNET = "PROV_SPECIAL_SUBNET";
\r
59 public static final String PROV_LOG_RETENTION = "PROV_LOG_RETENTION";
\r
60 public static final String NODES = "NODES";
\r
61 public static final String ACTIVE_POD = "ACTIVE_POD";
\r
62 public static final String STANDBY_POD = "STANDBY_POD";
\r
63 public static final String LOGROLL_INTERVAL = "LOGROLL_INTERVAL";
\r
64 public static final String DELIVERY_INIT_RETRY_INTERVAL = "DELIVERY_INIT_RETRY_INTERVAL";
\r
65 public static final String DELIVERY_MAX_RETRY_INTERVAL = "DELIVERY_MAX_RETRY_INTERVAL";
\r
66 public static final String DELIVERY_RETRY_RATIO = "DELIVERY_RETRY_RATIO";
\r
67 public static final String DELIVERY_MAX_AGE = "DELIVERY_MAX_AGE";
\r
68 public static final String THROTTLE_FILTER = "THROTTLE_FILTER";
\r
69 public static final String STATIC_ROUTING_NODES = "STATIC_ROUTING_NODES"; //Adding new param for static Routing - Rally:US664862-1610
\r
71 private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");
\r
73 private String keyname;
\r
74 private String value;
\r
77 * 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
89 public static Collection<Parameters> getParameterCollection() {
\r
90 Collection<Parameters> coll = new ArrayList<Parameters>();
\r
93 @SuppressWarnings("resource")
\r
94 Connection conn = db.getConnection();
\r
95 try (Statement stmt = conn.createStatement()) {
\r
96 String sql = "select * from PARAMETERS";
\r
97 try (ResultSet rs = stmt.executeQuery(sql)) {
\r
99 Parameters p = new Parameters(rs);
\r
105 } catch (SQLException e) {
\r
106 intlogger.error("SQLException " + e.getMessage());
\r
112 * Get a specific parameter value from the DB.
\r
114 * @param k the key to lookup
\r
115 * @return the value, or null if non-existant
\r
117 public static Parameters getParameter(String k) {
\r
118 Parameters v = null;
\r
121 @SuppressWarnings("resource")
\r
122 Connection conn = db.getConnection();
\r
123 try (PreparedStatement stmt = conn
\r
124 .prepareStatement("select KEYNAME, VALUE from PARAMETERS where KEYNAME = ?")) {
\r
125 stmt.setString(1, k);
\r
126 try (ResultSet rs = stmt.executeQuery()) {
\r
128 v = new Parameters(rs);
\r
133 } catch (SQLException e) {
\r
134 intlogger.error("SQLException " + e.getMessage());
\r
139 public Parameters() {
\r
143 public Parameters(String k, String v) {
\r
148 public Parameters(ResultSet rs) throws SQLException {
\r
149 this.keyname = rs.getString("KEYNAME");
\r
150 this.value = rs.getString("VALUE");
\r
153 public String getKeyname() {
\r
157 public void setKeyname(String keyname) {
\r
158 this.keyname = keyname;
\r
161 public String getValue() {
\r
165 public void setValue(String value) {
\r
166 this.value = value;
\r
170 public JSONObject asJSONObject() {
\r
171 JSONObject jo = new JSONObject();
\r
172 jo.put("keyname", keyname);
\r
173 jo.put("value", value);
\r
178 public boolean doInsert(Connection c) {
\r
180 PreparedStatement ps = null;
\r
182 // Create the SUBSCRIPTIONS row
\r
183 String sql = "insert into PARAMETERS values (?, ?)";
\r
184 ps = c.prepareStatement(sql);
\r
185 ps.setString(1, getKeyname());
\r
186 ps.setString(2, getValue());
\r
188 } catch (SQLException e) {
\r
190 intlogger.warn("PROV0005 doInsert: " + e.getMessage());
\r
196 } catch (SQLException e) {
\r
197 intlogger.error("SQLException " + e.getMessage());
\r
204 public boolean doUpdate(Connection c) {
\r
206 PreparedStatement ps = null;
\r
208 // Update the PARAMETERS row
\r
209 String sql = "update PARAMETERS set VALUE = ? where KEYNAME = ?";
\r
210 ps = c.prepareStatement(sql);
\r
211 ps.setString(1, getValue());
\r
212 ps.setString(2, getKeyname());
\r
213 ps.executeUpdate();
\r
214 } catch (SQLException e) {
\r
216 intlogger.warn("PROV0006 doUpdate: " + e.getMessage());
\r
222 } catch (SQLException e) {
\r
223 intlogger.error("SQLException " + e.getMessage());
\r
230 public boolean doDelete(Connection c) {
\r
232 PreparedStatement ps = null;
\r
234 // Create the SUBSCRIPTIONS row
\r
235 String sql = "delete from PARAMETERS where KEYNAME = ?";
\r
236 ps = c.prepareStatement(sql);
\r
237 ps.setString(1, getKeyname());
\r
239 } catch (SQLException e) {
\r
241 intlogger.warn("PROV0007 doDelete: " + e.getMessage());
\r
247 } catch (SQLException e) {
\r
248 intlogger.error("SQLException " + e.getMessage());
\r
255 public String getKey() {
\r
256 return getKeyname();
\r
260 public boolean equals(Object obj) {
\r
261 if (!(obj instanceof Parameters)) {
\r
264 Parameters of = (Parameters) obj;
\r
265 if (!keyname.equals(of.keyname)) {
\r
268 if (!value.equals(of.value)) {
\r
275 public int hashCode() {
\r
276 return Objects.hash(keyname, value);
\r
280 public String toString() {
\r
281 return "PARAM: keyname=" + keyname + ", value=" + value;
\r