diff --git a/pom.xml b/pom.xml index d6465d8..0cbe63d 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ org.gcube.accounting accounting-analytics - 2.2.0-SNAPSHOT + 2.3.0-SNAPSHOT accounting-analytics diff --git a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceBackendQuery.java b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceBackendQuery.java index f7fcb4d..6bb3673 100644 --- a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceBackendQuery.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceBackendQuery.java @@ -200,8 +200,17 @@ public interface AccountingPersistenceBackendQuery { throws Exception; - - - + /** + * Return a SortedMap containing the TimeSeries for each context. + * @param clz + * @param temporalConstraint + * @param filters + * @param contexts + * @return + */ + public SortedMap> getContextTimeSeries( + Class> clz, + TemporalConstraint temporalConstraint, List filters,List contexts) + throws Exception; } diff --git a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java index 08ee0c1..c7336e4 100644 --- a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java @@ -271,7 +271,7 @@ public class AccountingPersistenceQuery implements AccountingPersistenceBackendQ Class> clz, TemporalConstraint temporalConstraint, List filters, String key) throws Exception { - // TODO Auto-generated method stub + return AccountingPersistenceBackendQueryFactory.getInstance() .getFilterValues(clz, temporalConstraint, filters, key); @@ -281,17 +281,17 @@ public class AccountingPersistenceQuery implements AccountingPersistenceBackendQ public JSONObject getUsageValue(Class> clz, TemporalConstraint temporalConstraint, Filter applicant) throws Exception { - // TODO Auto-generated method stub + return AccountingPersistenceBackendQueryFactory.getInstance() .getUsageValue(clz, temporalConstraint, applicant); } - + /*New task for quota*/ @Override public List getUsageValueQuota(Class> clz, TemporalConstraint temporalConstraint, List listUsage) throws Exception { - // TODO Auto-generated method stub + return AccountingPersistenceBackendQueryFactory.getInstance() .getUsageValueQuota(clz, temporalConstraint, listUsage); } @@ -300,10 +300,55 @@ public class AccountingPersistenceQuery implements AccountingPersistenceBackendQ public List getUsageValueQuotaTotal(Class> clz, TemporalConstraint temporalConstraint, List listUsage) throws Exception { - // TODO Auto-generated method stub + return AccountingPersistenceBackendQueryFactory.getInstance() .getUsageValueQuotaTotal(clz, temporalConstraint, listUsage); } - + + + + @Override + public SortedMap> getContextTimeSeries( + Class> clz, + TemporalConstraint temporalConstraint, List filters,List contexts) + throws Exception { + + return AccountingPersistenceBackendQueryFactory.getInstance() + .getContextTimeSeries(clz, temporalConstraint, filters, contexts); + } + + + public SortedMap> getContextTimeSeries( + Class> clz, + TemporalConstraint temporalConstraint, List filters, + List contexts, boolean pad) + throws DuplicatedKeyFilterException, + Exception { + SortedMap> got; + got = AccountingPersistenceBackendQueryFactory.getInstance() + .getContextTimeSeries(clz, temporalConstraint, filters, contexts); + int count = got.size(); + Filter firstRemovalKey = null; + for(Filter nf : got.keySet()){ + if(--count>=0){ + if(pad){ + padMap(got.get(nf), temporalConstraint); + + } + }else{ + if(firstRemovalKey==null){ + firstRemovalKey = nf; + }else{ + break; + } + } + } + if(firstRemovalKey!=null){ + return got.subMap(got.firstKey(), firstRemovalKey); + } + return got; + } + + }