From 2b923ddca07b40539fc335118436bbce834bcabc Mon Sep 17 00:00:00 2001 From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de> Date: Mon, 18 Mar 2019 10:38:05 +0100 Subject: [PATCH] added missing classes --- .../IdentifierListDelivererAbstract.java | 64 +++++++++++++ .../IdentifierListDelivererIDIOM.java | 53 +++++++++++ .../IdentifierListDelivererInterface.java | 11 +++ .../RecordListDelivererAbstract.java | 56 +++++++++++ .../middleware/RecordListDelivererIDIOM.java | 93 +++++++++++++++++++ .../RecordListDelivererInterface.java | 13 +++ 6 files changed, 290 insertions(+) create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererInterface.java create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java create mode 100644 oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java new file mode 100644 index 00000000..4847f03d --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java @@ -0,0 +1,64 @@ +package info.textgrid.middleware; + +import java.util.ArrayList; +import java.util.List; + +import info.textgrid.middleware.oaipmh.ListIdentifiersType; +import info.textgrid.middleware.oaipmh.RequestType; + +public abstract class IdentifierListDelivererAbstract implements IdentifierListDelivererInterface { + + protected boolean textgrid; + protected boolean dariah; + + public IdentifierListDelivererAbstract(boolean textgrid, boolean dariah) { + this.textgrid = textgrid; + this.dariah = dariah; + } + + @Override + public ListIdentifiersType processIdentifierList(String from, String to, String set, String resumptionToken) { + // TODO Auto-generated method stub + return null; + } + + public static ErrorHandler requestChecker(RequestType request) { + + ErrorHandler result = new ErrorHandler(); + + // Check if metadata prefix is existing and valid. + if (request.getMetadataPrefix() != null + && !request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX) + && !request.getMetadataPrefix().equals(TGConstants.METADATA_IDIOM_PREFIX)) { + result.setError(TGConstants.OAI_METADATA_FORMAT_ERROR, + "The value of the metadataPrefix: " + request.getMetadataPrefix() + + " is not supported by the item identified by the value of: " + + request.getIdentifier()); + } + + // Check if other params are existing, they shouldn't! + else { + + List<String> errorValues = new ArrayList<String>(); + + if (request.getResumptionToken() != null) { + errorValues.add("resumptionToken"); + } + if (request.getMetadataPrefix() == null) { + errorValues.add("metadataPrefix"); + } + if (request.getIdentifier() != null) { + errorValues.add("identifier"); + } + if(errorValues.size()>0) { + result.setError(TGConstants.OAI_BAD_ARGUMENT, "The request includes illegal arguments " + + "or is missing required arguments: " + errorValues); + } + + } + + return result; + } + + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java new file mode 100644 index 00000000..99309c69 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java @@ -0,0 +1,53 @@ +package info.textgrid.middleware; + +import java.util.Hashtable; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.classicmayan.tools.Queries; + +import info.textgrid.middleware.oaipmh.ListIdentifiersType; +import info.textgrid.middleware.oaipmh.ResumptionTokenType; + +public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstract{ + + static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); + + public IdentifierListDelivererIDIOM(boolean textgrid, boolean dariah) { + super(textgrid, dariah); + } + + public ListIdentifiersType processIdentifierList(String from, String to, String set, String resumptionToken) { + ListIdentifiersType lit = new ListIdentifiersType(); + List<String> artefactURIs; + + if(resumptionToken==null) { + artefactURIs = Queries.getArtefactList(0); + }else { + artefactURIs = Queries.getArtefactList(cursorCollector.get(resumptionToken)); + } + + long listSize = Queries.getAmountOfArtefacts(); + int i=0; + UUID uuid = UUID.randomUUID(); + String resTokenValue = uuid.toString(); + resumptionToken = uuid.toString(); + + for(String artefactURI : artefactURIs) { + RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false); + lit.getHeader().add(idiomRecord.getRecordById(artefactURI).getRecord().getHeader()); + } + + // Check the need for a resumption token! + ResumptionTokenType resTokenForResponse = OAIPMHUtillities.getResumptionToken( + listSize, resumptionToken, cursorCollector, resTokenValue, 100, i); + + if (resTokenForResponse != null) { + lit.setResumptionToken(resTokenForResponse); + } + + return lit; + } + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererInterface.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererInterface.java new file mode 100644 index 00000000..241d5676 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererInterface.java @@ -0,0 +1,11 @@ +package info.textgrid.middleware; + +import java.text.ParseException; + +import info.textgrid.middleware.oaipmh.ListIdentifiersType; + +public interface IdentifierListDelivererInterface { + + public ListIdentifiersType processIdentifierList(String from, String to, String set, String resumptionToken) throws ParseException; + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java new file mode 100644 index 00000000..99e77f95 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java @@ -0,0 +1,56 @@ +package info.textgrid.middleware; + +import java.util.ArrayList; +import java.util.List; + +import info.textgrid.middleware.oaipmh.RequestType; + +public abstract class RecordListDelivererAbstract implements RecordListDelivererInterface{ + + protected boolean textgrid; + protected boolean dariah; + + /** + * @param textgrid + * @param dariah + */ + + public RecordListDelivererAbstract(boolean textgrid, boolean dariah) { + this.textgrid = textgrid; + this.dariah = dariah; + } + + public static ErrorHandler requestChecker(RequestType request) { + + ErrorHandler result = new ErrorHandler(); + + // Check if metadata prefix is existing and valid. + if (request.getMetadataPrefix() != null + && !request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX) + && !request.getMetadataPrefix().equals(TGConstants.METADATA_IDIOM_PREFIX)) { + result.setError(TGConstants.OAI_METADATA_FORMAT_ERROR, + "The value of the metadataPrefix: " + request.getMetadataPrefix() + + " is not supported by the item identified by the value of: " + + request.getIdentifier()); + } + + // Check if other params are existing, they shouldn't! + else { + List<String> errorValues = new ArrayList<String>(); + + if (request.getMetadataPrefix() == null) { + errorValues.add("metadataPrefix"); + } + if (request.getIdentifier() != null) { + errorValues.add("identifier"); + } + if(errorValues.size()>0) { + result.setError(TGConstants.OAI_BAD_ARGUMENT, "The request includes illegal arguments " + + "or is missing required arguments: " + errorValues); + } + + } + + return result; + } +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java new file mode 100644 index 00000000..c8f22eea --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -0,0 +1,93 @@ +package info.textgrid.middleware; + + +import java.util.Hashtable; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.apache.commons.logging.LogFactory; +import org.apache.jena.atlas.logging.Log; +import org.classicmayan.tools.Queries; + +import info.textgrid.middleware.oaipmh.HeaderType; +import info.textgrid.middleware.oaipmh.ListRecordsType; +import info.textgrid.middleware.oaipmh.MetadataType; +import info.textgrid.middleware.oaipmh.RecordType; +import info.textgrid.middleware.oaipmh.ResumptionTokenType; + +public class RecordListDelivererIDIOM extends RecordListDelivererAbstract{ + + private static org.apache.commons.logging.Log log = LogFactory.getLog(OAIPMHImpl.class); + static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); + //private int searchResponseSize; + + private OAI_ESClient oaiEsClient; + + public RecordListDelivererIDIOM(boolean textgrid, boolean dariah) { + super(textgrid, dariah); + // TODO Auto-generated constructor stub + } + + @Override + public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) { + + MetadataType metadata = new MetadataType(); + RecordType record = new RecordType(); + + record.setMetadata(metadata); + recordList.getRecord().add(record); + + return null; + } + + @Override + public ListRecordsType getRecords(String from, String to, String set, String resumptionToken) { + + ListRecordsType recordList = new ListRecordsType(); + List<String> artefactURIs; + + if(resumptionToken==null) { + artefactURIs = Queries.getArtefactList(0); + }else { + artefactURIs = Queries.getArtefactList(cursorCollector.get(resumptionToken)); + } + + long listSize = Queries.getAmountOfArtefacts(); + int i=0; + UUID uuid = UUID.randomUUID(); + String resTokenValue = uuid.toString(); + resumptionToken = uuid.toString(); + + for(String artefactURI : artefactURIs) { + + RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false); + recordList.getRecord().add(idiomRecord.getRecordById(artefactURI).getRecord()); + i++; + } + + // Check the need for a resumption token! + ResumptionTokenType resTokenForResponse = OAIPMHUtillities.getResumptionToken( + listSize, resumptionToken, cursorCollector, resTokenValue, 100, i); + + if (resTokenForResponse != null) { + recordList.setResumptionToken(resTokenForResponse); + } + return recordList; + } + + @Override + public HeaderType setHeader(String set, String headerIdentifier) { + // TODO Auto-generated method stub + return null; + } + + public OAI_ESClient getOaiEsClient() { + return oaiEsClient; + } + + public void setOaiEsClient(OAI_ESClient oaiEsClient) { + this.oaiEsClient = oaiEsClient; + } + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java new file mode 100644 index 00000000..9ab30c61 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java @@ -0,0 +1,13 @@ +package info.textgrid.middleware; + +import info.textgrid.middleware.oaipmh.HeaderType; +import info.textgrid.middleware.oaipmh.ListRecordsType; +import info.textgrid.middleware.oaipmh.RecordType; + +public interface RecordListDelivererInterface { + + public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier); + public ListRecordsType getRecords(String from, String to, String set, String resumptionToken); + public HeaderType setHeader(String set, String headerIdentifier); + +} -- GitLab