From 62aad7349929523e1d04f1a58319fd62f2c2dfe4 Mon Sep 17 00:00:00 2001 From: "Stefan E. Funk" <funk@sub.uni-goettingen.de> Date: Fri, 23 Sep 2022 17:48:13 +0200 Subject: [PATCH] fix: refactor beans.xml and a little more in IDIOM ListRecords --- .../IdentifierListDelivererIDIOM.java | 10 ++----- .../middleware/RecordDelivererIDIOM.java | 11 ++++--- .../middleware/RecordListDelivererIDIOM.java | 30 ++++++++++++------- .../test/online/OAIPMHUtilitiesOnline.java | 5 +++- .../online/tg/TestClassicMayanOnline.java | 2 +- .../test/online/tg/TestTGBasicsOnline.java | 12 ++------ .../test/online/tg/TestTGGetRecordOnline.java | 14 ++------- .../tg/TestTGListIdentifiersOnline.java | 23 +++----------- .../online/tg/TestTGListRecordsOnline.java | 19 +++--------- ...oaipmh.test.dev-textgridlab-org.properties | 4 +-- .../oaipmh.test.textgridlab-org.properties | 4 +-- .../src/main/webapp/WEB-INF/beans.xml | 2 +- 12 files changed, 48 insertions(+), 88 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java index d68d8849..3f272741 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java @@ -22,7 +22,7 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** * @author Max Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-21 + * @version 2022-09-23 */ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstract { @@ -124,19 +124,15 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac String textgridURI = OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri"); - // IF we really do need the RecordDelivererIDIOM object here, we have to set the - // elasticsearch client! - this.idiomRecord.setOaiEsClient(this.oaiEsClient); // FIXME BTW: We only need ID and DATESTAMP for ListIdentifiers, WHY do we get every // complete RECORD?? - identifierList.getHeader().add(this.idiomRecord - .getRecordById(textgridURI.replace(".0", "")).getRecord().getHeader()); + identifierList.getHeader().add( + this.idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord().getHeader()); } // Check the need for a resumption token! ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken(completeListSize, resumptionToken, cursorCollector, scrollID, this.idiomResponseSize, i); - if (responseToken != null) { identifierList.setResumptionToken(responseToken); } 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 bbf05513..f83b1e72 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-21 + * @version 2022-09-23 * @since 2019-03-12 */ @Component @@ -34,7 +34,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { private IDIOMImages idiomImages; - RecordType record = new RecordType(); + private RecordType record = new RecordType(); private String dateOfLastObjectModification; private String objectType; @@ -189,11 +189,10 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { log.fine("changedId: " + changedId); JSONObject json = new JSONObject(); - String[] fields = {TGConstants.CREATED, TGConstants.MODIFIED_FIELD, "notes"}; + String[] searchFields = {TGConstants.CREATED, TGConstants.MODIFIED_FIELD, "notes"}; - json = new JSONObject(OAIPMHUtilities - .getRcordByIDFromElasticSearch(this.oaiEsClient, changedId, fields, Strings.EMPTY_ARRAY) - .getSource()); + json = new JSONObject(OAIPMHUtilities.getRcordByIDFromElasticSearch(this.oaiEsClient, changedId, + searchFields, Strings.EMPTY_ARRAY).getSource()); this.dateOfObjectCreation = OAIPMHUtilities.datestampAsString(OAIPMHUtilities.fieldLoader(json, TGConstants.CREATED)); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java index 05bc6633..e2f34d8c 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -18,6 +18,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.json.JSONObject; import info.textgrid.middleware.oaipmh.GetRecordType; import info.textgrid.middleware.oaipmh.ListRecordsType; +import info.textgrid.middleware.oaipmh.RecordType; import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** @@ -115,9 +116,10 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { long completeListSize = scrollResp.getHits().totalHits; + log.fine("total hits: " + completeListSize); + if (completeListSize > 0) { setFoundItems(true); - int i = 0; for (SearchHit hit : scrollResp.getHits().getHits()) { @@ -125,28 +127,34 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { log.fine("hit no." + i + ": id=" + hit.getId()); - String recordType = - OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "notes"); String textgridURI = OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri"); - log.fine("record type: " + recordType); log.fine("textgridURI: " + textgridURI); - GetRecordType idi = this.idiomRecord.getRecordById(textgridURI.replace(".0", "")); + // Create new record here! We must not set only references here! + RecordType record = new RecordType(); + RecordType sourceRecord = + this.idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord(); + record.setHeader(sourceRecord.getHeader()); + record.setMetadata(sourceRecord.getMetadata()); - log.fine("idi.header: " + (idi == null ? "null" : idi.getRecord().getHeader())); + recordList.getRecord().add(record); - recordList.getRecord().add(idi.getRecord()); + int size = recordList.getRecord().size(); - log.fine("record added: " + idi.getRecord().getHeader().getIdentifier()); + log.finest("RECORD LIST CONTENT (" + size + "):"); + for (int j = 0; j < size; j++) { + log.finest( + "\t[" + j + "] --> " + recordList.getRecord().get(j).getHeader().getIdentifier()); + } } // Check the need for a resumption token! - ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(completeListSize, + ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken(completeListSize, resumptionToken, cursorCollector, scrollID, this.idiomResponseSize, i); - if (resTokenForResponse != null) { - recordList.setResumptionToken(resTokenForResponse); + if (responseToken != null) { + recordList.setResumptionToken(responseToken); } } else { setFoundItems(false); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java index 8fe72c04..abe96093 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java @@ -35,6 +35,9 @@ public class OAIPMHUtilitiesOnline { // FINALS // ** + // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties"; + public static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; + public static final String OAI_DC_PREFIX = "oai_dc"; public static final String OAI_DATACITE_PREFIX = "oai_datacite"; public static final String OAI_IDIOMMETS_PREFIX = "oai_idiom_mets"; @@ -531,7 +534,7 @@ public class OAIPMHUtilitiesOnline { * <p> * Creates a hash set containing all the ID values from a certain tag. Used to count elements such * as <identifier> in OAI-PMH header list responses. We want to know here, if we have ID - * duplicates in one request. + * duplicates in a response. * </p> * * @param theResponseString 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 f574034f..69183aff 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 @@ -18,7 +18,7 @@ import info.textgrid.middleware.IDIOMImages; /** * */ -// @Ignore +@Ignore public class TestClassicMayanOnline { // FIXME Check ignored tests!! Do they make any sense?? diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java index a59f218b..e5c6aa4a 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java @@ -26,15 +26,6 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; @Ignore public class TestTGBasicsOnline { - // ** - // FINALS - // ** - - // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties"; - // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all - // IDIOM tests will fail! - private static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; - // ** // STATICS // ** @@ -57,7 +48,8 @@ public class TestTGBasicsOnline { public static void setUpBeforeClass() throws Exception { // Get properties. - Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE); + Properties p = + OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE); // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); 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 0c10181b..6a17b7d1 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 @@ -29,21 +29,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-21 + * @version 2022-09-23 * @since 2022-09-08 */ @Ignore public class TestTGGetRecordOnline { - // ** - // FINALS - // ** - - // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties"; - // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all - // IDIOM tests will fail! - protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; - // ** // STATICS // ** @@ -78,7 +69,8 @@ public class TestTGGetRecordOnline { public static void setUpBeforeClass() throws Exception { // Get properties. - Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE); + Properties p = + OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE); // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java index b057cd8a..66c38205 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java @@ -21,21 +21,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-21 + * @version 2022-09-23 * @since 2022-09-12 */ @Ignore public class TestTGListIdentifiersOnline { - // ** - // FINALS - // ** - - // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties"; - // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all - // IDIOM tests will fail! - protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; - // ** // STATICS // ** @@ -47,8 +38,6 @@ public class TestTGListIdentifiersOnline { // Properties private static String checkListIdentifiersSet; - private static int checkListIdentifiersPagesToTestIDIOM; - private static int checkListIdentifiersRecordsPerPageIDIOM; // ** // PREPARATIONS @@ -61,16 +50,13 @@ public class TestTGListIdentifiersOnline { public static void setUpBeforeClass() throws Exception { // Get properties. - Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE); + Properties p = + OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE); // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); checkListIdentifiersSet = p.getProperty("checkListIdentifiersSet"); - checkListIdentifiersPagesToTestIDIOM = - Integer.parseInt(p.getProperty("checkListIdentifiersPagesToTestIDIOM")); - checkListIdentifiersRecordsPerPageIDIOM = - Integer.parseInt(p.getProperty("checkListIdentifiersRecordsPerPageIDIOM")); // Get web client from endpoint. oaipmhWebClient = OAIPMHUtilitiesOnline.getOAIPMHWEebClient(oaipmhEndpoint); @@ -438,8 +424,7 @@ public class TestTGListIdentifiersOnline { OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, - checkListIdentifiersPagesToTestIDIOM, - checkListIdentifiersRecordsPerPageIDIOM, + 10, 3, "IDIOM")); executor.shutdown(); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java index 4705ef22..bcf2f7ff 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java @@ -21,21 +21,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-21 + * @version 2022-09-23 * @since 2022-09-12 */ @Ignore public class TestTGListRecordsOnline { - // ** - // FINALS - // ** - - // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties"; - // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all - // IDIOM tests will fail! - protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; - // ** // STATICS // ** @@ -52,8 +43,6 @@ public class TestTGListRecordsOnline { private static String checkListRecordsDATACITEUntil; private static String checkListRecordsIDIOMFrom; private static String checkListRecordsIDIOMUntil; - private static int checkListIdentifiersPagesToTestIDIOM; - private static int checkListIdentifiersRecordsPerPageIDIOM; // ** // PREPARATIONS @@ -66,7 +55,8 @@ public class TestTGListRecordsOnline { public static void setUpBeforeClass() throws Exception { // Get properties. - Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE); + Properties p = + OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE); // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); @@ -483,8 +473,7 @@ public class TestTGListRecordsOnline { OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, - checkListIdentifiersPagesToTestIDIOM, - checkListIdentifiersRecordsPerPageIDIOM, + 5, 30, "IDIOM")); executor.shutdown(); diff --git a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties index 4d07edba..7691e583 100644 --- a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties +++ b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties @@ -24,15 +24,13 @@ checkListRecordsDCFrom = 2012-01-04T01:00:00 checkListRecordsDCUntil = 2012-01-04T12:00:00 checkListRecordsIDIOMFrom = 2012-01-04T01:00:00 -checkListRecordsIDIOMUntil = 2012-01-04T12:00:00 +checkListRecordsIDIOMUntil = 2022-01-04T12:00:00 checkListRecordsDATACITEFrom = 2012-01-04T01:00:00 checkListRecordsDATACITEUntil = 2012-01-04T12:00:00 # ListIdentifiers checkListIdentifiersSet = project:TGPR-59722e29-efcb-330f-b9b4-5ef2fb08edab -checkListIdentifiersPagesToTestIDIOM = 10 -checkListIdentifiersRecordsPerPageIDIOM = 30 # ListSets expectedListSets = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c diff --git a/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties b/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties index b123de23..e1bd63f1 100644 --- a/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties +++ b/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties @@ -28,6 +28,4 @@ checkListRecordsDATACITEUntil = 2012-01-04T12:00:00 # ListIdentifiers checkListIdentifiersSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c -checkListIdentifiersPagesToTestIDIOM = 10 -checkListIdentifiersRecordsPerPageIDIOM = 30 - \ No newline at end of file +c \ No newline at end of file diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index 9fd17263..ce8467a4 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -192,7 +192,6 @@ <property name="oaiEsClient" ref="NonpublicElasticSearchClient" /> - <property name="idiomImages" ref="IDIOMImages" /> </bean> @@ -361,6 +360,7 @@ <property name="specField" value="${specField}" /> <property name="oaiEsClient" ref="ElasticSearchClient" /> + <property name="dataciteRecord" ref="RecordDATACITE" /> </bean> <!-- Beans for verb=ListIdentifiers --> -- GitLab