/**
* 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
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.webui.cris.components.statistics;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.dspace.app.cris.discovery.CrisSearchService;
import org.dspace.app.cris.statistics.CrisSolrLogger;
import org.dspace.app.cris.statistics.bean.PieStatisticBean;
import org.dspace.app.cris.statistics.bean.StatisticDatasBeanRow;
import org.dspace.app.cris.statistics.bean.TwoKeyMap;
import org.dspace.content.Bitstream;
import org.dspace.content.DSpaceObject;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.discovery.SearchServiceException;
import org.dspace.discovery.SolrServiceImpl;
import org.dspace.statistics.ObjectCount;
import org.dspace.statistics.SolrLogger;
public class StatBitstreamTopObjectComponent extends StatTopObjectComponent
{
private static final String CUSTOM_FROMFIELD = "ORIGINAL_mvuntokenized";
private static final Logger log = Logger
.getLogger(StatBitstreamTopObjectComponent.class);
private CrisSearchService crisSearchService;
public StatBitstreamTopObjectComponent()
{
setRelationObjectType(Constants.BITSTREAM);
}
@Override
public TwoKeyMap getLabels(Context context, String type) throws SQLException
{
TwoKeyMap labels = new TwoKeyMap();
PieStatisticBean myvalue = (PieStatisticBean) statisticDatasBeans
.get("top").get(type).get("id");
if (myvalue != null)
{
if (myvalue.getLimitedDataTable() != null)
{
for (StatisticDatasBeanRow row : myvalue.getLimitedDataTable())
{
Bitstream bitstream = Bitstream.find(context,
Integer.parseInt(row.getLabel()));
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery(getFromField() +":"+ Constants.BITSTREAM + "-"+ bitstream.getID());
try
{
QueryResponse solrQueryResponse = crisSearchService.search(solrQuery);
for (SolrDocument doc : solrQueryResponse.getResults())
{
labels.addValue(row.getLabel(), "handle", doc.getFieldValue("handle"));
}
}
catch (SearchServiceException e)
{
log.error(e.getMessage(), e);
}
if (bitstream != null)
{
labels.addValue(type, row.getLabel(), bitstream);
}
}
}
}
return labels;
}
public void setCrisSearchService(CrisSearchService crisDiscoveryService)
{
this.crisSearchService = crisDiscoveryService;
}
@Override
public String getFromField()
{
if(super.getFromField()==null) {
return CUSTOM_FROMFIELD;
}
return super.getFromField();
}
@Override
public String getMode()
{
return DOWNLOAD;
}
}