You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
accounting-analytics-persis.../src/main/java/org/gcube/accounting/analytics/persistence/postgresql/UsageRecordDBInfo.java

52 lines
1.9 KiB
Java

package org.gcube.accounting.analytics.persistence.postgresql;
import java.sql.Connection;
import java.sql.DriverManager;
import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQueryConfiguration;
import org.gcube.accounting.persistence.AccountingPersistenceConfiguration;
import org.gcube.documentstore.records.AggregatedRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UsageRecordDBInfo {
private static final Logger logger = LoggerFactory.getLogger(UsageRecordDBInfo.class);
public static final String URL_PROPERTY_KEY = AccountingPersistenceConfiguration.URL_PROPERTY_KEY;
public static final String DB_SUFFIX = "-db";
public static final String USERNAME_SUFFIX = "-username";
public static final String PASSWORD_SUFFIX = "-password";
private final String baseURL;
private final String dbName;
private final String url;
private final String username;
private final String password;
protected final Class<? extends AggregatedRecord<?, ?>> clz;
protected final String typeName;
public UsageRecordDBInfo(Class<? extends AggregatedRecord<?, ?>> clz, AccountingPersistenceBackendQueryConfiguration configuration) throws Exception {
this.clz = clz;
this.typeName = UsageRecordToDBMapping.getRecordToDB(clz).getTypeName();
this.baseURL = configuration.getProperty(URL_PROPERTY_KEY);
this.dbName = configuration.getProperty(typeName+DB_SUFFIX);
this.url = baseURL + "/" + dbName;
this.username = configuration.getProperty(typeName+USERNAME_SUFFIX);
this.password = configuration.getProperty(typeName+PASSWORD_SUFFIX);
}
protected Connection getConnection() throws Exception {
Class.forName("org.postgresql.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
logger.trace("Database {} opened successfully", url);
connection.setAutoCommit(false);
return connection;
}
}