/** * 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.xoai.filter; import com.lyncode.xoai.dataprovider.core.ReferenceSet; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.solr.client.solrj.util.ClientUtils; import org.dspace.xoai.data.DSpaceItem; import org.dspace.xoai.filter.results.SolrFilterResult; import org.dspace.xoai.services.api.CollectionsService; import org.dspace.xoai.services.api.HandleResolver; /** * * @author Lyncode Development Team (dspace at lyncode dot com) */ public class DSpaceSetSpecFilter extends DSpaceFilter { private static final Logger log = LogManager.getLogger(DSpaceSetSpecFilter.class); private final String setSpec; private final HandleResolver handleResolver; private final CollectionsService collectionsService; public DSpaceSetSpecFilter(CollectionsService collectionsService, HandleResolver handleResolver, String spec) { this.collectionsService = collectionsService; this.handleResolver = handleResolver; this.setSpec = spec; } @Override public boolean isShown(DSpaceItem item) { for (ReferenceSet s : item.getSets()) if (s.getSetSpec().equals(setSpec)) return true; return false; } @Override public SolrFilterResult buildSolrQuery() { if (setSpec.startsWith("col_")) { try { return new SolrFilterResult("item.collections:" + ClientUtils.escapeQueryChars(setSpec)); } catch (Exception ex) { log.error(ex.getMessage(), ex); } } else if (setSpec.startsWith("com_")) { try { return new SolrFilterResult("item.communities:" + ClientUtils.escapeQueryChars(setSpec)); } catch (Exception e) { log.error(e.getMessage(), e); } } return new SolrFilterResult(); } }