From 40fa85e4b4f27463d18e6a2f9e81b3e574abe24d Mon Sep 17 00:00:00 2001 From: mbrodhu <brodhun@sub.uni-goettingen.de> Date: Wed, 2 Nov 2016 15:42:30 +0100 Subject: [PATCH] restoken and set not with restoken --- .../middleware/IdentifierListDeliverer.java | 14 ++- .../info/textgrid/middleware/OAIPMHImpl.java | 102 ++++++++++++++++-- .../info/textgrid/middleware/OaiPmhTest.java | 2 +- .../src/main/webapp/WEB-INF/beans.xml | 2 +- 4 files changed, 102 insertions(+), 18 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java index 17ae30dc..8e4d06be 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java @@ -175,7 +175,7 @@ public class IdentifierListDeliverer { } if (this.dariah) { - System.out.println("BLA"); + System.out.println("BLARIAH"); datestamp = hit.getFields().get(dateOfObjectCreation).getValue().toString(); try { @@ -282,12 +282,16 @@ public class IdentifierListDeliverer { public boolean requestChecker(RequestType request) { boolean requestCheck; - if (request.getMetadataPrefix() == null || request.getIdentifier() != null) { + if (request.getResumptionToken() != null && (request.getMetadataPrefix() != null) || request.getSet() != null ){ requestCheck = false; - } else { - requestCheck = true; } - + else { + if (request.getMetadataPrefix() == null || request.getIdentifier() != null) { + requestCheck = false; + } else { + requestCheck = true; + } + } return requestCheck; } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java index d60ec450..0e389dc4 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -284,9 +284,55 @@ public class OAIPMHImpl implements OAIPMHProducer { List<String> errorValues = new ArrayList<String>(); JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai); - if (identifierList.requestChecker(request)) { - if (!request.getMetadataPrefix().equals( - TGConstants.METADATA_DC_PREFIX)) { + //if (identifierList.requestChecker(request)) { + + if(request.getResumptionToken() != null && request.getMetadataPrefix() != null){ + errorValues.add("MetadataPrefix"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if(request.getResumptionToken() == null && request.getSet() != null){ + errorValues.add("Set"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if(request.getResumptionToken() == null && request.getMetadataPrefix() == null){ + errorValues.add("MetadataPrefix"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX )){ + error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR).setValue("The value of the metadataPrefix: " + + request.getMetadataPrefix() + + " is not supported by the item identified by the value of: " + + request.getIdentifier()); + oai.getError().add(error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR)); + } + else{ + System.out.println("bla1000"); + lit = identifierList.processIdentifierList(request.getFrom(), request.getUntil(), request.getSet(), request.getResumptionToken()); + if (lit != null) { + System.out.println("bla2000"); + oai.setListIdentifiers(lit); + } else { + error.setError(TGConstants.OAI_NO_RECORD_MATCH).setValue("The combination of the values " + + request.getFrom() + " and " + + request.getUntil() + + " results in an empty list"); + oai.getError().add(error.setError(TGConstants.OAI_NO_RECORD_MATCH)); + } + } + + //} + + + + /*if(request.getResumptionToken() != null && (request.getSet() != null || request.getMetadataPrefix() != null)){ + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue( + "The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + } + else { + + + if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX )) { try { error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR).setValue("The value of the metadataPrefix: " + request.getMetadataPrefix() @@ -301,12 +347,10 @@ public class OAIPMHImpl implements OAIPMHProducer { } else { try { lit = identifierList.processIdentifierList(request.getFrom(), request.getUntil(), request.getSet(), request.getResumptionToken()); - if (lit != null) { - //lit = identifierList.processIdentifierList(request.getFrom(), request.getUntil(),request.getSet(), request.getResumptionToken()); + if (lit != null) { oai.setListIdentifiers(lit); } else { - error.setError(TGConstants.OAI_NO_RECORD_MATCH) - .setValue("The combination of the values " + error.setError(TGConstants.OAI_NO_RECORD_MATCH).setValue("The combination of the values " + request.getFrom() + " and " + request.getUntil() + " results in an empty list"); @@ -318,6 +362,9 @@ public class OAIPMHImpl implements OAIPMHProducer { log.debug(e); } } + + } + } else { if (request.getIdentifier() != null) { errorValues.add("identifier"); @@ -330,7 +377,7 @@ public class OAIPMHImpl implements OAIPMHProducer { + "or missing requiered arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); - } + }*/ return oaipmhRoot; } @@ -420,8 +467,41 @@ public class OAIPMHImpl implements OAIPMHProducer { ListRecordsType listRecords = new ListRecordsType(); //RecordListDeliverer recordList = new RecordListDeliverer(oaiEsClient,// TGConstants.TGFields); JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai); - - if (recordList.requestChecker(request)) { + + if(request.getResumptionToken() != null && request.getMetadataPrefix() != null){ + errorValues.add("MetadataPrefix"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if(request.getResumptionToken() == null && request.getSet() != null){ + errorValues.add("Set"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if(request.getResumptionToken() == null && request.getMetadataPrefix() == null){ + errorValues.add("MetadataPrefix"); + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments or missing requiered arguments:" + errorValues); + oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); + }else if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX )){ + error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR).setValue("The value of the metadataPrefix: " + + request.getMetadataPrefix() + + " is not supported by the item identified by the value of: " + + request.getIdentifier()); + oai.getError().add(error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR)); + } + else{ + listRecords = recordList.getRecords(request.getFrom(), request.getUntil(), request.getSet(), request.getResumptionToken()); + if (listRecords != null) { + oai.setListRecords(listRecords); + } else { + error.setError(TGConstants.OAI_NO_RECORD_MATCH).setValue("The combination of the values " + + request.getFrom() + " and " + + request.getUntil() + + " results in an empty list"); + oai.getError().add(error.setError(TGConstants.OAI_NO_RECORD_MATCH)); + } + } + + + /*if (recordList.requestChecker(request)) { if (!request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)) { error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR).setValue( @@ -457,7 +537,7 @@ public class OAIPMHImpl implements OAIPMHProducer { + "arguments or is missing required arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); - } + }*/ return oaipmhRoot; } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java index 6bf2b7dd..577d5b08 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java @@ -402,7 +402,7 @@ public class OaiPmhTest { // cregId:hdl:6607/0000-0000-26A5-B // dariah:collection:6607/0000-0000-26A5-B - JAXBElement<OAIPMHType> r = this.request.getRequest("ListRecords", "","oai_dc", "", "", "", ""); + JAXBElement<OAIPMHType> r = this.request.getRequest("ListRecords", "","", "", "", "", "cXVlcnlUaGVuRmV0Y2g7NTs0MzpWWjY2NXdVdlJJS0N5R2NXMVVpMUZROzUyOmYzRmZjdXdVUnptOFFNbzI2ckU4OEE7NTA6ZjNGZmN1d1VSem04UU1vMjZyRTg4QTs0OTpmM0ZmY3V3VVJ6bThRTW8yNnJFODhBOzUxOmYzRmZjdXdVUnptOFFNbzI2ckU4OEE7MDs="); JAXB.marshal(r, System.out); System.out.println("-----------------------------------\n"); } diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index 06ca9d7f..08bfc5a1 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -124,7 +124,7 @@ <property name="repositoryObjectURIPrefix" value="${repositoryObjectURIPrefix}" /> <property name="identifierListFields" value="${identifierListFields}"></property> <property name="FieldForRange" value="${rangeField}" /> - <property name="identifierField" value="${identifierField}" /> + <property name="identifierField" value="${identifierField}" /> <property name="searchResponseSize" value="${searchResponseSize}" /> </bean> -- GitLab