Removed static usage

This commit is contained in:
Luca Frosini 2024-02-29 16:14:13 +01:00
parent 2d9eb7986f
commit 265d1ca1d6
4 changed files with 53 additions and 39 deletions

View File

@ -2,14 +2,21 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for Accounting Analytics Backend Connector for PostgreSQL
## [v2.0.1-SNAPSHOT]
- Enhanced accounting-postgresql-utilities range
## [v2.0.0]
- Added possibility of having multiple values for the same key which will be used in OR [#21353]
## [v1.0.1]
- Fixed bug on query
## [v1.0.0] [r5.2.0] - 2021-05-04
- First Release

View File

@ -9,7 +9,7 @@
</parent>
<groupId>org.gcube.accounting</groupId>
<artifactId>accounting-analytics-persistence-postgresql</artifactId>
<version>2.0.0</version>
<version>2.0.1-SNAPSHOT</version>
<name>Accounting Analytics Backend Connector for PostgreSQL</name>
<description>Accounting Analytics Backend Connector for PostgreSQL</description>
@ -49,7 +49,7 @@
<dependency>
<groupId>org.gcube.accounting</groupId>
<artifactId>accounting-postgresql-utilities</artifactId>
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@ -88,4 +88,4 @@
</plugin>
</plugins>
</build>
</project>
</project>

View File

@ -62,9 +62,40 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
protected Set<String> contexts;
protected Collection<Filter> filters;
protected RecordToDBMapping recordToDBMapping;
static {
// One Record per package is enough
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage());
}
public AccountingPersistenceQueryPostgreSQL() {
objectMapper = new ObjectMapper();
this.objectMapper = new ObjectMapper();
this.recordToDBMapping = new RecordToDBMapping();
}
@Override
public void prepareConnection(AccountingPersistenceBackendQueryConfiguration configuration) throws Exception {
this.configuration = configuration;
Map<String, Class<? extends AggregatedRecord<?,?>>> aggregatedRecords = RecordUtility.getAggregatedRecordClassesFound();
for(String typeName : aggregatedRecords.keySet()) {
try {
Class<? extends AggregatedRecord<?,?>> clz = aggregatedRecords.get(typeName);
recordToDBMapping.addRecordToDB(clz, configuration);
} catch (Exception e) {
new RuntimeException(e);
}
}
}
protected Connection getConnection(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
RecordToDBConnection recordDBConnection = recordToDBMapping.getRecordDBInfo(clz);
if(recordDBConnection == null) {
recordToDBMapping.addRecordToDB(clz, configuration);
recordDBConnection = recordToDBMapping.getRecordDBInfo(clz);
}
return recordDBConnection.getConnection();
}
@Override
@ -88,35 +119,10 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
this.filters = (Collection<Filter>) filters;
}
static {
// One Record per package is enough
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage());
public RecordToDBMapping getRecordToDBMapping() {
return recordToDBMapping;
}
protected Connection getConnection(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
RecordToDBConnection recordDBInfo = RecordToDBMapping.getRecordDBInfo(clz);
if(recordDBInfo == null) {
RecordToDBMapping.addRecordToDB(clz, configuration);
recordDBInfo = RecordToDBMapping.getRecordDBInfo(clz);
}
return recordDBInfo.getConnection();
}
@Override
public void prepareConnection(AccountingPersistenceBackendQueryConfiguration configuration) throws Exception {
this.configuration = configuration;
Map<String, Class<? extends AggregatedRecord<?,?>>> aggregatedRecords = RecordUtility.getAggregatedRecordClassesFound();
for(String typeName : aggregatedRecords.keySet()) {
try {
Class<? extends AggregatedRecord<?,?>> clz = aggregatedRecords.get(typeName);
RecordToDBMapping.addRecordToDB(clz, configuration);
} catch (Exception e) {
new RuntimeException(e);
}
}
}
protected void addProperty(ObjectNode objectNode, String key, Object value) {
if(value instanceof Number) {
@ -149,7 +155,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
String sql = query.getTimeSeriesQuery();
Set<String> requestedTableField = query.getRequestedTableField();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper();
RecordToDBFields recordToDBMapper = query.getRecordToDBFields();
logger.trace("Going to request the following query: {}", sql);
ResultSet resultSet = statement.executeQuery(sql);
@ -232,15 +238,15 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
String sql = query.getNextPossibleValueQuery();
// List<String> requestedTableField = query.getRequestedTableField();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper();
RecordToDBFields recordToDBFields = query.getRecordToDBFields();
logger.trace("Going to request the following query: {}", sql);
ResultSet resultSet = statement.executeQuery(sql);
String tableFieldORderingProperty = recordToDBMapper.getTableField(orderingProperty);
String tableFieldORderingProperty = recordToDBFields.getTableField(orderingProperty);
while (resultSet.next()) {
String tableFieldKey = recordToDBMapper.getTableField(key);
String tableFieldKey = recordToDBFields.getTableField(key);
Object value = resultSet.getObject(tableFieldKey);
Object numberObject = resultSet.getObject(tableFieldORderingProperty);
@ -293,7 +299,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
query.setRecordId(recordId);
String sql = query.getRecordQuery();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper();
RecordToDBFields recordToDBFields = query.getRecordToDBFields();
ResultSet resultSet = statement.executeQuery(sql);
resultSet.next();
@ -302,7 +308,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
Set<String> requiredFields = instance.getRequiredFields();
for(String recordField : requiredFields) {
String tableField = recordToDBMapper.getTableField(recordField);
String tableField = recordToDBFields.getTableField(recordField);
Serializable serializable;
switch (recordField) {
case AggregatedRecord.START_TIME: case AggregatedRecord.END_TIME: case AggregatedRecord.CREATION_TIME:

View File

@ -45,6 +45,7 @@ public class Query extends PostgreSQLQuery {
private String recordId;
public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
super();
this.clz = clz;
this.recordToDBFields = RecordToDBMapping.getRecordToDBFields(clz);
}
@ -100,7 +101,7 @@ public class Query extends PostgreSQLQuery {
this.recordId = recordId;
}
public RecordToDBFields getRecordToDBMapper() {
public RecordToDBFields getRecordToDBFields() {
return recordToDBFields;
}