/*-
* ============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 Properties
.
*/
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 org.onap.ccsdk.sli.jdbc.user
.
*/
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
* DEFAULT_REJECT_CHANGE_VALUE
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 DEFAULT_REQUEST_TIMEOUT
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 null
if not present
*/
public String getDbConnectionName() {
return properties.getProperty(CONNECTION_NAME);
}
/**
* Extracts the db name.
*
* @return the db name, or null
if not present
*/
public String getDatabaseName() {
return properties.getProperty(DATABASE_NAME);
}
/**
* Extracts the jdbc driver's name.
*
* @return the jdbc name, or com.mysql.jdbc.Driver
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 null
if not present
*/
public String getDbUserId() {
return properties.getProperty(DATABASE_USER);
}
/**
* Extracts the db password.
*
* @return the db password, or null
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
* Integer
.
*/
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
* Integer
.
*/
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
* Integer
.
*/
public int getDbInitialLimit() throws NumberFormatException {
String value = properties.getProperty(INIT_LIMIT);
return Integer.parseInt(value);
}
/**
* Extracts the db url.
*
* @return the db url, or null
if not present
*/
public String getDbUrl() {
return properties.getProperty(DATABASE_URL);
}
}