diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java index a3229fe4c09ddbdb4499dea611c6de01e79bc0c8..1be5993c72d5000f56c7c73d6ef534b99a1ef0be 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java @@ -89,7 +89,8 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX) && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX) - && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX) + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) { result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR, "The value of the metadataPrefix " + request.getMetadataPrefix() + " is not supported by the item identified by the value of: " diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java index f4241cd52f204fb679a6b7fb5ed3f647b31a8101..779543b22710bc2b26f45244df25bccce974015f 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java @@ -19,6 +19,7 @@ public final class OAIPMHConstants { // Metadata Prefixes public static final String METADATA_IDIOM_PREFIX = "oai_idiom_mets"; public static final String METADATA_OPENAIRE_PREFIX = "oai_datacite"; + public static final String METADATA_IDIOM_IMAGE_PREFIX = "oai_idiom_image_mets"; // Error String Constants public static final String OAI_BAD_ARGUMENT = "BadArgument"; 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 f0abb804f790e406fa53f72ff9d035f422529337..341a0b8cb83ff1da7e4875612077a0bd23e00207 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -13,6 +13,8 @@ import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.XMLGregorianCalendar; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.json.JSONException; + import info.textgrid.middleware.oaipmh.GetRecordType; import info.textgrid.middleware.oaipmh.IdentifyType; import info.textgrid.middleware.oaipmh.ListIdentifiersType; @@ -81,6 +83,7 @@ public class OAIPMHImpl implements OAIPMHProducer { private MetadataFormatListDelivererInterface metadataFormatList; private SetListDeliverer setList; + private IDIOMImages imageList = new IDIOMImages(); // ** // PUBLIC // ** @@ -114,8 +117,10 @@ public class OAIPMHImpl implements OAIPMHProducer { SetListDeliverer setList, // 8 IdentifierListDelivererDC identifierList, // 9 IdentifierListDelivererIDIOM identifierListIDIOM, // 10 - IdentifierListDelivererDATACITE identifierListDATACITE // 11 + IdentifierListDelivererDATACITE identifierListDATACITE, // 11 + IDIOMImages imageList ) { + this.rep = rep; this.recordDC = recordDC; @@ -136,6 +141,7 @@ public class OAIPMHImpl implements OAIPMHProducer { .debug("MetadataFormatList implementing class: " + metadataFormatList.getClass().getName()); this.setList = setList; + this.imageList = imageList; } /* @@ -281,7 +287,8 @@ public class OAIPMHImpl implements OAIPMHProducer { // Check request. In GetRecord: allowed parameters: identifier, metadataPrefix, verb forbidden: // resumptionToken, from, till, set optional: no one. - + + ErrorHandler requestErrors = RecordDelivererAbstract.requestChecker(request); if (requestErrors.getError().getCode() != null) { @@ -301,6 +308,9 @@ public class OAIPMHImpl implements OAIPMHProducer { if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { recDeliv = this.recordDATACITE; } + if(request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)){ + recDeliv = new IDIOMImages(); + } // Finally start the QUERY! GetRecordType getRecord = new GetRecordType(); @@ -338,7 +348,7 @@ public class OAIPMHImpl implements OAIPMHProducer { */ public OAIPMHtype listIdentifiersRequest(OAIPMHtype oaipmhRoot, RequestType request) throws ParseException { - + IDIOMImages imm = new IDIOMImages(); // Check request first. ErrorHandler requestErrors = IdentifierListDelivererAbstract.requestChecker(request); if (requestErrors.getError().getValue() != null) { @@ -356,13 +366,17 @@ public class OAIPMHImpl implements OAIPMHProducer { idListDeliv = this.identifierListIDIOM; } else if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { idListDeliv = this.identifierListDATACITE; + } else if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) { + imm.setKindID("1"); + imm.setPageNumber("1"); + imm.setPerPage("100"); + idListDeliv = imm; } } // If metadata prefix is NOT set, check resumption token hash maps to decide which metadata // format we shall use. else { - // Token is from DC request. if (IdentifierListDelivererDC.cursorCollector != null && IdentifierListDelivererDC.cursorCollector @@ -387,6 +401,14 @@ public class OAIPMHImpl implements OAIPMHProducer { this.log.debug("DATACITE collector: " + IdentifierListDelivererDATACITE.cursorCollector); } + // Token is from IDIOMImages request. + /* else if (IDIOMImages.cursorCollector != null + && IDIOMImages.cursorCollector + .containsKey(request.getResumptionToken())) { + idListDeliv = imm; + + this.log.debug("IDIOMImage collector: " + IDIOMImages.cursorCollector); + }*/ // We have got an invalid resumptionToken here! else { ErrorHandler e = new ErrorHandler(); @@ -555,6 +577,13 @@ public class OAIPMHImpl implements OAIPMHProducer { if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { recListDeliv = this.recordListDATACITE; } + if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) { + IDIOMImages imm = new IDIOMImages(); + imm.setKindID("1"); + imm.setPageNumber("1"); + imm.setPerPage("100"); + recListDeliv = imm; + } } // If metadata prefix is NOT set, check resumption token hash maps to decide which metadata diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java index 6a553f50384d68229f17f49550e20ac935197a0b..25b02c58288a684a7e49c91aaddde743478addc6 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java @@ -71,7 +71,8 @@ public abstract class RecordDelivererAbstract implements RecordDelivererInterfac if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX) && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX) - && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX) + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) { result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR, "The value of the metadataPrefix: " + request.getMetadataPrefix() + " is not supported by the item identified by the value of: " diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java index 9cab5bfc3e0473cc8bafba0e6f374f0a64ba2956..3df92b323d6a4927d62e857e737661cf45e4fdd8 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java @@ -171,7 +171,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { } catch (Exception e) { e.printStackTrace(); } - + return metadataMets; } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java index ed10a0150af72439dedc592d1224e76f32d30538..21a9f0c5b8b6356ba61033b20634dbe1759141f6 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java @@ -67,7 +67,8 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer if (request.getMetadataPrefix() != null && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX) && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX) - && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX) + && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) { result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR, "The value of the metadataPrefix " + request.getMetadataPrefix() + " is not supported by the item identified by the value of: " diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java index 02c4532da06b860652dc8f7fba635387cf8eb0f5..d9196afc553db808c26203f4af19e001928df0d8 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java @@ -29,7 +29,7 @@ public class OaiPmhTestDH { private static RecordListDelivererDATACITE recordListDATACITE; // private static OpenAireIdentifierList openAireIdentifierList; private static IdentifierListDelivererDATACITE identifierListDATACITE; - + private static IDIOMImages idiomImages; private DeletedRecordType deletedRecordType = DeletedRecordType.NO; private GranularityType granularityType = GranularityType.YYYY_MM_DD_THH_MM_SS_Z; private RepIdentification rep = new RepIdentification("DARIAH-DE Repository", @@ -57,7 +57,8 @@ public class OaiPmhTestDH { OaiPmhTestDH.identifierList, OaiPmhTestDH.identifierListIDIOM, // OaiPmhTestDH.openAireIdentifierList); - OaiPmhTestDH.identifierListDATACITE); + OaiPmhTestDH.identifierListDATACITE, + OaiPmhTestDH.idiomImages); OAIPMHUtilities settings = new OAIPMHUtilities(); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java index bd04384489b75da9a83a5047183b835e401b3603..1b376cb773d17581fad9a8433344625f0991095d 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java @@ -43,6 +43,7 @@ public class OaiPmhTestTG { private static IdentifierListDelivererIDIOM identifierListIDIOM = new IdentifierListDelivererIDIOM(true, false); private static SetListDeliverer setListTextGrid; + private static IDIOMImages idiomImages; // ** // CLASS @@ -66,7 +67,8 @@ public class OaiPmhTestTG { OaiPmhTestTG.identifierList, OaiPmhTestTG.identifierListIDIOM, // OaiPmhTestTG.openAireIdentifierList); - OaiPmhTestTG.identifierListDATACITE); + OaiPmhTestTG.identifierListDATACITE, + OaiPmhTestTG.idiomImages); OAIPMHUtilities settings = new OAIPMHUtilities(); @@ -330,6 +332,39 @@ public class OaiPmhTestTG { System.out.println("-----------------------------------\n"); } + /** + * @throws ParseException + */ + @Test + public void testGetRequestGetRecordIDIOM_IMAGES() throws ParseException { + System.out.println("Test for the verb \"GetRecord\" with succesfull response"); + String p = this.request.getRequest("GetRecord", "11480", + OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", ""); + System.out.println(p); + System.out.println("-----------------------------------\n"); + } + + /** + * @throws ParseException + */ + @Test + public void testGetRequestListRecordsIDIOM_IMAGES() throws ParseException { + System.out.println("Test for the verb \"ListRecords\" with succesfull response"); + String p = this.request.getRequest("ListRecords", "", + OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", ""); + System.out.println(p); + System.out.println("-----------------------------------\n"); + } + + @Test + public void testGetRequestListIdentifiersIDIOM_IMAGES() throws ParseException { + System.out.println("Test for the verb \"ListIdentifiers\" with succesfull response"); + String p = this.request.getRequest("ListIdentifiers", "", + OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", ""); + System.out.println(p); + System.out.println("-----------------------------------\n"); + } + /** * @throws ParseException */ diff --git a/pom.xml b/pom.xml index 9ad02889b77bbc343ba1660fa60a29704aba9df9..f81183d64058452315fe58a25044a8fea60675d3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ <common.version>4.0.1</common.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <cxf.version>3.3.11</cxf.version> - <mets-mods-mapping.version>1.1.17</mets-mods-mapping.version> + <mets-mods-mapping.version>1.1.18</mets-mods-mapping.version> <spring.version>4.0.2.RELEASE</spring.version> <elasticsearch.version>6.5.4</elasticsearch.version> <antlr-runtime.version>3.2</antlr-runtime.version>