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 40345719a3f2c1fe2bc5e5b37809ad6c2c5cf6f7..727d38988d93b53f22709b58c10bc8cf17ffc4e0 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java @@ -34,9 +34,11 @@ public class DublinCoreFieldLoader { private static org.apache.commons.logging.Log log = LogFactory.getLog(OAIPMHImpl.class); /** - * This function takes the results of the ElasticSearch resuest - * and fills the String-Lists with the specific values for the dublin core field - * @param responseOfGetRequest result of the ElasticSearch request from a getRequest (Single Result) + * This function takes the results of the ElasticSearch resuest and fills the String-Lists with + * the specific values for the dublin core field + * + * @param responseOfGetRequest result of the ElasticSearch request from a getRequest (Single + * Result) * @param fields String List for the specific dublin core field * @return String List containing the values for the specific dublin core field */ @@ -115,35 +117,35 @@ public class DublinCoreFieldLoader { @Deprecated public static List<String> fillList(GetResponse responseWorkValues, String[] fields) { - + List<String> list = new ArrayList<String>(); - - if (responseWorkValues.isExists()) { + + if (responseWorkValues.isExists()) { if (fields != null) { - for (String field : fields) { + for (String field : fields) { if (responseWorkValues.getSourceAsMap().get(field) == null) { String[] requestedField = field.split("\\."); Map<String, Object> nestedMap = responseWorkValues.getSourceAsMap(); String valueOfRequestedField = null; Map<String, Object> nestedMap2 = null; - for (int i = 0; i < requestedField.length; i++) { + for (int i = 0; i < requestedField.length; i++) { if (i < requestedField.length - 1 && nestedMap != null && nestedMap.get(requestedField[i]) != null) { - + nestedMap2 = (Map<String, Object>) nestedMap.get(requestedField[i]); } if (i == requestedField.length - 1 && nestedMap2 != null && nestedMap2.get(requestedField[i]) != null) { valueOfRequestedField = nestedMap2.get(requestedField[i]).toString(); - + if (valueOfRequestedField.length() > 0) { - + list.add(valueOfRequestedField); } } nestedMap = nestedMap2; } - } else { + } else { list.add(responseWorkValues.getSourceAsMap().get(field).toString()); } } @@ -158,9 +160,19 @@ public class DublinCoreFieldLoader { * @return */ public static List<String> fillList(SearchHit hit, String[] fields) { + return fillList(hit, fields, ""); + } + + /** + * @param hit + * @param fields + * @param prefix + * @return + */ + public static List<String> fillList(SearchHit hit, String[] fields, String prefix) { List<String> list = new ArrayList<String>(); - + if (fields != null) { for (String field : fields) { if (hit.getSourceAsMap().get(field) == null) { @@ -173,8 +185,8 @@ public class DublinCoreFieldLoader { && nestedMap.get(requestedField[i]) != null) { try { nestedMap2 = (Map<String, Object>) nestedMap.get(requestedField[i]); - } catch (ClassCastException cce) { - + } catch (ClassCastException e) { + e.printStackTrace(); } } if (i == requestedField.length - 1 && @@ -187,7 +199,10 @@ public class DublinCoreFieldLoader { nestedMap = nestedMap2; } } else { - list.add(hit.getSourceAsMap().get(field).toString()); + // Only add list entry if prefix is empty or beginning with prefix otherwise! + if (prefix.isEmpty() || hit.getSourceAsMap().get(field).toString().startsWith(prefix)) { + list.add(hit.getSourceAsMap().get(field).toString()); + } } } } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java index 37b24222c945fc4ab26e03d261df53f262a1768c..345108e1f1649c53cd4aaf04ebca93f752397d9d 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java @@ -165,12 +165,12 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract { long size = listFurtherValues.getHits().totalHits; setResultSize(size); - log.info(" ## hits --> " + size); + log.debug("hits: " + size); for (SearchHit hit : listFurtherValues.getHits().getHits()) { i++; - log.info(" ## hit --> " + hit.getId()); + log.debug("hit " + i + ": " + hit.getId()); // Handle TextGrid. if (this.textgrid) { @@ -190,26 +190,18 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract { // Handle DARIAH. else if (this.dariah) { - log.info(" ## dateOfObjectCreation --> " + this.dateOfObjectCreation); + log.debug("dateOfObjectCreation: " + this.dateOfObjectCreation); JSONObject json = new JSONObject(hit.getSourceAsMap()); - // Get modifiedDate field. - // FIXME Möglicherweise doppelt gemoppelt? Sind auch einzelne Abfragefelder in - // OAIPMHUtilities.fieldLoader() abgebildet? - if (this.dateOfObjectCreation.contains(OAIPMHUtilities.ES_DIVIDER_CHAR)) { - this.datestamp = OAIPMHUtilities.fieldLoader(json, this.dateOfObjectCreation); - } else { - this.datestamp = hit.getSourceAsMap().get(this.dateOfObjectCreation).toString(); - } - // Convert datestamp. + // Get modifiedDate field and convert datestamp. + this.datestamp = OAIPMHUtilities.fieldLoader(json, this.dateOfObjectCreation); try { - - log.info(" ## datestamp --> " + this.datestamp); + log.debug("datestamp: " + this.datestamp); this.datestamp = OAIPMHUtilities.convertDateFormat(this.datestamp).toXMLFormat(); - log.info(" ## datestamp converted --> " + this.datestamp); + log.debug("datestamp converted: " + this.datestamp); } catch (ParseException e) { log.error(e.getMessage()); @@ -220,16 +212,9 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract { } // Get identifier field. - String identifier = ""; - // FIXME Möglicherweise doppelt gemoppelt? Sind auch einzelne Abfragefelder in - // OAIPMHUtilities.fieldLoader() abgebildet? - if (this.identifierField.contains(OAIPMHUtilities.ES_DIVIDER_CHAR)) { - identifier = OAIPMHUtilities.fieldLoader(json, this.identifierField); - } else { - identifier = hit.getSourceAsMap().get(this.identifierField).toString(); - } + String identifier = OAIPMHUtilities.fieldLoader(json, this.identifierField); - log.info(" ## identifier --> " + identifier); + log.debug("identifier: " + identifier); lit = setListIdentifierHeader(this.datestamp, identifier, lit, set); } 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 3151eeadf71684be329879c5bd1d9c27a8c9829d..94dc1212208bab0b1c3778253898fa29dded46a9 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java @@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.text.ParseException; import java.util.Hashtable; +import java.util.List; import java.util.Map; import javax.xml.datatype.DatatypeConfigurationException; import org.apache.commons.logging.LogFactory; @@ -264,11 +265,10 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { // DARIAH search! else if (this.dariah == true) { - System.out.println(" ## kramsblablaZWO --> " - + DublinCoreFieldLoader.fillList(hit, DARIAHConstants.IDENTIFIER_LIST)); + List<String> identifierList = + DublinCoreFieldLoader.fillList(hit, DARIAHConstants.IDENTIFIER_LIST, "hdl:"); - String setSpec = "hdl:" - + DublinCoreFieldLoader.fillList(hit, DARIAHConstants.IDENTIFIER_LIST).get(0); + String setSpec = identifierList.get(0); System.out.println(" ## setSpec --> " + setSpec); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java index 8a12aa639ff0c6833e6d209bcd71a3b374a1e5da..6744f47b9382a36a835d9d7f68a448b95c18fc29 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java @@ -138,14 +138,14 @@ public class SetDeliverer { request.source(searchSourceBuilder); - log.info(" ## SetDeliverer() request --> " + request); + log.debug("request: " + request); // Get items with TG or DH request. SearchResponse getRecordListItems = null; try { getRecordListItems = OAI_ESClient.getEsClient().search(request, RequestOptions.DEFAULT); - log.info(" ## SetDeliverer() list item count --> " + getRecordListItems.getHits().totalHits); + log.debug("list item count: " + getRecordListItems.getHits().totalHits); } catch (IOException e) { // TODO Auto-generated catch block @@ -191,7 +191,7 @@ public class SetDeliverer { String name = entry.getKey(); - log.info(" ## entry key --> " + entry.getKey()); + log.debug("entry key: " + entry.getKey()); if (name.equals(DH_COLLECTION_FILTER_NAME)) { Filter filterCollection = @@ -202,16 +202,16 @@ public class SetDeliverer { // Divide ID and title. String combined = b.getKeyAsString(); - log.info(" ## combined --> " + combined); + log.debug("combined: " + combined); int indexOf = combined.indexOf(DH_FIELD_DIVIDER); String id = combined.substring(0, indexOf); - log.info(" ## id --> " + id); + log.debug("id: " + id); String title = combined.substring(indexOf + 1); - log.info(" ## title --> " + title); + log.debug("title: " + title); // Set set. SetType newSet = new SetType();