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 c54ba33..8955213 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 @@ -117,10 +117,11 @@ public class Query extends PostgreSQLQuery { return date; } - //TODO need to check duplicated keys and put all values in OR protected void addFilters() throws SQLException { if(filters!=null && filters.size()>0) { - stringBuffer.append("("); + if(filters.size()>1) { + stringBuffer.append("("); + } boolean first = true; for(String key : filters.keySet()) { if(first) { @@ -130,13 +131,17 @@ public class Query extends PostgreSQLQuery { } addOrConditions(key, filters.get(key)); } - stringBuffer.append(")"); + if(filters.size()>1) { + stringBuffer.append(")"); + } } } protected void addOrConditions(String key, Collection values) throws SQLException { if(values!=null && values.size()>0) { - stringBuffer.append("("); + if(values.size()>1) { + stringBuffer.append("("); + } boolean first = true; for(String value : values) { if(first) { @@ -148,7 +153,9 @@ public class Query extends PostgreSQLQuery { stringBuffer.append("="); appendValue(value); } - stringBuffer.append(")"); + if(values.size()>1) { + stringBuffer.append(")"); + } } } @@ -251,7 +258,7 @@ public class Query extends PostgreSQLQuery { } protected void addTemporalConstraintToQuery() throws SQLException { - stringBuffer.append(" WHERE "); + stringBuffer.append(" WHERE ("); String tableField = getTableField(AggregatedRecord.START_TIME); stringBuffer.append(tableField); stringBuffer.append(" > "); @@ -262,6 +269,7 @@ public class Query extends PostgreSQLQuery { stringBuffer.append(tableField); stringBuffer.append(" < "); appendValue(temporalConstraint.getAlignedEndTime()); + stringBuffer.append(")"); } protected void addDateGroupBy(boolean addNested) { diff --git a/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/QueryTest.java b/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/QueryTest.java index 699f43b..fca5c4f 100644 --- a/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/QueryTest.java +++ b/src/test/java/org/gcube/accounting/analytics/persistence/postgresql/QueryTest.java @@ -11,7 +11,6 @@ import java.util.Set; import org.gcube.accounting.analytics.Filter; import org.gcube.accounting.analytics.TemporalConstraint; import org.gcube.accounting.analytics.TemporalConstraint.AggregationMode; -import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQuery; import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; @@ -58,6 +57,8 @@ public class QueryTest extends ContextTest { Set filters = new HashSet<>(); Filter filter = new Filter(UsageRecord.CONSUMER_ID, getRandomUser()); filters.add(filter); + filter = new Filter(UsageRecord.CONSUMER_ID, getRandomUser()); + filters.add(filter); TemporalConstraint temporalConstraint = new TemporalConstraint(startTimeCalendar.getTimeInMillis(), entTimeCalendar.getTimeInMillis(), AggregationMode.MONTHLY); Query query = new Query(AggregatedServiceUsageRecord.class); @@ -67,9 +68,9 @@ public class QueryTest extends ContextTest { logger.debug(ret); - String currentScope = AccountingPersistenceBackendQuery.getScopeToQuery(); Set contexts = new HashSet<>(); - contexts.add(currentScope); + contexts.add(DEFAULT_TEST_SCOPE); + contexts.add(ALTERNATIVE_TEST_SCOPE); query.setContexts(contexts); ret = query.getTimeSeriesQuery(); logger.debug(ret); @@ -89,7 +90,7 @@ public class QueryTest extends ContextTest { @Test public void testGetRecordQuery() throws Exception { Query query = new Query(AggregatedServiceUsageRecord.class); - query.setRecordId("fa573711-ceb6-44ba-9c83-bd47e0915b80"); + query.setRecordId("7c3fcb31-6909-451d-bae0-633b3bec0c21"); String ret = query.getRecordQuery(); logger.debug(ret); }