package org.datacite.conres.service.impl;
import com.google.common.base.Charsets;
import org.datacite.conres.model.Model;
import org.datacite.conres.service.SearchService;
import javax.ws.rs.core.MediaType;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class MockSearchServiceImpl implements SearchService {
public static final String TEST_PREFIX = "10.5072";
public static final String TEST_DOI = "10.5072/1";
public static final String TEST_DOI_NON_EXISTENT = "10.5072/2";
public static final String TEST_DOI_NO_XML = "10.5072/3";
private static final String TEST_XML_STR = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<resource xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xsi:schemaLocation=\"http://datacite.org/schema/kernel-2.2 http://schema.datacite.org/meta/kernel-2.2/metadata.xsd\"" +
" xmlns=\"http://datacite.org/schema/kernel-2.2\"" +
" metadataVersionNumber=\"0\" lastMetadataUpdate=\"2011-11-10\">" +
"<identifier identifierType=\"DOI\">10.5072/1</identifier>" +
"<creators>" +
"<creator>" +
"<creatorName>University of Manchester. Cathie Marsh Centre for" +
" Census and Survey Research. ESDS Government" +
"</creatorName>" +
"</creator>" +
"</creators>" +
"<titles>" +
"<title>British Crime Survey 2007-2008: Unrestricted Access Teaching" +
" Dataset" +
"</title>" +
"</titles>" +
"<publisher>UK Data Archive, University of Essex</publisher>" +
"<publicationYear>2011</publicationYear>" +
"</resource>";
public static byte[] TEST_XML;
public static final MediaType APPLICATION_PDF = new MediaType("application","pdf");
public static URI HTTP_EXAMPLE_COM_A_PDF;
static {
try {
HTTP_EXAMPLE_COM_A_PDF = new URI("http://example.com/a.pdf");
} catch (URISyntaxException e) {
HTTP_EXAMPLE_COM_A_PDF = null;
}
TEST_XML = TEST_XML_STR.getBytes(Charsets.UTF_8);
}
private byte[] getXml(String doi) {
if (doi.equals(TEST_DOI))
return TEST_XML;
else if (doi.equals(TEST_DOI_NO_XML))
return null;
else
return null;
}
private Map<MediaType, URI> getMedia() {
Map<MediaType, URI> media = new HashMap<MediaType, URI>();
media.put(APPLICATION_PDF, HTTP_EXAMPLE_COM_A_PDF);
try {
media.put(new MediaType("image","gif"), new URI("http://example.com/a.gif"));
} catch (URISyntaxException e) {
}
return media;
}
@Override
public Model getMetadata(String doi, String contextPath, String acceptHeader) {
if (doi.equals(TEST_DOI_NON_EXISTENT))
return null;
else
return new Model(doi,
getXml(doi),
getMedia(),
contextPath,
"DataCite member",
"DataCite datacentre",
null,
null,
new Date());
}
}