From 3034f6e786e5b46a4a46769636b3421c56ab2ec9 Mon Sep 17 00:00:00 2001 From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de> Date: Mon, 27 May 2019 09:42:28 +0200 Subject: [PATCH] resolving concurrency problem in RecordListDeliverer --- .../middleware/DublinCoreBuilder.java | 7 + .../middleware/DublinCoreFieldLoader.java | 328 +++++++++--------- .../middleware/RecordListDelivererDC.java | 84 +++-- .../middleware/RecordListDelivererIDIOM.java | 2 +- .../RecordListDelivererInterface.java | 2 +- .../info/textgrid/middleware/OaiPmhTest.java | 2 +- .../middleware/OaiPmhTextgridOnlineTests.java | 6 +- 7 files changed, 244 insertions(+), 187 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java index a73a6873..fc47cfa0 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java @@ -25,6 +25,7 @@ public final class DublinCoreBuilder { private ObjectFactory oaiDcObj = new ObjectFactory(); private MetadataType metadata = new MetadataType(); + /** * <p> * s * Constructor to build an DublinCore element for an OAIPMH request by getting TextGrid @@ -38,6 +39,12 @@ public final class DublinCoreBuilder { } + /** + * Each of the following functions for generating the DC-XML file + * produces an ElementType for the DC-field and puts each + * element of the list into the corresponding XML-tag + */ + /** * <p> * Takes a string list containing the contributors and build the specific dublinCore element for diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java index 32c14455..90cda9e1 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java @@ -10,22 +10,34 @@ import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.search.SearchHit; /** - * + * <p> + * The Dublin Core Field Loader takes the results of the + * ElasticSearch request and puts them into a String-List. + * For each element of Dublin Core exists a seperate list. + * + * For each element two functions are necessary because the datatype "SeachHit" + * could contain more then one results and the GetResponse just one + * </p> + * + * @author Maximilian Brodhun, SUB Goettingen + * @author Stefan E. Funk, SUB Goettingen + * @version 24.05.2019 + * @since 18.02.2014 */ public class DublinCoreFieldLoader { private static Log log = LogFactory.getLog(OAIPMHImpl.class); /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setContributor(SearchHit hit, String[] values) { + public static List<String> setContributor(SearchHit hit, String[] fields) { List<String> contributors = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { contributors.add(hit.getFields().get(field).values().get(0) .toString()); @@ -36,16 +48,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setContributor(GetResponse responseWorkValues, String[] values) { + public static List<String> setContributor(GetResponse responseWorkValues, String[] fields) { List<String> contributors = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { contributors.add(responseWorkValues.getField(field).getValue().toString()); } @@ -57,16 +69,16 @@ public class DublinCoreFieldLoader { /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setCreator(GetResponse responseWorkValues, String[] values) { + public static List<String> setCreator(GetResponse responseWorkValues, String[] fields) { List<String> creators = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { creators.add(responseWorkValues.getField(field).getValue().toString()); } @@ -77,15 +89,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setCreator(SearchHit hit, String[] values) { + public static List<String> setCreator(SearchHit hit, String[] fields) { List<String> creators = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { creators.add(hit.getFields().get(field).values().get(0) .toString()); @@ -96,16 +108,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setCoverage(GetResponse responseWorkValues, String[] values) { + public static List<String> setCoverage(GetResponse responseWorkValues, String[] fields) { List<String> coverages = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { coverages.add(responseWorkValues.getField(field).getValue().toString()); } @@ -116,15 +128,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setCoverage(SearchHit hit, String[] values) { + public static List<String> setCoverage(SearchHit hit, String[] fields) { List<String> coverages = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { coverages.add(hit.getFields().get(field).values().get(0) .toString()); @@ -135,16 +147,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setDate(GetResponse responseWorkValues, String[] values) { + public static List<String> setDate(GetResponse responseWorkValues, String[] fields) { List<String> dates = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { try { // FIXME DO SET VALUES VIA CONFIG FILE! if (responseWorkValues.getField(field) != null) { @@ -172,15 +184,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setDate(SearchHit hit, String[] values) { + public static List<String> setDate(SearchHit hit, String[] fields) { List<String> dates = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { try { @@ -200,16 +212,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setDescription(GetResponse responseWorkValues, String[] values) { + public static List<String> setDescription(GetResponse responseWorkValues, String[] fields) { List<String> descriptions = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { descriptions.add(responseWorkValues.getField(field).getValue().toString()); } @@ -220,15 +232,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setDescription(SearchHit hit, String[] values) { + public static List<String> setDescription(SearchHit hit, String[] fields) { List<String> descriptions = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { descriptions.add(hit.getFields().get(field).values().get(0) .toString()); @@ -239,15 +251,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setFormat(SearchHit hit, String[] values) { + public static List<String> setFormat(SearchHit hit, String[] fields) { List<String> formats = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { formats.add(hit.getFields().get(field).values().get(0) .toString()); @@ -258,16 +270,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setFormat(GetResponse responseWorkValues, String[] values) { + public static List<String> setFormat(GetResponse responseWorkValues, String[] fields) { List<String> formats = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { formats.add(responseWorkValues.getField(field).getValue().toString()); } @@ -278,16 +290,16 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setIdentifier(SearchHit hit, String[] values) { + public static List<String> setIdentifier(SearchHit hit, String[] fields) { List<String> identifiers = new ArrayList<String>(); String identifier = ""; - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { for (int i = 0; i < hit.getFields().get(field).getValues().size(); i++) { if (hit.getFields().get(field).values().get(i).toString().startsWith("textgrid")) { @@ -305,24 +317,22 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setIdentifier(GetResponse responseWorkValues, String[] values) { + public static List<String> setIdentifier(GetResponse responseWorkValues, String[] fields) { List<String> identifiers = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { List<Object> entireIdentifier = responseWorkValues.getField(field).getValues(); for (int i = 0; i < responseWorkValues.getField(field).getValues().size(); i++) { identifiers.add(entireIdentifier.get(i).toString()); } - // identifiers.add(responseWorkValues.getField(field).getValue().toString()); - // identifiers.add(entireIdentifier.get(i)); } } } @@ -331,15 +341,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setLanguage(SearchHit hit, String[] values) { + public static List<String> setLanguage(SearchHit hit, String[] fields) { List<String> languages = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { languages.add(hit.getFields().get(field).values().get(0).toString()); } @@ -349,16 +359,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setLanguage(GetResponse responseWorkValues, String[] values) { + public static List<String> setLanguage(GetResponse responseWorkValues, String[] fields) { List<String> languages = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { languages.add(responseWorkValues.getField(field).getValue().toString()); } @@ -369,15 +379,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setPublisher(SearchHit hit, String[] values) { + public static List<String> setPublisher(SearchHit hit, String[] fields) { List<String> publishers = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { publishers.add(hit.getFields().get(field).values().get(0).toString()); } @@ -387,16 +397,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setPublisher(GetResponse responseWorkValues, String[] values) { + public static List<String> setPublisher(GetResponse responseWorkValues, String[] fields) { List<String> publishers = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { publishers.add(responseWorkValues.getField(field).getValue().toString()); } @@ -407,15 +417,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setRelation(SearchHit hit, String[] values) { + public static List<String> setRelation(SearchHit hit, String[] fields) { List<String> relations = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { for (int i = 0; i < hit.getFields().get(field).getValues().size(); i++) { relations.add(hit.getFields().get(field).values().get(i).toString()); @@ -427,16 +437,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setRelation(GetResponse responseWorkValues, String[] values) { + public static List<String> setRelation(GetResponse responseWorkValues, String[] fields) { List<String> relations = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { relations.add(responseWorkValues.getField(field).getValue().toString()); } @@ -447,16 +457,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setRelationForWork(GetResponse responseWorkValues, String[] values) { + public static List<String> setRelationForWork(GetResponse responseWorkValues, String[] fields) { List<String> relations = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { relations.add(responseWorkValues.getField(field).getValue().toString()); } @@ -467,15 +477,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setRights(SearchHit hit, String[] values) { + public static List<String> setRights(SearchHit hit, String[] fields) { List<String> rights = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { rights.add(hit.getFields().get(field).values().get(0).toString()); } @@ -485,16 +495,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setRights(GetResponse responseWorkValues, String[] values) { + public static List<String> setRights(GetResponse responseWorkValues, String[] fields) { List<String> rights = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { rights.add(responseWorkValues.getField(field).getValue().toString()); } @@ -505,15 +515,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setSources(SearchHit hit, String[] values) { + public static List<String> setSources(SearchHit hit, String[] fields) { List<String> sources = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { sources.add(hit.getFields().get(field).values().get(0).toString()); } @@ -523,16 +533,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setSources(GetResponse responseWorkValues, String[] values) { + public static List<String> setSources(GetResponse responseWorkValues, String[] fields) { List<String> sources = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { sources.add(responseWorkValues.getField(field).getValue().toString()); } @@ -543,15 +553,15 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setSubject(GetResponse responseWorkValues, String[] values) { + public static List<String> setSubject(GetResponse responseWorkValues, String[] fields) { List<String> subjects = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { subjects.add(responseWorkValues.getField(field).getValue().toString()); } @@ -561,15 +571,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setSubject(SearchHit hit, String[] values) { + public static List<String> setSubject(SearchHit hit, String[] fields) { List<String> subjects = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { subjects.add(hit.getFields().get(field).values().get(0).toString()); } @@ -579,15 +589,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setTitle(SearchHit hit, String[] values) { + public static List<String> setTitle(SearchHit hit, String[] fields) { List<String> titles = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { for (int i = 0; i < hit.getFields().get(field).getValues().size(); i++) { titles.add(hit.getFields().get(field).values().get(i).toString()); @@ -599,16 +609,16 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setTitle(GetResponse responseWorkValues, String[] values) { + public static List<String> setTitle(GetResponse responseWorkValues, String[] fields) { List<String> titles = new ArrayList<String>(); if (responseWorkValues.isExists()) { - for (String field : values) { + for (String field : fields) { List<Object> entireTitles = responseWorkValues.getField(field).getValues(); if (responseWorkValues.getField(field) != null) { for (int i = 0; i < responseWorkValues.getField(field).getValues().size(); i++) { @@ -622,17 +632,17 @@ public class DublinCoreFieldLoader { } /** - * @param responseWorkValues - * @param values - * @return + * @param responseWorkValues contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setType(GetResponse responseWorkValues, String[] values) { + public static List<String> setType(GetResponse responseWorkValues, String[] fields) { List<String> types = new ArrayList<String>(); if (responseWorkValues.isExists()) { - if (values != null) { - for (String field : values) { + if (fields != null) { + for (String field : fields) { if (responseWorkValues.getField(field) != null) { types.add(responseWorkValues.getField(field).getValue().toString()); } @@ -644,15 +654,15 @@ public class DublinCoreFieldLoader { } /** - * @param hit - * @param values - * @return + * @param hit contains results of the ElasticSearch request + * @param fields containing all fields from ElasticSearch related to this Dublin Core field + * @return all elements mapped from TetxGrid metadata scheme to Dublin Core */ - public static List<String> setType(SearchHit hit, String[] values) { + public static List<String> setType(SearchHit hit, String[] fields) { List<String> types = new ArrayList<String>(); - for (String field : values) { + for (String field : fields) { if (hit.getFields().get(field) != null) { for (int i = 0; i < hit.getFields().get(field).getValues().size(); i++) { types.add(hit.getFields().get(field).values().get(i).toString()); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java index 97936597..6d25b48e 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java @@ -60,7 +60,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { // DC-Field Lists // ** - private List<String> contributors = new ArrayList<String>(); + /*private List<String> contributors = new ArrayList<String>(); private List<String> coverages = new ArrayList<String>(); private List<String> creators = new ArrayList<String>(); private List<String> dates = new ArrayList<String>(); @@ -74,7 +74,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { private List<String> sources = new ArrayList<String>(); private List<String> subjects = new ArrayList<String>(); private List<String> titles = new ArrayList<String>(); - private List<String> types = new ArrayList<String>(); + private List<String> types = new ArrayList<String>();*/ private String[] contributorList; private String[] coverageList; @@ -159,7 +159,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { String scrollID = ""; SearchResponse scrollResp; QueryBuilder recordFilter; - + DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder(); if (this.dariah == true) { recordFilter = query; } else { @@ -227,20 +227,20 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { } } - putContentIntoDCFieldLists(hit, + dublinCoreBuilder = putContentIntoDCFieldLists(hit, furtherDCElements(workUri, OAI_ESClient.getOaiESClient())); buildRecord(recordList, set, - hit.getFields().get(this.identifierField).getValue().toString()); - listClearer(); + hit.getFields().get(this.identifierField).getValue().toString(), dublinCoreBuilder); + //listClearer(); } if (this.dariah == true) { putContentIntoDCFieldLists2(hit, furtherDCElements(hit.getId(), OAI_ESClient.getOaiESClient())); buildRecord(recordList, set, - hit.getFields().get(this.identifierField).getValue().toString()); - listClearer(); + hit.getFields().get(this.identifierField).getValue().toString(), dublinCoreBuilder); + //listClearer(); } } } @@ -261,9 +261,29 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { * @param hit * @param responseWorkValues */ - public void putContentIntoDCFieldLists(SearchHit hit, GetResponse responseWorkValues) { - this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList); - this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList); + public DublinCoreBuilder putContentIntoDCFieldLists(SearchHit hit, GetResponse responseWorkValues) { + + DublinCoreBuilder result = new DublinCoreBuilder(); + + result.setContributor(DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList)); + result.setCoverage(DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList)); + result.setCreator(DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList)); + result.setDate(DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList)); + result.setDescription(DublinCoreFieldLoader.setDescription(responseWorkValues, this.descriptionList)); + result.setFormat(DublinCoreFieldLoader.setFormat(hit, this.formatList)); + result.setIdentifier(DublinCoreFieldLoader.setIdentifier(hit, this.identifierList)); + result.setLanguage(DublinCoreFieldLoader.setLanguage(hit, this.languageList)); + result.setPublisher(DublinCoreFieldLoader.setPublisher(hit, this.publisherList)); + result.setRelation(DublinCoreFieldLoader.setRelation(hit, this.relationList)); + result.setRelation(DublinCoreFieldLoader.setRelationForWork(responseWorkValues, this.relationForWorkList)); + result.setRights(DublinCoreFieldLoader.setRights(hit, this.rightList)); + result.setSource(DublinCoreFieldLoader.setSources(hit, this.sourceList)); + result.setSubject(DublinCoreFieldLoader.setSubject(hit, this.subjectList)); + result.setTitle(DublinCoreFieldLoader.setTitle(hit, this.titleList)); + result.setType(DublinCoreFieldLoader.setType(responseWorkValues, this.typeList)); + + return result; + /*this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList); this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList); this.dates = DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList); this.descriptions = @@ -279,7 +299,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList); this.subjects = DublinCoreFieldLoader.setSubject(hit, this.subjectList); this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList); - this.types = DublinCoreFieldLoader.setType(responseWorkValues, this.typeList); + this.types = DublinCoreFieldLoader.setType(responseWorkValues, this.typeList);*/ } /** @@ -287,7 +307,26 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { * @param responseWorkValues */ public void putContentIntoDCFieldLists2(SearchHit hit, GetResponse responseWorkValues) { - this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList); + + DublinCoreBuilder result = new DublinCoreBuilder(); + + result.setContributor(DublinCoreFieldLoader.setContributor(hit, this.contributorList)); + result.setCoverage(DublinCoreFieldLoader.setCoverage(hit, this.coverageList)); + result.setCreator(DublinCoreFieldLoader.setCreator(hit, this.creatorList)); + result.setDate(DublinCoreFieldLoader.setDate(hit, this.dateList)); + result.setDescription(DublinCoreFieldLoader.setDescription(hit, this.descriptionList)); + result.setFormat(DublinCoreFieldLoader.setFormat(hit, this.formatList)); + result.setIdentifier(DublinCoreFieldLoader.setIdentifier(hit, this.identifierList)); + result.setLanguage(DublinCoreFieldLoader.setLanguage(hit, this.languageList)); + result.setPublisher(DublinCoreFieldLoader.setPublisher(hit, this.publisherList)); + result.setRelation(DublinCoreFieldLoader.setRelation(hit, this.relationList)); + result.setRights(DublinCoreFieldLoader.setRights(hit, this.rightList)); + result.setSource(DublinCoreFieldLoader.setSources(hit, this.sourceList)); + result.setSubject(DublinCoreFieldLoader.setSources(hit, this.subjectList)); + result.setTitle(DublinCoreFieldLoader.setTitle(hit, this.titleList)); + result.setType(DublinCoreFieldLoader.setType(hit, this.typeList)); + + /*this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList); this.coverages = DublinCoreFieldLoader.setCoverage(hit, this.coverageList); this.creators = DublinCoreFieldLoader.setCreator(hit, this.creatorList); this.dates = DublinCoreFieldLoader.setDate(hit, this.dateList); @@ -301,7 +340,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList); this.subjects = DublinCoreFieldLoader.setSources(hit, this.subjectList); this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList); - this.types = DublinCoreFieldLoader.setType(hit, this.typeList); + this.types = DublinCoreFieldLoader.setType(hit, this.typeList);*/ } /** @@ -310,24 +349,25 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { * @param headerIdentifier * @return */ - public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) { + public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier, DublinCoreBuilder dublinCoreBuilder) { ObjectFactory of = new ObjectFactory(); OaiDcType odt = new OaiDcType(); - DublinCoreBuilder newDbc = new DublinCoreBuilder(); + //DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder(); MetadataType metadata = new MetadataType(); RecordType record = new RecordType(); // TODO Test if this is unnecessary // HeaderType recordHeader = new HeaderType(); - setDCObject(newDbc); + //setDCObject(newDbc); + //dublinCoreBuilder = putContentIntoDCFieldLists(esResultObject); /* * if (!this.identifiers.isEmpty()) { recordHeader.setIdentifier(this.identifiers.get(0)); } if * (!this.dates.isEmpty()) { recordHeader.setDatestamp(this.dates.get(0)); } */ - metadata = newDbc.getDC(); + metadata = dublinCoreBuilder.getDC(); record.setMetadata(metadata); record.setHeader(setHeader(set, headerIdentifier)); recordList.getRecord().add(record); @@ -425,7 +465,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { * @param of * @return */ - public DublinCoreBuilder setDCObject(DublinCoreBuilder dbc) { + /*public DublinCoreBuilder setDCObject(DublinCoreBuilder dbc) { dbc.setContributor(this.contributors); dbc.setCoverage(this.coverages); @@ -444,12 +484,12 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { dbc.setType(this.types); return dbc; - } + }*/ /** * */ - public void listClearer() { + /*public void listClearer() { this.contributors.clear(); this.coverages.clear(); this.creators.clear(); @@ -465,7 +505,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { this.subjects.clear(); this.titles.clear(); this.types.clear(); - } + }*/ /** * @param formatToFilter 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 5acd5811..a5950d92 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -38,7 +38,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { * info.textgrid.middleware.RecordListDelivererInterface#buildRecord(info.textgrid.middleware. * oaipmh.ListRecordsType, java.lang.String, java.lang.String) */ - @Override + //@Override public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) { MetadataType metadata = new MetadataType(); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java index 9ab30c61..aa3d0bd5 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererInterface.java @@ -6,7 +6,7 @@ import info.textgrid.middleware.oaipmh.RecordType; public interface RecordListDelivererInterface { - public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier); + //public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier); public ListRecordsType getRecords(String from, String to, String set, String resumptionToken); public HeaderType setHeader(String set, String headerIdentifier); 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 4a45af95..88697c79 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java @@ -322,7 +322,7 @@ public class OaiPmhTest { * @throws ParseException */ @Test - @Ignore + //@Ignore public void testListRecordSets() throws ParseException { OaiPmhTest.recordList.setContributor(TGConstants.CONTRIBUTOR_LIST); OaiPmhTest.recordList.setCoverage(TGConstants.COVERAGE_LIST); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java index a487f7eb..61979ebf 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java @@ -482,11 +482,11 @@ public class OaiPmhTextgridOnlineTests { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, - NO_SET, OAI_DC_PREFIX, 200, 100, "[B1]")); + NO_SET, OAI_DC_PREFIX, 33, 100, "[B1]")); Future<Boolean> f2 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, - NO_SET, OAI_DC_PREFIX, 194, 100, "[B2]")); + NO_SET, OAI_DC_PREFIX, 33, 100, "[B2]")); Future<Boolean> f3 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, - NO_SET, OAI_DC_PREFIX, 256, 100, "[B3]")); + NO_SET, OAI_DC_PREFIX, 33, 100, "[B3]")); executor.shutdown(); -- GitLab