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 # Changelog for Accounting Analytics Backend Connector for PostgreSQL
## [v2.0.1-SNAPSHOT]
- Enhanced accounting-postgresql-utilities range
## [v2.0.0] ## [v2.0.0]
- Added possibility of having multiple values for the same key which will be used in OR [#21353] - Added possibility of having multiple values for the same key which will be used in OR [#21353]
## [v1.0.1] ## [v1.0.1]
- Fixed bug on query - Fixed bug on query
## [v1.0.0] [r5.2.0] - 2021-05-04 ## [v1.0.0] [r5.2.0] - 2021-05-04
- First Release - First Release

View File

@ -9,7 +9,7 @@
</parent> </parent>
<groupId>org.gcube.accounting</groupId> <groupId>org.gcube.accounting</groupId>
<artifactId>accounting-analytics-persistence-postgresql</artifactId> <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> <name>Accounting Analytics Backend Connector for PostgreSQL</name>
<description>Accounting Analytics Backend Connector for PostgreSQL</description> <description>Accounting Analytics Backend Connector for PostgreSQL</description>
@ -49,7 +49,7 @@
<dependency> <dependency>
<groupId>org.gcube.accounting</groupId> <groupId>org.gcube.accounting</groupId>
<artifactId>accounting-postgresql-utilities</artifactId> <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>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
@ -88,4 +88,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -62,9 +62,40 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
protected Set<String> contexts; protected Set<String> contexts;
protected Collection<Filter> filters; 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() { 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 @Override
@ -88,35 +119,10 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
this.filters = (Collection<Filter>) filters; this.filters = (Collection<Filter>) filters;
} }
static { public RecordToDBMapping getRecordToDBMapping() {
// One Record per package is enough return recordToDBMapping;
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage());
} }
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) { protected void addProperty(ObjectNode objectNode, String key, Object value) {
if(value instanceof Number) { if(value instanceof Number) {
@ -149,7 +155,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
String sql = query.getTimeSeriesQuery(); String sql = query.getTimeSeriesQuery();
Set<String> requestedTableField = query.getRequestedTableField(); Set<String> requestedTableField = query.getRequestedTableField();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper(); RecordToDBFields recordToDBMapper = query.getRecordToDBFields();
logger.trace("Going to request the following query: {}", sql); logger.trace("Going to request the following query: {}", sql);
ResultSet resultSet = statement.executeQuery(sql); ResultSet resultSet = statement.executeQuery(sql);
@ -232,15 +238,15 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
String sql = query.getNextPossibleValueQuery(); String sql = query.getNextPossibleValueQuery();
// List<String> requestedTableField = query.getRequestedTableField(); // List<String> requestedTableField = query.getRequestedTableField();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper(); RecordToDBFields recordToDBFields = query.getRecordToDBFields();
logger.trace("Going to request the following query: {}", sql); logger.trace("Going to request the following query: {}", sql);
ResultSet resultSet = statement.executeQuery(sql); ResultSet resultSet = statement.executeQuery(sql);
String tableFieldORderingProperty = recordToDBMapper.getTableField(orderingProperty); String tableFieldORderingProperty = recordToDBFields.getTableField(orderingProperty);
while (resultSet.next()) { while (resultSet.next()) {
String tableFieldKey = recordToDBMapper.getTableField(key); String tableFieldKey = recordToDBFields.getTableField(key);
Object value = resultSet.getObject(tableFieldKey); Object value = resultSet.getObject(tableFieldKey);
Object numberObject = resultSet.getObject(tableFieldORderingProperty); Object numberObject = resultSet.getObject(tableFieldORderingProperty);
@ -293,7 +299,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
query.setRecordId(recordId); query.setRecordId(recordId);
String sql = query.getRecordQuery(); String sql = query.getRecordQuery();
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper(); RecordToDBFields recordToDBFields = query.getRecordToDBFields();
ResultSet resultSet = statement.executeQuery(sql); ResultSet resultSet = statement.executeQuery(sql);
resultSet.next(); resultSet.next();
@ -302,7 +308,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
Set<String> requiredFields = instance.getRequiredFields(); Set<String> requiredFields = instance.getRequiredFields();
for(String recordField : requiredFields) { for(String recordField : requiredFields) {
String tableField = recordToDBMapper.getTableField(recordField); String tableField = recordToDBFields.getTableField(recordField);
Serializable serializable; Serializable serializable;
switch (recordField) { switch (recordField) {
case AggregatedRecord.START_TIME: case AggregatedRecord.END_TIME: case AggregatedRecord.CREATION_TIME: 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; private String recordId;
public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception { public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
super();
this.clz = clz; this.clz = clz;
this.recordToDBFields = RecordToDBMapping.getRecordToDBFields(clz); this.recordToDBFields = RecordToDBMapping.getRecordToDBFields(clz);
} }
@ -100,7 +101,7 @@ public class Query extends PostgreSQLQuery {
this.recordId = recordId; this.recordId = recordId;
} }
public RecordToDBFields getRecordToDBMapper() { public RecordToDBFields getRecordToDBFields() {
return recordToDBFields; return recordToDBFields;
} }