From 0a9d3b1065cc0c611b8f2d2632ce905614ac2b2e Mon Sep 17 00:00:00 2001 From: "Stefan E. Funk" <funk@sub.uni-goettingen.de> Date: Fri, 23 Jul 2021 10:41:48 +0200 Subject: [PATCH] Fix RecordDelivererDATACITE bean configuration issue Only configure bean ONCE now --- .../textgrid/middleware/OAIPMHUtilities.java | 12 ++- .../middleware/RecordDelivererDATACITE.java | 87 ++++++++++--------- .../RecordListDelivererDATACITE.java | 31 ++----- 3 files changed, 65 insertions(+), 65 deletions(-) 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 6ce3185e..2cd145cd 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -42,7 +42,6 @@ import info.textgrid.middleware.oaipmh.RecordType; import info.textgrid.middleware.oaipmh.Resource; import info.textgrid.middleware.oaipmh.ResumptionTokenType; import info.textgrid.namespaces.middleware.tgauth.ProjectInfo; -import io.swagger.v3.core.util.Json; /** * <p> @@ -534,6 +533,7 @@ public class OAIPMHUtilities { * @param propFile * @return */ + @Deprecated public static String[][] fetchArrayFromPropFile(String propertyName, Properties propFile) { // FIXME Why get a 2D array and only use the first element in RecordDelivererDatacite? @@ -553,6 +553,16 @@ public class OAIPMHUtilities { return array; } + /** + * @param propertyName + * @param propFile + * @return + */ + public static String[] fetchFieldsFromPropFile(String propertyName, Properties propFile) { + // Trim with whitespaces, so we get the array with results trimmed. + return propFile.getProperty(propertyName).split("\\s*,\\s*"); + } + /** * <p> * Check identifier for prefixes: Remove "textgrid:" and "hdl:" prefixes. diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java index a4edb615..b2f6eb90 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java @@ -114,8 +114,19 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { System.out.println("idInElasticSearchIndex: " + idInElasticSearchIndex); + System.out.println("idInElasticSearchIndex: " + + idInElasticSearchIndex.replace(this.repositoryObjectURIPrefix, "")); + GetRecordType getRecordType = new GetRecordType(); + JSONObject urgli = new JSONObject(OAIPMHUtilities + .getRcordByIDFromElasticSearch(OAI_ESClient.getEsIndex(), + idInElasticSearchIndex.replace(this.repositoryObjectURIPrefix, ""), this.fields, + Strings.EMPTY_ARRAY) + .getSource()); + + System.out.println("urgli: " + urgli); + // Get ES object. this.jsonObj = new JSONObject(OAIPMHUtilities .getRcordByIDFromElasticSearch(OAI_ESClient.getEsIndex(), @@ -910,7 +921,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { */ // TODO: fields from config file // TODO: for each field - // FIXME fu: Adapt to DARIAH! + // TODO: Adapt to DARIAH! // return OAIPMHUtilities.fieldLoader(jsonObj, // "edition.source.bibliographicCitation.publisher.value"); @@ -940,8 +951,8 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { /** * <p> - * Set all the props from config file, if bean can not be configured by spring if doing a - * newRecordDelivererDATACITE(). + * Set all the props from config file, if bean can not be configured by spring if doing a new + * RecordDelivererDATACITE(). * </p> * * @throws IOException @@ -956,14 +967,8 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { p.load(input); // Set basic fields. - this.setFields(OAIPMHUtilities.fetchArrayFromPropFile("fields", p)[0]); - - System.out.println("kakki"); - for (int i = 0; i < this.fields.length; i++) { - System.out.println(this.fields[i]); - } - - this.setWorkFields(OAIPMHUtilities.fetchArrayFromPropFile("workFields", p)[0]); + this.fields = OAIPMHUtilities.fetchFieldsFromPropFile("fields", p); + this.setWorkFields(OAIPMHUtilities.fetchFieldsFromPropFile("workFields", p)); this.setFormatField(p.getProperty("formatField")); this.setFormatToFilter(p.getProperty("formatToFilter")); @@ -973,48 +978,50 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { this.setIdentifierField(p.getProperty("identifierField")); // Set DC fields. - - this.setContributor(OAIPMHUtilities.fetchArrayFromPropFile("contributorList", p)[0]); - this.setCoverage(OAIPMHUtilities.fetchArrayFromPropFile("coverageList", p)[0]); - this.setCreator(OAIPMHUtilities.fetchArrayFromPropFile("creatorList", p)[0]); - this.setDates(OAIPMHUtilities.fetchArrayFromPropFile("dateList", p)[0]); - this.setDescriptions(OAIPMHUtilities.fetchArrayFromPropFile("descriptionList", p)[0]); - this.setFormats(OAIPMHUtilities.fetchArrayFromPropFile("formatList", p)[0]); - this.setIdentifiers(OAIPMHUtilities.fetchArrayFromPropFile("identifierList", p)[0]); - this.setLanguages(OAIPMHUtilities.fetchArrayFromPropFile("languageList", p)[0]); - this.setPublishers(OAIPMHUtilities.fetchArrayFromPropFile("publisherList", p)[0]); - this.setRelations(OAIPMHUtilities.fetchArrayFromPropFile("relationList", p)[0]); - this.setRights(OAIPMHUtilities.fetchArrayFromPropFile("rightsList", p)[0]); - this.setSources(OAIPMHUtilities.fetchArrayFromPropFile("sourceList", p)[0]); - this.setSubjects(OAIPMHUtilities.fetchArrayFromPropFile("subjectList", p)[0]); - this.setTitles(OAIPMHUtilities.fetchArrayFromPropFile("titleList", p)[0]); - this.setTypes(OAIPMHUtilities.fetchArrayFromPropFile("typeList", p)[0]); + this.setContributor(OAIPMHUtilities.fetchFieldsFromPropFile("contributorList", p)); + this.setCoverage(OAIPMHUtilities.fetchFieldsFromPropFile("coverageList", p)); + this.setCreator(OAIPMHUtilities.fetchFieldsFromPropFile("creatorList", p)); + this.setDates(OAIPMHUtilities.fetchFieldsFromPropFile("dateList", p)); + this.setDescriptions(OAIPMHUtilities.fetchFieldsFromPropFile("descriptionList", p)); + this.setFormats(OAIPMHUtilities.fetchFieldsFromPropFile("formatList", p)); + this.setIdentifiers(OAIPMHUtilities.fetchFieldsFromPropFile("identifierList", p)); + this.setLanguages(OAIPMHUtilities.fetchFieldsFromPropFile("languageList", p)); + this.setPublishers(OAIPMHUtilities.fetchFieldsFromPropFile("publisherList", p)); + this.setRelations(OAIPMHUtilities.fetchFieldsFromPropFile("relationList", p)); + this.setRights(OAIPMHUtilities.fetchFieldsFromPropFile("rightsList", p)); + this.setSources(OAIPMHUtilities.fetchFieldsFromPropFile("sourceList", p)); + this.setSubjects(OAIPMHUtilities.fetchFieldsFromPropFile("subjectList", p)); + this.setTitles(OAIPMHUtilities.fetchFieldsFromPropFile("titleList", p)); + this.setTypes(OAIPMHUtilities.fetchFieldsFromPropFile("typeList", p)); // Set OpenAire config fields. this.setOarIdentifierField(p.getProperty("oar.identifierField")); this.setOarSizeField(p.getProperty("oar.sizeField")); - this.setOarTitleFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.titleFields", p)[0]); - this.setOarDateFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.dateFields", p)[0]); + this.setOarTitleFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.titleFields", p)); + this.setOarDateFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.dateFields", p)); this.setOarContributorFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.contributorFields", p)[0]); - this.setOarCreatorFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.creatorFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.contributorFields", p)); + this.setOarCreatorFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.creatorFields", p)); this.setOarLanguageFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.languageFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.languageFields", p)); this.setOarAlternateIdentifierFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.alternateIdentifierFields", p)[0]); - this.setOarFormatFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.formatFields", p)[0]); - this.setOarRightsFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.rightsFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.alternateIdentifierFields", p)); + this.setOarFormatFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.formatFields", p)); + this.setOarRightsFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.rightsFields", p)); this.setOarDescriptionFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.descriptionFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.descriptionFields", p)); this.setOarRelatedIdentifierFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.relatedIdentifierFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.relatedIdentifierFields", p)); this.setOarGeoLocationFields( - OAIPMHUtilities.fetchArrayFromPropFile("oar.geoLocationFields", p)[0]); - this.setOarVersionFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.versionFields", p)[0]); - this.setOarSubjectFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.subjectFields", p)[0]); + OAIPMHUtilities.fetchFieldsFromPropFile("oar.geoLocationFields", p)); + this.setOarVersionFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.versionFields", p)); + this.setOarSubjectFields(OAIPMHUtilities.fetchFieldsFromPropFile("oar.subjectFields", p)); + // Set more fields. this.setRelationToWorkObject(p.getProperty("oar.relationToWorkObject")); this.setHandle(p.getProperty("oar.handle")); + + input.close(); } /** diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDATACITE.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDATACITE.java index 4d292caf..b1f1e7b9 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDATACITE.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDATACITE.java @@ -53,6 +53,13 @@ public class RecordListDelivererDATACITE extends RecordListDelivererAbstract { ListRecordsType openAireRecordList = new ListRecordsType(); + // Create one RecordDeliverer only, to configure all fields only ONCE. + // FIYME May be solved using spring configuration, but I do not know how! + RecordDelivererDATACITE openAireRecord = + new RecordDelivererDATACITE(this.textgrid, this.dariah); + // Must be done here, as spring does not configure this bean if instantiated with "new". + openAireRecord.setConfigFileProps(); + for (String uri : getUriList(from, to, set, resumptionToken)) { log.debug("uri: " + uri); @@ -79,30 +86,6 @@ public class RecordListDelivererDATACITE extends RecordListDelivererAbstract { log.debug("eventuallyChangedUri: " + eventuallyChangedUri); try { - RecordDelivererDATACITE openAireRecord = - new RecordDelivererDATACITE(this.textgrid, this.dariah); - - System.out.println(" -- 1 --"); - if (openAireRecord.fields != null) { - for (int i = 0; i < openAireRecord.fields.length; i++) { - System.out.println(openAireRecord.fields[i]); - } - } else { - System.out.println("NULL"); - } - - // Must be done as spring does not configure this bean if instantiated here. - openAireRecord.setConfigFileProps(); - - System.out.println(" -- 2 --"); - if (openAireRecord.fields != null) { - for (int i = 0; i < openAireRecord.fields.length; i++) { - System.out.println(openAireRecord.fields[i]); - } - } else { - System.out.println("NULL"); - } - openAireRecordList.getRecord() .add(openAireRecord.getRecordById(eventuallyChangedUri).getRecord()); } catch (DatatypeConfigurationException e) { -- GitLab