/**
* 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.submit.lookup;
import gr.ekt.bte.core.Record;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.HttpException;
import org.dspace.core.Context;
/**
* @author Andrea Bollini
* @author Kostas Stamatis
* @author Luigi Andrea Pascarelli
* @author Panagiotis Koutsourakis
*/
public class ArXivOnlineDataLoader extends NetworkSubmissionLookupDataLoader
{
private ArXivService arXivService = new ArXivService();
private boolean searchProvider = true;
public void setArXivService(ArXivService arXivService)
{
this.arXivService = arXivService;
}
@Override
public List<String> getSupportedIdentifiers()
{
return Arrays.asList(new String[] { ARXIV, DOI });
}
public void setSearchProvider(boolean searchProvider)
{
this.searchProvider = searchProvider;
}
@Override
public boolean isSearchProvider()
{
return searchProvider;
}
@Override
public List<Record> getByIdentifier(Context context,
Map<String, Set<String>> keys) throws HttpException, IOException
{
List<Record> results = new ArrayList<Record>();
if (keys != null)
{
Set<String> dois = keys.get(DOI);
Set<String> arxivids = keys.get(ARXIV);
List<Record> items = new ArrayList<Record>();
if (dois != null && dois.size() > 0)
{
items.addAll(arXivService.getByDOIs(dois));
}
if (arxivids != null && arxivids.size() > 0)
{
for (String arxivid : arxivids)
{
items.add(arXivService.getByArXivIDs(arxivid));
}
}
for (Record item : items)
{
results.add(convertFields(item));
}
}
return results;
}
@Override
public List<Record> search(Context context, String title, String author,
int year) throws HttpException, IOException
{
List<Record> results = new ArrayList<Record>();
List<Record> items = arXivService.searchByTerm(title, author, year);
for (Record item : items)
{
results.add(convertFields(item));
}
return results;
}
}