/** * $Id: StatisticsBSAdapter.java 4405 2009-10-07 08:35:32Z mdiggory $ * $URL: https://scm.dspace.org/svn/repo/dspace/tags/dspace-1.6.2/dspace-stats/src/main/java/org/dspace/statistics/content/StatisticsBSAdapter.java $ * ************************************************************************* * Copyright (c) 2002-2009, DuraSpace. All rights reserved * Licensed under the DuraSpace Foundation License. * * A copy of the DuraSpace License has been included in this * distribution and is available at: http://scm.dspace.org/svn/repo/licenses/LICENSE.txt */ package org.dspace.statistics.content; import java.util.ArrayList; import java.util.List; import org.apache.solr.client.solrj.SolrServerException; import org.dspace.content.Item; import org.dspace.core.Constants; import org.dspace.statistics.SolrLogger; import org.dspace.statistics.content.filter.StatisticsFilter; /** * User: @author kevinvandevelde at atmire.com (kevin at atmire.com) * Date: 20-mei-2009 * Time: 16:44:29 * Class that will hold the data needed to show * statistical data in the browse, search pages */ public class StatisticsBSAdapter { private boolean displayItemViews; private boolean displayBitstreamViews; private boolean displayTotalViews; private List<StatisticsFilter> filters; public static final int ITEM_VISITS = 0; public static final int BITSTREAM_VISITS = 1; public static final int TOTAL_VISITS = 2; public StatisticsBSAdapter() { displayItemViews = false; displayBitstreamViews = false; filters = new ArrayList<StatisticsFilter>(); } /** * Returns the number of visits for the item, * depending on the visitype it can either be item, bitstream, total, ... * @param visitType the type of visits we want, from the item, bitstream, total * @param item the item from which we need our visits * @return the number of visits * @throws SolrServerException .... */ public long getNumberOfVisits(int visitType, Item item) throws SolrServerException { switch (visitType){ case ITEM_VISITS: return SolrLogger.queryTotal("type: " + Constants.ITEM + " AND id: " + item.getID(), resolveFilterQueries()).getCount(); case BITSTREAM_VISITS: return SolrLogger.queryTotal("type: " + Constants.BITSTREAM + " AND owningItem: " + item.getID(), resolveFilterQueries()).getCount(); case TOTAL_VISITS: return getNumberOfVisits(ITEM_VISITS, item) + getNumberOfVisits(BITSTREAM_VISITS, item); } return -1; } private String resolveFilterQueries(){ String out = ""; for (int i = 0; i < filters.size(); i++) { StatisticsFilter statisticsFilter = filters.get(i); out += statisticsFilter.toQuery(); if(i != 0 && (i != filters.size() -1)) out += " AND "; } return out; } /////////////////////// // GETTERS & SETTERS // /////////////////////// public boolean isDisplayTotalViews() { return displayTotalViews; } public void setDisplayTotalViews(boolean displayTotalViews) { this.displayTotalViews = displayTotalViews; } public boolean isDisplayItemViews() { return displayItemViews; } public void setDisplayItemViews(boolean displayItemViews) { this.displayItemViews = displayItemViews; } public boolean isDisplayBitstreamViews() { return displayBitstreamViews; } public void setDisplayBitstreamViews(boolean displayBitstreamViews) { this.displayBitstreamViews = displayBitstreamViews; } public List<StatisticsFilter> getFilters() { return filters; } public void addFilter(StatisticsFilter filter){ this.filters.add(filter); } public void setFilters(List<StatisticsFilter> filters) { this.filters = filters; } }