Interface AccountingPersistenceBackendQuery

All Known Implementing Classes:
AccountingPersistenceQuery

public interface AccountingPersistenceBackendQuery
Author:
Luca Frosini (ISTI - CNR)
  • Field Details

  • Method Details

    • getScopeToQuery

      static String getScopeToQuery()
    • prepareConnection

      void prepareConnection(AccountingPersistenceBackendQueryConfiguration configuration) throws Exception
      Throws:
      Exception
    • setRequestedRecords

      void setRequestedRecords(Class<? extends org.gcube.documentstore.records.AggregatedRecord<?,?>> clz)
      Parameters:
      clz - the Usage Record Class of interest Required
    • setTemporalConstraint

      void setTemporalConstraint(TemporalConstraint temporalConstraint)
      Parameters:
      temporalConstraint - the TemporalConstraint (interval and aggregation) Required
    • setContexts

      void setContexts(Set<String> contexts)
      Parameters:
      contexts - the list of context to use as filter If null or empty list get all data for the interested Record Class with the applying temporal constraint with no contexts constraint. The contexts are evaluated in OR.
    • setFilters

      void setFilters(Collection<? extends Filter> filters)
      Parameters:
      filters - list of filter to obtain the results. If null or empty list get all data for the interested Record Class with the applying temporal constraint. All Filter must have not null and not empty key and value. The filters must be related to different keys and are in AND. If the list contains more than one filter with the same key an Exception is thrown when trying to query.
    • getTimeSeries

      SortedMap<Calendar,Info> getTimeSeries() throws Exception
      Query the persistence obtaining a Map where the date is the key and the #Info is the value. The result is relative to an Usage Record Type, respect a TemporalConstraint and can be applied one or more filters.
      Returns:
      the Map containing for each date in the required interval the requested data
      Throws:
      Exception
    • getContextTimeSeries

      SortedMap<Filter,SortedMap<Calendar,Info>> getContextTimeSeries() throws Exception
      Return a SortedMap containing the TimeSeries for each context.
      Returns:
      a SortedMap containing the TimeSeries for each context.
      Throws:
      Exception
    • getTopValues

      SortedMap<NumberedFilter,SortedMap<Calendar,Info>> getTopValues(String topKey, String orderingProperty, Integer limit) throws Exception
      Return a SortedMap containing the TimeSeries for top values for a certain key taking in account all Filters. The values are ordered from the most occurred value.
      Parameters:
      topKey - the key to obtain top values
      orderingProperty -
      Returns:
      a SortedMap
      Throws:
      Exception
    • close

      void close() throws Exception
      Close the connection to persistence
      Throws:
      Exception - if the close fails
    • getFilterValues

      SortedSet<NumberedFilter> getFilterValues(String key) throws Exception
      Throws:
      Exception
    • getFilterValues

      SortedSet<NumberedFilter> getFilterValues(String key, Integer limit) throws Exception
      Throws:
      Exception
    • getRecord

      org.gcube.documentstore.records.Record getRecord(String recordId, String type) throws Exception
      Throws:
      Exception
    • getSpaceTimeSeries

      SortedMap<Filter,SortedMap<Calendar,Info>> getSpaceTimeSeries(Set<String> dataTypes) throws Exception
      Throws:
      Exception
    • getUsageValueQuotaTotal

      List<UsageValue> getUsageValueQuotaTotal(List<UsageValue> listUsage) throws Exception
      getUsageValueQuotaTotal Example to require 2 different quota (lucio.lelii for service and alessandro.pieve for storage) Input: [ TotalFilters [ clz=class org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord, temporalConstraint=StartTime : 2015-05-01 11:42:34:515 UTC (1430480554515 millis), EndTime : 2016-11-09 11:42:34:515 UTC (1478691754515 millis), Aggregated DAILY, totalFilters=[ Filters [filters=[ { "consumerId" : "lucio.lelii" }, { "serviceClass" : "DataAccess" }, { "serviceName" : "CkanConnector" } ], d=null, orderingProperty=null], Filters [filters=[ { "consumerId" : "lucio.lelii" }, { "serviceClass" : "VREManagement" } ], d=null, orderingProperty=null] ], d=null, orderingProperty=null] ] Output: [ TotalFilters [ clz=class org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord, temporalConstraint=StartTime : 2015-05-01 11:42:34:515 UTC (1430480554515 millis), EndTime : 2016-11-09 11:42:34:515 UTC (1478691754515 millis), Aggregated DAILY, totalFilters=[ Filters [filters=[ { "consumerId" : "lucio.lelii" }, { "serviceClass" : "DataAccess" }, { "serviceName" : "CkanConnector" } ], d=1.0, orderingProperty=operationCount], Filters [filters=[ { "consumerId" : "lucio.lelii" }, { "serviceClass" : "VREManagement" } ], d=1.0, orderingProperty=operationCount] ], d=2.0, orderingProperty=null] ]
      Parameters:
      listUsage -
      Returns:
      List
      Throws:
      Exception
    • isConnectionActive

      boolean isConnectionActive() throws Exception
      Throws:
      Exception