From 3c7f8d9de7847c6bc5ae036e6e0a3b0e0863eef4 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 22 Nov 2021 15:07:29 +0100 Subject: [PATCH] Fixed query --- .../persistence/postgresql/Query.java | 43 +++++++++++++++---- ...ountingPersistenceQueryPostgreSQLTest.java | 2 + 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gcube/accounting/analytics/persistence/postgresql/Query.java b/src/main/java/org/gcube/accounting/analytics/persistence/postgresql/Query.java index 7d04eb7..239a13c 100644 --- a/src/main/java/org/gcube/accounting/analytics/persistence/postgresql/Query.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/postgresql/Query.java @@ -16,6 +16,7 @@ import org.gcube.accounting.analytics.TemporalConstraint.AggregationMode; import org.gcube.accounting.analytics.TemporalConstraint.CalendarEnum; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; +import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord; import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord; import org.gcube.accounting.utility.postgresql.PostgreSQLQuery; import org.gcube.accounting.utility.postgresql.RecordToDBFields; @@ -183,8 +184,22 @@ public class Query extends PostgreSQLQuery { stringBuffer.append(") AS "); break; + case AggregatedStorageStatusRecord.DATA_COUNT: + stringBuffer.append(", MAX("); + if(addNested) { + stringBuffer.append(NESTED_TABLE_NAME); + stringBuffer.append("."); + } + stringBuffer.append(dbField); + stringBuffer.append(") AS "); + break; + case AggregatedStorageUsageRecord.DATA_VOLUME: - stringBuffer.append(", SUM("); + if(clz.isAssignableFrom(AggregatedStorageUsageRecord.class)) { + stringBuffer.append(", SUM("); + }else if(clz.isAssignableFrom(AggregatedStorageStatusRecord.class)){ + stringBuffer.append(", MAX("); + } if(addNested) { stringBuffer.append(NESTED_TABLE_NAME); stringBuffer.append("."); @@ -355,10 +370,15 @@ public class Query extends PostgreSQLQuery { addTemporalConstraintToQuery(); - stringBuffer.append(" AND "); - addFilters(); - stringBuffer.append(" AND "); - addContextFilter(); + if(filters!=null && filters.size()>0) { + stringBuffer.append(" AND "); + addFilters(); + } + + if(contexts!=null && contexts.size()>0) { + stringBuffer.append(" AND "); + addContextFilter(); + } addDateGroupBy(false); addDateOrderBy(false); @@ -382,11 +402,16 @@ public class Query extends PostgreSQLQuery { stringBuffer.append(" FROM "); stringBuffer.append(recordToDBFields.getTableName()); - addTemporalConstraintToQuery(); + if(temporalConstraint!=null) { + addTemporalConstraintToQuery(); + stringBuffer.append(" AND "); + } + + if(filters!=null && filters.size()>0) { + addFilters(); + stringBuffer.append(" AND "); + } - stringBuffer.append(" AND "); - addFilters(); - stringBuffer.append(" AND "); addContextFilter(); addGroupAndOrderByForOrderByField(); diff --git a/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/AccountingPersistenceQueryPostgreSQLTest.java b/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/AccountingPersistenceQueryPostgreSQLTest.java index a29c40f..e8f148f 100644 --- a/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/AccountingPersistenceQueryPostgreSQLTest.java +++ b/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/AccountingPersistenceQueryPostgreSQLTest.java @@ -223,8 +223,10 @@ public class AccountingPersistenceQueryPostgreSQLTest extends ContextTest { @Test public void gcTest() throws Exception { accountingPersistenceQueryPostgreSQL.setRequestedRecords(AggregatedStorageStatusRecord.class); + TemporalConstraint temporalConstraint = getTemporalConstraint(); Collection myFilters = accountingPersistenceQueryPostgreSQL.getFilterValues(AggregatedStorageStatusRecord.DATA_TYPE); accountingPersistenceQueryPostgreSQL.setFilters(myFilters); + accountingPersistenceQueryPostgreSQL.setTemporalConstraint(temporalConstraint); accountingPersistenceQueryPostgreSQL.getTimeSeries(); }