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 239a13c..0dba75b 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 @@ -402,14 +402,26 @@ public class Query extends PostgreSQLQuery { stringBuffer.append(" FROM "); stringBuffer.append(recordToDBFields.getTableName()); + boolean addAnd = false; if(temporalConstraint!=null) { addTemporalConstraintToQuery(); - stringBuffer.append(" AND "); + addAnd = true; } if(filters!=null && filters.size()>0) { + if(addAnd) { + stringBuffer.append(" AND "); + } addFilters(); - stringBuffer.append(" AND "); + addAnd = true; + } + + if(contexts!=null && contexts.size()>0) { + if(addAnd) { + stringBuffer.append(" AND "); + } + addContextFilter(); + addAnd = false; } addContextFilter(); 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 eed439f..b758b00 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 @@ -206,13 +206,27 @@ public class AccountingPersistenceQueryPostgreSQLTest extends ContextTest { accountingPersistenceQueryPostgreSQL.setRequestedRecords(clz); accountingPersistenceQueryPostgreSQL.setTemporalConstraint(temporalConstraint); - accountingPersistenceQueryPostgreSQL.setFilters(filters); SortedSet numberedFilters = accountingPersistenceQueryPostgreSQL.getFilterValues(key); for(NumberedFilter numberedFilter : numberedFilters) { logger.debug("{}", numberedFilter); } + accountingPersistenceQueryPostgreSQL.setFilters(filters); + numberedFilters = accountingPersistenceQueryPostgreSQL.getFilterValues(key); + for(NumberedFilter numberedFilter : numberedFilters) { + logger.debug("{}", numberedFilter); + } + + + accountingPersistenceQueryPostgreSQL.setFilters(null); + logger.debug("----Only first 3 results"); + numberedFilters = accountingPersistenceQueryPostgreSQL.getFilterValues(key, 3); + for(NumberedFilter numberedFilter : numberedFilters) { + logger.debug("{}", numberedFilter); + } + + accountingPersistenceQueryPostgreSQL.setFilters(filters); logger.debug("----Only first 3 results"); numberedFilters = accountingPersistenceQueryPostgreSQL.getFilterValues(key, 3); for(NumberedFilter numberedFilter : numberedFilters) {