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 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
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
45 * @author Robert Eby
\r
46 * @version $Id: Parameters.java,v 1.11 2014/03/12 19:45:41 eby Exp $
\r
49 public class Parameters extends Syncable {
\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
76 private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");
\r
77 private static final String SQLEXCEPTION = "SQLException: ";
\r
79 private String keyname;
\r
80 private String value;
\r
82 public Parameters(String key, String val) {
\r
87 public Parameters(ResultSet rs) throws SQLException {
\r
88 this.keyname = rs.getString("KEYNAME");
\r
89 this.value = rs.getString("VALUE");
\r
93 * Get all parameters in the DB as a Map.
\r
95 * @return the Map of keynames/values from the DB.
\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
106 * Method to get parameters.
\r
107 * @return collection of parameters
\r
109 public static Collection<Parameters> getParameterCollection() {
\r
110 Collection<Parameters> coll = new ArrayList<>();
\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
122 } catch (SQLException e) {
\r
123 intlogger.error(SQLEXCEPTION + e.getMessage(), e);
\r
129 * Get a specific parameter value from the DB.
\r
131 * @param key the key to lookup
\r
132 * @return the value, or null if non-existant
\r
134 public static Parameters getParameter(String key) {
\r
135 Parameters val = null;
\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
143 val = new Parameters(rs);
\r
147 } catch (SQLException e) {
\r
148 intlogger.error(SQLEXCEPTION + e.getMessage(), e);
\r
153 public String getKeyname() {
\r
157 public String getValue() {
\r
161 public void setValue(String value) {
\r
162 this.value = value;
\r
166 public JSONObject asJSONObject() {
\r
167 JSONObject jo = new JSONObject();
\r
168 jo.put("keyname", keyname);
\r
169 jo.put("value", value);
\r
174 public boolean doInsert(Connection conn) {
\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
181 } catch (SQLException e) {
\r
183 intlogger.warn("PROV0005 doInsert: " + e.getMessage(), e);
\r
189 public boolean doUpdate(Connection conn) {
\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
198 intlogger.warn("PROV0006 doUpdate: " + e.getMessage(),e);
\r
204 public boolean doDelete(Connection conn) {
\r
206 String sql = "delete from PARAMETERS where KEYNAME = ?";
\r
207 try (PreparedStatement ps = conn.prepareStatement(sql)) {
\r
208 ps.setString(1, getKeyname());
\r
210 } catch (SQLException e) {
\r
212 intlogger.warn("PROV0007 doDelete: " + e.getMessage(), e);
\r
218 public String getKey() {
\r
219 return getKeyname();
\r
223 public boolean equals(Object obj) {
\r
224 if (!(obj instanceof Parameters)) {
\r
227 Parameters of = (Parameters) obj;
\r
228 return (!value.equals(of.value)) && (!keyname.equals(of.keyname));
\r
232 public int hashCode() {
\r
233 return Objects.hash(keyname, value);
\r
237 public String toString() {
\r
238 return "PARAM: keyname=" + keyname + ", value=" + value;
\r