/**
* 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.app.webui.discovery;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Collection;
import org.dspace.content.Community;
import org.dspace.content.DSpaceObject;
import org.dspace.core.Context;
import org.dspace.core.LogManager;
import org.dspace.discovery.DiscoverQuery;
import org.dspace.discovery.DiscoverResult;
import org.dspace.discovery.SearchServiceException;
import org.dspace.discovery.SearchUtils;
import org.dspace.discovery.configuration.DiscoveryConfiguration;
import org.dspace.discovery.configuration.DiscoverySearchFilterFacet;
import org.dspace.plugin.CollectionHomeProcessor;
import org.dspace.plugin.CommunityHomeProcessor;
import org.dspace.plugin.PluginException;
import org.dspace.plugin.SiteHomeProcessor;
public class SideBarFacetProcessor implements CollectionHomeProcessor,
CommunityHomeProcessor, SiteHomeProcessor
{
/** log4j category */
private static Logger log = Logger.getLogger(SideBarFacetProcessor.class);
@Override
public void process(Context context, HttpServletRequest request,
HttpServletResponse response, Community community)
throws PluginException, AuthorizeException
{
process(context, request, response, (DSpaceObject) community);
}
@Override
public void process(Context context, HttpServletRequest request,
HttpServletResponse response, Collection collection)
throws PluginException, AuthorizeException
{
process(context, request, response, (DSpaceObject) collection);
}
@Override
public void process(Context context, HttpServletRequest request,
HttpServletResponse response) throws PluginException,
AuthorizeException
{
process(context, request, response, (DSpaceObject) null);
}
private void process(Context context, HttpServletRequest request,
HttpServletResponse response, DSpaceObject scope)
{
DiscoverQuery queryArgs = DiscoverUtility.getDiscoverQuery(context,
request, scope, true);
queryArgs.setMaxResults(0);
DiscoverResult qResults;
try
{
qResults = SearchUtils.getSearchService().search(context, scope,
queryArgs);
request.setAttribute("discovery.fresults",
qResults.getFacetResults());
DiscoveryConfiguration discoveryConfiguration = SearchUtils
.getDiscoveryConfiguration(scope);
List<DiscoverySearchFilterFacet> availableFacet = discoveryConfiguration
.getSidebarFacets();
request.setAttribute("facetsConfig",
availableFacet != null ? availableFacet
: new ArrayList<DiscoverySearchFilterFacet>());
if (scope !=null)
{
request.setAttribute("discovery.searchScope",
"/handle/" + scope.getHandle());
}
}
catch (SearchServiceException e)
{
log.error(LogManager.getHeader(context,
"discovery-process-sidebar", "scope=" + scope));
}
}
}