aboutsummaryrefslogtreecommitdiffstats
path: root/dblib/provider/src/main/java/org/onap/ccsdk/sli/core/dblib/config/BaseDBConfiguration.java
blob: 5f0209b6792a14d1291ddb558904bfe7cc79cc3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
/*-
 * ============LICENSE_START=======================================================
 * onap
 * ================================================================================
 * Copyright (C) 2016 - 2017 ONAP
 * Modifications Copyright (C) 2018 IBM.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

package org.onap.ccsdk.sli.core.dblib.config;

import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * Base class responsible for parsing business logic for database configuration from given <code>Properties</code>.
 */
public abstract class BaseDBConfiguration {

    private Logger logger = LoggerFactory.getLogger(BaseDBConfiguration.class);
    /**
     * Property key within a properties configuration File for db type
     */
    public static final String DATABASE_TYPE    = "org.onap.ccsdk.sli.dbtype";

    /**
     * Property key with a properties configuration File for db url
     */
    public static final String DATABASE_URL        = "org.onap.ccsdk.sli.jdbc.url";

    /**
     * Property key with a properties configuration File for database name
     */
    public static final String DATABASE_NAME    = "org.onap.ccsdk.sli.jdbc.database";

    /**
     * Property key with a properties configuration File for jdbc driver
     */
    public static final String DRIVER_NAME = "org.onap.ccsdk.sli.jdbc.driver";

    /**
     * Property key with a properties configuration File for db database connection name
     */
    public static final String CONNECTION_NAME    = "org.onap.ccsdk.sli.jdbc.connection.name";

    /**
     * Property key with a properties configuration File for database user
     */
    public static final String DATABASE_USER     = "org.onap.ccsdk.sli.jdbc.user";

    /**
     * Property key with a properties configuration File for database password
     * for associated with <code>org.onap.ccsdk.sli.jdbc.user</code>.
     */
    public static final String DATABASE_PSSWD    = "org.onap.ccsdk.sli.jdbc.password";

    /**
     * Property key with a properties configuration File for database connection
     * timeout
     */
    public static final String CONNECTION_TIMEOUT="org.onap.ccsdk.sli.jdbc.connection.timeout";

    /**
     * Property key with a properties configuration File for database request
     * timeout
     */
    public static final String REQUEST_TIMEOUT    = "org.onap.ccsdk.sli.jdbc.request.timeout";

    /**
     * Property key with a properties configuration File for database minimum
     * limit
     */
    public static final String MIN_LIMIT        = "org.onap.ccsdk.sli.jdbc.limit.min";

    /**
     * Property key with a properties configuration File for database maximum
     * limit
     */
    public static final String MAX_LIMIT        = "org.onap.ccsdk.sli.jdbc.limit.max";

    /**
     * Property key with a properties configuration File for database initial
     * limit
     */
    public static final String INIT_LIMIT        = "org.onap.ccsdk.sli.jdbc.limit.init";

    /**
     * Property key with a properties configuration File for database hosts
     */
    public static final String DATABASE_HOSTS   = "org.onap.ccsdk.sli.jdbc.hosts";

    /**
     * default value when the connection timeout is not present or cannot be
     * parsed.
     */
    private static final String DEFAULT_REJECT_CHANGE_VALUE = "-1";

    /**
     * A set of properties with database configuration information.
     */
    protected final Properties properties;

    /**
     * Builds a configuration based on given properties
     *
     * @param properties
     *            properties represented by the public constant keys defined by
     *            this class
     */
    public BaseDBConfiguration(final Properties properties) {
        this.properties = properties;
    }

    /**
     * Extracts the connection timeout.
     *
     * @return the connection timeout, or
     *         <code>DEFAULT_REJECT_CHANGE_VALUE</code> if not present
     */
    public int getConnTimeout() {
        try {
            String value = properties.getProperty(CONNECTION_TIMEOUT, DEFAULT_REJECT_CHANGE_VALUE);
            return Integer.parseInt(value);
        } catch (Exception exc) {
            logger.error("Exception",exc);
            return Integer.parseInt(DEFAULT_REJECT_CHANGE_VALUE);
        }
    }

    /**
     * Extracts the request timeout.
     *
     * @return the request timeout, or <code>DEFAULT_REQUEST_TIMEOUT</code> if
     *         not present
     */
    public int getRequestTimeout() {
        try {
            String value = properties.getProperty(REQUEST_TIMEOUT, DEFAULT_REJECT_CHANGE_VALUE);
            return Integer.parseInt(value);
        } catch (Exception exc) {
            logger.error("Exception",exc);
            return Integer.parseInt(DEFAULT_REJECT_CHANGE_VALUE);
        }
    }

    /**
     * Extracts the db connection name.
     *
     * @return the db connection name, or <code>null</code> if not present
     */
    public String getDbConnectionName() {
        return properties.getProperty(CONNECTION_NAME);
    }

    /**
     * Extracts the db name.
     *
     * @return the db name, or <code>null</code> if not present
     */
    public String getDatabaseName() {
        return properties.getProperty(DATABASE_NAME);
    }

    /**
     * Extracts the jdbc driver's name.
     *
     * @return the jdbc name, or <code>com.mysql.jdbc.Driver</code> if not present
     */
    public String getDriverName() {
        return properties.getProperty(DRIVER_NAME, "com.mysql.jdbc.Driver");
    }

    /**
     * Extracts the db user id.
     *
     * @return the db user id, or <code>null</code> if not present
     */
    public String getDbUserId() {
        return properties.getProperty(DATABASE_USER);
    }

    /**
     * Extracts the db password.
     *
     * @return the db password, or <code>null</code> if not present
     */
    public String getDbPasswd() {
        return properties.getProperty(DATABASE_PSSWD);
    }

    /**
     * Extracts the db min limit.
     *
     * @return the db min limit
     * @throws NumberFormatException
     *             if the property is not specified, or cannot be parsed as an
     *             <code>Integer</code>.
     */
    public int getDbMinLimit() throws NumberFormatException {
        String value = properties.getProperty(MIN_LIMIT);
        return Integer.parseInt(value);
    }

    /**
     * Extracts the db max limit.
     *
     * @return the db max limit
     * @throws NumberFormatException
     *             if the property is not specified, or cannot be parsed as an
     *             <code>Integer</code>.
     */
    public int getDbMaxLimit() throws NumberFormatException {
        String value = properties.getProperty(MAX_LIMIT);
        return Integer.parseInt(value);
    }

    /**
     * Extracts the db initial limit.
     *
     * @return the db initial limit
     * @throws NumberFormatException
     *             if the property is not specified, or cannot be parsed as an
     *             <code>Integer</code>.
     */
    public int getDbInitialLimit() throws NumberFormatException {
        String value = properties.getProperty(INIT_LIMIT);
        return Integer.parseInt(value);
    }

    /**
     * Extracts the db url.
     *
     * @return the db url, or <code>null</code> if not present
     */
    public String getDbUrl() {
        return properties.getProperty(DATABASE_URL);
    }
}