/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.statistics.content; import org.dspace.statistics.Dataset; import org.dspace.statistics.content.filter.StatisticsFilter; import org.dspace.core.Context; import org.apache.solr.client.solrj.SolrServerException; import org.dspace.statistics.factory.StatisticsServiceFactory; import org.dspace.statistics.service.SolrLoggerService; import java.util.List; import java.util.ArrayList; import java.sql.SQLException; import java.io.IOException; import java.text.ParseException; /** * Abstract "factory" for statistical queries. * @author kevinvandevelde at atmire.com * Date: 23-feb-2009 * Time: 12:37:04 */ public abstract class StatisticsData { private Dataset dataset; private List<DatasetGenerator> datasetgenerators; private List<StatisticsFilter> filters; protected final SolrLoggerService solrLoggerService; /** Construct a blank query factory. */ protected StatisticsData() { datasetgenerators = new ArrayList<DatasetGenerator>(2); filters = new ArrayList<StatisticsFilter>(); solrLoggerService = StatisticsServiceFactory.getInstance().getSolrLoggerService(); } /** * Wrap an existing Dataset in an unconfigured query factory. * * @param dataset * statistics dataset */ protected StatisticsData(Dataset dataset) { this.dataset = dataset; datasetgenerators = new ArrayList<DatasetGenerator>(2); filters = new ArrayList<StatisticsFilter>(); solrLoggerService = StatisticsServiceFactory.getInstance().getSolrLoggerService(); } /** Augment the list of facets (generators). * * @param set * generator of statistics datasets */ public void addDatasetGenerator(DatasetGenerator set){ datasetgenerators.add(set); } /** Augment the list of filters. * * @param filter * statistics filter */ public void addFilters(StatisticsFilter filter){ filters.add(filter); } /** Return the current list of generators. * * @return list of dataset generators */ public List<DatasetGenerator> getDatasetGenerators() { return datasetgenerators; } /** Return the current list of filters. * * @return list of dataset filters */ public List<StatisticsFilter> getFilters() { return filters; } /** Return the existing query result if there is one. * * @return dataset existing query result dataset */ public Dataset getDataset() { return dataset; } /** Jam an existing query result in. * * @param dataset * statistics dataset */ public void setDataset(Dataset dataset) { this.dataset = dataset; } /** Run the accumulated query and return its results. * * @param context * The relevant DSpace Context. * @return accumulated query results * @throws SQLException * An exception that provides information on a database access error or other errors. * @throws SolrServerException * Exception from the Solr server to the solrj Java client. * @throws IOException * A general class of exceptions produced by failed or interrupted I/O operations. * @throws ParseException if the dataset cannot be parsed */ public abstract Dataset createDataset(Context context) throws SQLException, SolrServerException, IOException, ParseException; }