Java tutorial
/** * 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.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.dspace.app.cris.integration.statistics.StatComponentsService; import org.dspace.app.cris.model.CrisConstants; import org.dspace.app.cris.statistics.bean.TreeKeyMap; import org.dspace.app.cris.statistics.bean.TwoKeyMap; import org.dspace.app.webui.cris.components.BeanFacetComponent; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.statistics.ObjectCount; import org.dspace.statistics.SolrLogger; public class StatSelectedObjectComponent<T extends DSpaceObject> extends StatsComponent<T> { protected static String STATS_QUERY = "id:{0}"; @Override public TreeKeyMap query(String id, HttpSolrServer solrServer) throws Exception { statisticDatasBeans = new TreeKeyMap(); if (id != null && !id.equals("") && StatComponentsService.getYearsQuery() != null) { solrServer.setMaxRetries(0); SolrQuery solrQuery = new SolrQuery(); _prepareBasicQuery(solrQuery, StatComponentsService.getYearsQuery()); if (StatComponentsService.isExcludeBot()) { solrQuery.addFilterQuery("-isBot:true"); } Integer relationType = getRelationObjectType(); if (relationType == null) { relationType = CrisConstants.getEntityType(getRelationObjectClass().newInstance()); } solrQuery.addFilterQuery("type:" + relationType); String query = STATS_QUERY; if (getBean() != null) { String beanQuery = getBean().getQuery(); query += (beanQuery != null && !beanQuery.isEmpty()) ? beanQuery : ""; for (String filter : getBean().getFilters()) { solrQuery.addFilterQuery(filter); } } solrQuery.setQuery(MessageFormat.format(query, id)); if (getBean() instanceof BeanFacetComponent) { BeanFacetComponent beanFacet = (BeanFacetComponent) getBean(); solrQuery.setFacet(true); solrQuery.addFacetQuery(beanFacet.getFacetQuery()); solrQuery.addFacetField(beanFacet.getFacetField()); } solrResponse = solrServer.query(solrQuery); buildPageResultModules(StatComponentsService._SELECTED_OBJECT); } else { throw new Exception("Item Id not valid"); } return statisticDatasBeans; } @Override public TwoKeyMap getLabels(Context context, String type) throws SQLException { // none return new TwoKeyMap(); } @Override public Map<String, ObjectCount[]> queryFacetDate(SolrLogger statsLogger, DSpaceObject object, String dateType, String dateStart, String dateEnd, int gap) throws SolrServerException { Map<String, ObjectCount[]> map = new HashMap<String, ObjectCount[]>(); map.put(getMode(), statsLogger.queryFacetDate( "search.uniqueid:" + object.getType() + "-" + object.getID() + " AND time:[* TO NOW/" + dateType + dateEnd + dateType + "]", null, 0, dateType, dateStart, dateEnd, gap, true)); return map; } @Override public String getMode() { return VIEW; } }