From b8ff04c4977f5923b19359a8d8d24807ba99ad75 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 8 Jul 2015 15:28:33 +0000 Subject: [PATCH] refs #166: Create accouting-analytics library https://support.d4science.org/issues/166 Implementing Library git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-analytics@117097 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../AccountingPersistenceQuery.java | 22 +++++++++++-- ...countingPersistenceQueryConfiguration.java | 12 +++++++ .../AccountingPersistenceQueryFactory.java} | 33 +++++++++---------- 3 files changed, 47 insertions(+), 20 deletions(-) rename src/main/java/org/gcube/accounting/analytics/{ResourceRecordQueryFactory.java => persistence/AccountingPersistenceQueryFactory.java} (53%) 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 2921ca0..32962f9 100644 --- a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQuery.java @@ -3,10 +3,28 @@ */ package org.gcube.accounting.analytics.persistence; +import java.util.List; + +import org.gcube.accounting.analytics.Filter; +import org.gcube.accounting.analytics.Info; +import org.gcube.accounting.analytics.TemporalConstraint; +import org.gcube.accounting.datamodel.UsageRecord; + /** * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * */ -public class AccountingPersistenceQuery { - +public abstract class AccountingPersistenceQuery { + + protected abstract void prepareConnection(AccountingPersistenceQueryConfiguration configuration) throws Exception; + + protected abstract List reallyQuery(Class usageRecordType, + TemporalConstraint temporalConstraint, List filters) throws Exception; + + public List query(Class usageRecordType, + TemporalConstraint temporalConstraint, List filters) throws Exception{ + return reallyQuery(usageRecordType, temporalConstraint, filters); + } + + public abstract void close() throws Exception; } diff --git a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryConfiguration.java b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryConfiguration.java index 9f00152..7e32a9e 100644 --- a/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryConfiguration.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryConfiguration.java @@ -3,6 +3,8 @@ */ package org.gcube.accounting.analytics.persistence; +import java.net.URI; + import org.gcube.accounting.persistence.AccountingPersistenceConfiguration; /** @@ -13,5 +15,15 @@ public class AccountingPersistenceQueryConfiguration extends AccountingPersisten protected final String SERVICE_ENDPOINT_NAME = "PersistenceQuery"; + public AccountingPersistenceQueryConfiguration(){ + super(); + } + public AccountingPersistenceQueryConfiguration(URI uri, String username, String password){ + super(uri, username, password); + } + + public AccountingPersistenceQueryConfiguration(String persistenceClassName) throws Exception{ + super(persistenceClassName); + } } diff --git a/src/main/java/org/gcube/accounting/analytics/ResourceRecordQueryFactory.java b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryFactory.java similarity index 53% rename from src/main/java/org/gcube/accounting/analytics/ResourceRecordQueryFactory.java rename to src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryFactory.java index 66ac5fe..8508f2e 100644 --- a/src/main/java/org/gcube/accounting/analytics/ResourceRecordQueryFactory.java +++ b/src/main/java/org/gcube/accounting/analytics/persistence/AccountingPersistenceQueryFactory.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.accounting.analytics; +package org.gcube.accounting.analytics.persistence; import java.util.HashMap; import java.util.Map; @@ -9,7 +9,6 @@ import java.util.ServiceLoader; import org.gcube.accounting.analytics.exception.NoAvailableScopeException; import org.gcube.accounting.analytics.exception.NoUsableAccountingPersistenceQueryFound; -import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; import org.gcube.common.scope.api.ScopeProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,24 +16,24 @@ import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ */ -public abstract class ResourceRecordQueryFactory { +public abstract class AccountingPersistenceQueryFactory { - private static Logger logger = LoggerFactory.getLogger(ResourceRecordQueryFactory.class); + private static Logger logger = LoggerFactory.getLogger(AccountingPersistenceQueryFactory.class); - private static Map resourceRecordQueries; + private static Map accountingPersistenceQueries; static { - resourceRecordQueries = new HashMap(); + accountingPersistenceQueries = new HashMap(); } - public synchronized static ResourceRecordQuery getInstance() throws NoAvailableScopeException, NoUsableAccountingPersistenceQueryFound { + public synchronized static AccountingPersistenceQuery getInstance() throws NoAvailableScopeException, NoUsableAccountingPersistenceQueryFound { String scope = ScopeProvider.instance.get(); if(scope==null){ new NoAvailableScopeException(); } - ResourceRecordQuery resourceRecordQuery = resourceRecordQueries.get(scope); - if(resourceRecordQuery==null){ + AccountingPersistenceQuery accountingPersistenceQuery = accountingPersistenceQueries.get(scope); + if(accountingPersistenceQuery==null){ try { ServiceLoader serviceLoader = ServiceLoader.load(AccountingPersistenceQuery.class); @@ -43,11 +42,9 @@ public abstract class ResourceRecordQueryFactory { String foundClassName = found.getClass().getSimpleName(); logger.debug("Testing {}", foundClassName); - //AccountingPersistenceQueryConfiguration configuration = AccountingPersistenceQueryConfiguration.getConfiguration(foundClassName); - //found.prepareConnection(configuration); - - resourceRecordQuery = new ResourceRecordQuery(found); - + AccountingPersistenceQueryConfiguration configuration = new AccountingPersistenceQueryConfiguration(foundClassName); + found.prepareConnection(configuration); + accountingPersistenceQuery = found; break; } catch (Exception e) { logger.debug(String.format("%s not initialized correctly. It will not be used", found.getClass().getSimpleName())); @@ -57,18 +54,18 @@ public abstract class ResourceRecordQueryFactory { throw new NoUsableAccountingPersistenceQueryFound(); } - if(resourceRecordQuery==null){ + if(accountingPersistenceQuery==null){ throw new NoUsableAccountingPersistenceQueryFound(); } - resourceRecordQueries.put(scope, resourceRecordQuery); + accountingPersistenceQueries.put(scope, accountingPersistenceQuery); } - return resourceRecordQuery; + return accountingPersistenceQuery; } - protected ResourceRecordQueryFactory(){ + protected AccountingPersistenceQueryFactory(){ }