/**
* 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.sherpa.submit;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.dspace.app.sherpa.SHERPAResponse;
import org.dspace.app.sherpa.SHERPAService;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.core.LogManager;
public class SHERPASubmitService
{
private SHERPAService sherpaService;
private SHERPASubmitConfigurationService configuration;
/** log4j logger */
private static Logger log = Logger.getLogger(SHERPASubmitService.class);
public void setConfiguration(SHERPASubmitConfigurationService configuration)
{
this.configuration = configuration;
}
public void setSherpaService(SHERPAService sherpaService)
{
this.sherpaService = sherpaService;
}
public SHERPAResponse searchRelatedJournals(Context context, Item item)
{
Set<String> issns = getISSNs(context, item);
if (issns == null || issns.size() == 0)
{
return null;
}
else
{
return sherpaService.searchByJournalISSN(StringUtils.join(issns, ","));
}
}
public SHERPAResponse searchRelatedJournalsByISSN(String issn)
{
return sherpaService.searchByJournalISSN(issn);
}
public Set<String> getISSNs(Context context, Item item)
{
Set<String> issns = new LinkedHashSet<String>();
if (configuration.getIssnItemExtractors() == null)
{
log.warn(LogManager.getHeader(context, "searchRelatedJournals",
"no issnItemExtractors defined"));
return null;
}
for (ISSNItemExtractor extractor : configuration.getIssnItemExtractors())
{
List<String> eIssns = extractor.getISSNs(context, item);
if (eIssns != null)
{
for (String eIssn : eIssns)
{
issns.add(eIssn.trim());
}
}
}
return issns;
}
public boolean hasISSNs(Context context, Item item)
{
Set<String> issns = getISSNs(context, item);
if (issns == null || issns.size() == 0)
{
return false;
}
else
{
return true;
}
}
}