diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java index b85b02d56ccd72fdad9d044dc37bf1cf7eec331c..59ec3281a924ad3b813cb5d65d33134e2e99c9f7 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java @@ -50,7 +50,7 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere private String pageNumber; private int totalHits; private String idiomRbacSessionID; - private String idiomTGCrudEndpoint; + private String idiomTgcrudEndpoint; private static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); private static Map<String, String> fromUntilCollector = new Hashtable<String, String>(); @@ -62,6 +62,14 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere // } + /** + * + */ + public IDIOMImages(String tgcrudEndpoint, String rbacSessionID) { + this.idiomTgcrudEndpoint = tgcrudEndpoint; + this.idiomRbacSessionID = rbacSessionID; + } + /** * * @throws JSONException @@ -116,7 +124,7 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere String dateStamp = mediaList.getJSONObject(i).get("created_at").toString(); String identifier = mediaList.getJSONObject(i).get("id").toString(); - record.setHeader(buildOAIPMH_RecordHeader(dateStamp, identifier)); + record.setHeader(buildOAIPMHRecordHeader(dateStamp, identifier)); imageMetsModsList.getRecord().add(record); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block @@ -190,9 +198,11 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere } log.fine("processing id: " + changedID); + log.fine("tgcrud endpoint: " + this.idiomTgcrudEndpoint); + log.fine("tgcrud rbac sid: " + OAIPMHUtilities.hideSID(this.idiomRbacSessionID)); try { - immByTGURI = new ImageMetsMods(this.idiomTGCrudEndpoint, this.idiomRbacSessionID, + immByTGURI = new ImageMetsMods(this.idiomTgcrudEndpoint, this.idiomRbacSessionID, new TextGridUri(changedID)); log.fine("image id/title: " + immByTGURI.getID() + " / " + immByTGURI.getTitle()); @@ -205,11 +215,11 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere metadataMets.setAny(doc.getDocumentElement()); conedaKorRecord.setMetadata(metadataMets); if (changedID.contains(".")) { - conedaKorRecord.setHeader(buildOAIPMH_RecordHeader( + conedaKorRecord.setHeader(buildOAIPMHRecordHeader( OAIPMHUtilities.datestampAsString(immByTGURI.getCreationDate()), changedID.substring(0, changedID.indexOf(".")))); } else { - conedaKorRecord.setHeader(buildOAIPMH_RecordHeader( + conedaKorRecord.setHeader(buildOAIPMHRecordHeader( OAIPMHUtilities.datestampAsString(immByTGURI.getCreationDate()), changedID)); } @@ -223,40 +233,12 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere return singleImageMetsMods; } - /* - * public ListRecordsType getAllMedia() throws JSONException, IOException, ParseException, - * SAXException, TransformerFactoryConfigurationError, TransformerException{ ListRecordsType - * imageMetsModsList = new ListRecordsType(); MediaHarvester mediaHarvester = new - * MediaHarvester(getKindID(),getPerPage(), getPageNumber()); int perPage = 100; - * setTotalHits(mediaHarvester.getTotalMedia()); for(int j=1; j*perPage<=100 ;j++){ mediaHarvester - * = new MediaHarvester(getKindID(),getPerPage(), Integer.toString(j)); JSONArray mediaList = - * mediaHarvester.getMediaListFromConedaKor().getJSONArray("records"); int harvestedEntities = - * j*perPage; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - * DocumentBuilder builder; for(int i=0; i<mediaList.length(); i++){ try{ ImageMetsMods imm = new - * ImageMetsMods(mediaList.getJSONObject(i)); - * - * - * builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new - * StringReader(imm.getXML()))); - * - * RecordType record = new RecordType(); MetadataType metadataMets = new MetadataType(); - * metadataMets.setAny(doc.getDocumentElement()); record.setMetadata(metadataMets); - * imageMetsModsList.getRecord().add(record); //printXML(doc); - * - * } catch (ParserConfigurationException e) { // TODO Auto-generated catch block - * e.printStackTrace(); } - * - * } - * - * } return imageMetsModsList; } - */ - /** * @param dateStamp * @param Identifier * @return */ - public HeaderType buildOAIPMH_RecordHeader(String dateStamp, String Identifier) { + public HeaderType buildOAIPMHRecordHeader(String dateStamp, String Identifier) { HeaderType recordHeader = new HeaderType(); recordHeader.setDatestamp(dateStamp); @@ -424,15 +406,15 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere /** * @return */ - public String getIdiomTGCrudEndpoint() { - return this.idiomTGCrudEndpoint; + public String getIdiomTgcrudEndpoint() { + return this.idiomTgcrudEndpoint; } /** - * @param idiomTGCrudEndpoint + * @param idiomTgcrudEndpoint */ - public void setIdiomTGCrudEndpoint(String idiomTGCrudEndpoint) { - this.idiomTGCrudEndpoint = idiomTGCrudEndpoint; + public void setIdiomTgcrudEndpoint(String idiomTgcrudEndpoint) { + this.idiomTgcrudEndpoint = idiomTgcrudEndpoint; } /** 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 a9521233ba49ac6956e43aa9fe1701b2f6dda906..99fb5f8b8c326eeefc3accce986995ed4d93b40a 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -31,7 +31,7 @@ import info.textgrid.middleware.oaipmh.VerbType; * * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-07 + * @version 2022-09-20 * @since 2014-01-29 */ public class OAIPMHImpl implements OAIPMHProducer { @@ -71,12 +71,14 @@ public class OAIPMHImpl implements OAIPMHProducer { private RecordDelivererIDIOM recordIDIOM; private RecordDelivererDATACITE recordDATACITE; + private MetadataFormatListDelivererInterface metadataFormatList; + private SetListDeliverer setList; + private IdentifierListDelivererDC identifierListDC; private IdentifierListDelivererIDIOM identifierListIDIOM; private IdentifierListDelivererDATACITE identifierListDATACITE; - private MetadataFormatListDelivererInterface metadataFormatList; - private SetListDeliverer setList; + private IDIOMImages idiomImages; // ** // PUBLIC @@ -124,13 +126,14 @@ public class OAIPMHImpl implements OAIPMHProducer { this.recordListIDIOM = recordListIDIOM; this.recordListDATACITE = recordListDATACITE; + this.metadataFormatList = metadataFormatList; + this.setList = setList; + this.identifierListDC = identifierList; this.identifierListIDIOM = identifierListIDIOM; this.identifierListDATACITE = identifierListDATACITE; - this.metadataFormatList = metadataFormatList; - - this.setList = setList; + this.idiomImages = imageList; } /* @@ -295,6 +298,9 @@ public class OAIPMHImpl implements OAIPMHProducer { // Take IDIOM if IDIOM prefix. if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX)) { recDeliv = this.recordIDIOM; + + log.fine(" ## creating RecordDelivererIDIOM"); + } if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) { recDeliv = this.recordDATACITE; @@ -303,9 +309,20 @@ public class OAIPMHImpl implements OAIPMHProducer { // Finally start the QUERY! GetRecordType getRecord = new GetRecordType(); + log.fine(" ## created RecordDelivererIDIOM"); + String id = request.getIdentifier(); + + log.fine(" ## ID = " + id); + try { + + log.fine(" ## calling getRecordById"); + getRecord = recDeliv.getRecordById(id); + + log.fine(" ## called getRecordById"); + } catch (ParseException | DatatypeConfigurationException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -336,7 +353,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) { @@ -380,11 +397,12 @@ public class OAIPMHImpl implements OAIPMHProducer { // Token is from IDIOMImages request. else if (IDIOMImages.getCursorCollector() != null && IDIOMImages.getCursorCollector().containsKey(request.getResumptionToken())) { - idListDeliv = imm; - imm.setKindID("1"); - imm.setPerPage("100"); - imm.setPageNumber( + // TODO Make configurable in config file?? + this.idiomImages.setKindID("1"); + this.idiomImages.setPerPage("100"); + this.idiomImages.setPageNumber( Integer.toString(IDIOMImages.getCursorCollector().get(request.getResumptionToken()))); + idListDeliv = this.idiomImages; } // We have got an invalid resumptionToken here! else { @@ -527,8 +545,6 @@ public class OAIPMHImpl implements OAIPMHProducer { public OAIPMHtype listRecordsRequest(OAIPMHtype oaipmhRoot, RequestType request) throws ParseException, IOException { - IDIOMImages imm = new IDIOMImages(); - // Check request first. ErrorHandler requestErrors = RecordListDelivererAbstract.requestChecker(request); if (requestErrors.getError().getCode() != null) { @@ -572,14 +588,15 @@ public class OAIPMHImpl implements OAIPMHProducer { .containsKey(request.getResumptionToken())) { recListDeliv = this.recordListDATACITE; } - // Token is from DATACITE request. + // Token is from IDIOMImages request. else if (IDIOMImages.getCursorCollector() != null && IDIOMImages.getCursorCollector().containsKey(request.getResumptionToken())) { - imm.setKindID("1"); - imm.setPerPage("100"); - imm.setPageNumber( + // TODO Make configurable in config file?? + this.idiomImages.setKindID("1"); + this.idiomImages.setPerPage("100"); + this.idiomImages.setPageNumber( Integer.toString(IDIOMImages.getCursorCollector().get(request.getResumptionToken()))); - recListDeliv = imm; + recListDeliv = this.idiomImages; } // We have got an invalid resumptionToken here! else { diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java index 93f64885802be24c267e83b598698c61d08e2c7d..aea29bc2447b377524d1ad807233e3a50f28f6ec 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -652,6 +652,26 @@ public class OAIPMHUtilities { return result; } + /** + * @param theSID + * @return + */ + public static String hideSID(String theSID) { + + String result = "(null or empty)"; + + if (theSID != null && !theSID.isEmpty()) { + int size = theSID.length(); + if (size < 5) { + result = "(sid existing and too short)"; + } else { + result = theSID.substring(0, 4) + "..."; + } + } + + return result; + } + // ** // GETTERS & SETTERS // ** 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 c14907b472c8a5dbfcce0acd8ed814c4a30bb048..267615b43353f23f6520bad34a4a86213e25d507 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java @@ -24,7 +24,7 @@ import info.textgrid.middleware.oaipmh.RecordType; /** * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-19 + * @version 2022-09-20 * @since 2019-03-12 */ @Component @@ -34,6 +34,8 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { private String dateOfLastObjectModification; private String objectType; + private String idiomRbacSessionID; + private String idiomTgcrudEndpoint; RecordType record = new RecordType(); @@ -115,10 +117,10 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { log.fine("object type is: " + this.getObjectType()); - if (this.getObjectType().equals("ARTEFACT")) { + log.fine(this.getObjectType() + " doc/dom: " + this.dateOfObjectCreation + "/" + + this.dateOfLastObjectModification); - log.fine("artefact doc/dom: " + this.dateOfObjectCreation + "/" - + this.dateOfLastObjectModification); + if (this.getObjectType().equals("ARTEFACT")) { try { ClassicMayanMetsMods metsmods = new ClassicMayanMetsMods( @@ -136,9 +138,13 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { // TODO Auto-generated catch block e.printStackTrace(); } - } else if (this.getObjectType().startsWith("ConedaKorMediumData")) { + } + + else if (this.getObjectType().startsWith("ConedaKorMediumData")) { + + IDIOMImages idiomImages = new IDIOMImages(this.idiomTgcrudEndpoint, this.idiomRbacSessionID); + GetRecordType idi = idiomImages.getRecordById(id); - GetRecordType idi = new IDIOMImages().getRecordById(id); // Fixes #64 if (idi != null) { this.record = idi.getRecord(); @@ -218,4 +224,32 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { this.objectType = objectType; } + /** + * @return + */ + public String getIdiomRbacSessionID() { + return this.idiomRbacSessionID; + } + + /** + * @param idiomRbacSessionID + */ + public void setIdiomRbacSessionID(String idiomRbacSessionID) { + this.idiomRbacSessionID = idiomRbacSessionID; + } + + /** + * @return + */ + public String getIdiomTgcrudEndpoint() { + return this.idiomTgcrudEndpoint; + } + + /** + * @param idiomTgcrudEndpoint + */ + public void setIdiomTgcrudEndpoint(String idiomTgcrudEndpoint) { + this.idiomTgcrudEndpoint = idiomTgcrudEndpoint; + } + } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java index 542d6ab9543e1f359d0ea7e1074c1bb30c1c598e..69183affa62bf2e07d889b0e5bcfc24cd0d725dc 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java @@ -36,9 +36,7 @@ public class TestClassicMayanOnline { public void testGetRecord() throws JSONException, IOException, SAXException, ParseException, TransformerFactoryConfigurationError, TransformerException { - IDIOMImages imageList = new IDIOMImages(); - // Set session ID here? - // imageList.setIdiomRbacSessionID("***"); + IDIOMImages imageList = new IDIOMImages("idiomTgcrudEndpoint", "idiomRbacSessionID"); Document document; try { @@ -64,7 +62,7 @@ public class TestClassicMayanOnline { public void testGetMediaList() throws JSONException, IOException, ParseException, SAXException, TransformerFactoryConfigurationError, TransformerException { - IDIOMImages imageList = new IDIOMImages(); + IDIOMImages imageList = new IDIOMImages("idiomTgcrudEndpoint", "idiomRbacSessionID"); imageList.setKindID("1"); imageList.setPerPage("100"); @@ -95,7 +93,7 @@ public class TestClassicMayanOnline { TransformerFactoryConfigurationError, TransformerException { // OAIPMHtype request = new OAIPMHtype(); - IDIOMImages imageList = new IDIOMImages(); + IDIOMImages imageList = new IDIOMImages("idiomTgcrudEndpoint", "idiomRbacSessionID"); imageList.setKindID("1"); imageList.setPerPage("100"); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java index a21b993da3cee94175a24721cf0a14caeaed0978..281855053b5052eea53b7acc699779751153656d 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java @@ -32,7 +32,7 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; * @version 2022-09-19 * @since 2022-09-08 */ -@Ignore +//@Ignore public class TestTGGetRecordOnline { // ** diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index c0c077e42da1c24b26a761aa46056221a16bb844..ebc3ee066f9a44883d5be44639b31d8ea3fc044d 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -90,10 +90,10 @@ <bean id="IDIOMImages" class="info.textgrid.middleware.IDIOMImages"> - <property name="idiomRbacSessionID" - value="${idiomRbacSessionID}" /> <property name="idiomTgcrudEndpoint" value="${idiomTgcrudEndpoint}" /> + <property name="idiomRbacSessionID" + value="${idiomRbacSessionID}" /> </bean> <!-- Bean for verb=Identify --> @@ -192,6 +192,11 @@ <property name="oaiEsClient" ref="NonpublicElasticSearchClient" /> + + <property name="idiomTgcrudEndpoint" + value="${idiomTgcrudEndpoint}" /> + <property name="idiomRbacSessionID" + value="${idiomRbacSessionID}" /> </bean> <bean id="RecordDATACITE"