From e3ec1b60b287f45a23989ee37d85fd92f302a764 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Wed, 11 Mar 2015 18:18:03 +0100
Subject: [PATCH] mc

---
 .../info/textgrid/middleware/OAIPMHImpl.java  |   5 -
 .../middleware/RecordListDeliverer.java       | 287 +++++++++++++-----
 2 files changed, 206 insertions(+), 86 deletions(-)

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 6fb22c0a..864df145 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
@@ -465,8 +465,6 @@ public class OAIPMHImpl implements OAIPMHProducer {
 		// TGConstants.TGFields);
 		JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
 
-		System.out.println("ARGL 1");
-
 		if (recordList.requestChecker(request)) {
 
 			if (!request.getMetadataPrefix().equals(
@@ -480,9 +478,6 @@ public class OAIPMHImpl implements OAIPMHProducer {
 				oai.getError().add(
 						error.setError(TGConstants.OAI_METADATA_FORMAT_ERROR));
 			} else {
-
-				System.out.println("ARGL 2");
-
 				listRecords = recordList.getRecordsWithSet(request.getFrom(),
 						request.getUntil(), request.getSet());
 				if (recordList.isFoundItems()) {
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
index 727d26ef..82f30311 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
@@ -2,11 +2,9 @@ package info.textgrid.middleware;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
-import java.net.URLEncoder;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import javax.xml.datatype.DatatypeConfigurationException;
 
@@ -18,7 +16,6 @@ import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;
-import org.elasticsearch.search.SearchHitField;
 
 import info.textgrid.middleware.oaipmh.HeaderType;
 import info.textgrid.middleware.oaipmh.ListRecordsType;
@@ -32,6 +29,9 @@ import info.textgrid.middleware.oaipmh.RequestType;
  * TODO Make aggregator URL configurable!
  * 
  * TODO Care about repeatable fields as done in TITLE!
+ * 
+ * TODO Replace CregId with "dariah:collection:", use static final or even
+ * config file value!
  */
 
 public class RecordListDeliverer {
@@ -64,11 +64,11 @@ public class RecordListDeliverer {
 	private String									repositoryObjectURIPrefix;
 	private String									rangeField;
 	private boolean									foundItems;
-
 	private String									collectionTitle;
-	/*
-	 * DC-Field Lists
-	 */
+
+	// **
+	// DC-Field Lists
+	// **
 
 	private List<String>							contributors	= new ArrayList<String>();
 	private List<String>							coverages		= new ArrayList<String>();
@@ -127,11 +127,8 @@ public class RecordListDeliverer {
 	 * @param esClient
 	 * @throws UnsupportedEncodingException
 	 */
-
 	public GetResponse furtherDCElements(String id, OAI_ESClient esClient) {
 
-		System.out.println("URGL START!");
-
 		try {
 			id = URLDecoder.decode(id, "UTF-8");
 		} catch (UnsupportedEncodingException e) {
@@ -141,13 +138,14 @@ public class RecordListDeliverer {
 
 		GetRequestBuilder getWorkValues = esClient.getOaiESClient()
 				.prepareGet().setIndex(esClient.getEsIndex())
-				.setType(esClient.getEsType()).setId(id).setFields(workFields);
+				.setType(esClient.getEsType()).setId(id)
+				.setFields(this.workFields);
 
 		GetResponse responseWorkValues = getWorkValues.execute().actionGet();
 
-		if (dariah == true) {
-			collectionTitle = responseWorkValues.getField("metadata.dc:title")
-					.getValue().toString();
+		if (this.dariah == true) {
+			this.collectionTitle = responseWorkValues
+					.getField("metadata.dc:title").getValue().toString();
 		}
 
 		return responseWorkValues;
@@ -164,15 +162,17 @@ public class RecordListDeliverer {
 	 */
 	public void fetchFields(QueryBuilder query, ListRecordsType recordList) {
 
-		SearchRequestBuilder getRecordList = oaiEsClient.getOaiESClient()
-				.prepareSearch(oaiEsClient.getEsIndex())
-				.setTypes(oaiEsClient.getEsType()).addFields(fields)
+		SearchRequestBuilder getRecordList = this.oaiEsClient.getOaiESClient()
+				.prepareSearch(this.oaiEsClient.getEsIndex())
+				.setTypes(this.oaiEsClient.getEsType()).addFields(this.fields)
 				.setQuery(query).setSize(1000);
 
 		SearchResponse getRecordListItems = getRecordList.execute().actionGet();
 
+		// TODO REMOVE DEBUG OUTPUT
 		System.out.println("totalHits: "
 				+ getRecordListItems.getHits().totalHits());
+		// TODO REMOVE DEBUG OUTPUT
 
 		if (getRecordListItems != null
 				&& getRecordListItems.getHits().totalHits() > 0) {
@@ -199,7 +199,7 @@ public class RecordListDeliverer {
 					try {
 
 						String datestamp = hit.getFields()
-								.get(dateOfObjectCreation).getValue()
+								.get(this.dateOfObjectCreation).getValue()
 								.toString();
 
 						datestamp = OAIPMHUtillities.convertDateFormat(
@@ -215,18 +215,22 @@ public class RecordListDeliverer {
 					// is in an other object than just the edition
 
 					// TextGrid search!
-					if (textgrid == true) {
-						String workUri = hit.getFields()
-								.get(relationToFurtherMetadataObject).values()
-								.get(0).toString()
-								.substring(repositoryObjectURIPrefix.length());
+					if (this.textgrid == true) {
+						String workUri = hit
+								.getFields()
+								.get(this.relationToFurtherMetadataObject)
+								.values()
+								.get(0)
+								.toString()
+								.substring(
+										this.repositoryObjectURIPrefix.length());
 
 						if (!workUri.endsWith(".0")) {
 							workUri = workUri.concat(".0");
 
 						}
 						putContentIntoDCFieldLists(hit,
-								furtherDCElements(workUri, oaiEsClient));
+								furtherDCElements(workUri, this.oaiEsClient));
 						buildRecord(recordList);
 						listClearer();
 					}
@@ -236,7 +240,7 @@ public class RecordListDeliverer {
 					// relationToFurtherMetadataObject);
 
 					// if (dariah == true && shf != null) {
-					if (dariah == true) {
+					if (this.dariah == true) {
 
 						// String collectionUri = shf.values().toString();
 						//
@@ -252,8 +256,9 @@ public class RecordListDeliverer {
 						// e.printStackTrace();
 						// }
 
-						putContentIntoDCFieldLists2(hit,
-								furtherDCElements(hit.getId(), oaiEsClient));
+						putContentIntoDCFieldLists2(
+								hit,
+								furtherDCElements(hit.getId(), this.oaiEsClient));
 						buildRecord(recordList);
 						listClearer();
 					}
@@ -266,59 +271,82 @@ public class RecordListDeliverer {
 		}
 	}
 
+	/**
+	 * @param hit
+	 * @param responseWorkValues
+	 */
 	public void putContentIntoDCFieldLists(SearchHit hit,
 			GetResponse responseWorkValues) {
 
-		contributors = DublinCoreFieldLoader.setContributor(hit,
-				contributorList);
-		coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues,
-				coverageList);
-		creators = DublinCoreFieldLoader.setCreator(responseWorkValues,
-				creatorList);
-		dates = DublinCoreFieldLoader.setDate(responseWorkValues, dateList);
-		descriptions = DublinCoreFieldLoader.setDescription(responseWorkValues,
-				descriptionList);
-		formats = DublinCoreFieldLoader.setFormat(hit, formatList);
-		identifiers = DublinCoreFieldLoader.setIdentifier(hit, identifierList);
-		languages = DublinCoreFieldLoader.setLanguage(hit, languageList);
-		publishers = DublinCoreFieldLoader.setPublisher(hit, publisherList);
-		relations = DublinCoreFieldLoader.setRelation(hit, relationList);
-		relations = DublinCoreFieldLoader.setRelationForWork(
-				responseWorkValues, relationForWorkList);
-		rights = DublinCoreFieldLoader.setRights(hit, rightList);
-		sources = DublinCoreFieldLoader.setSources(hit, sourceList);
-		subjects = DublinCoreFieldLoader.setSubject(hit, subjectList);
-		titles = DublinCoreFieldLoader.setTitle(hit, titleList);
-		types = DublinCoreFieldLoader.setType(responseWorkValues, typeList);
+		this.contributors = DublinCoreFieldLoader.setContributor(hit,
+				this.contributorList);
+		this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues,
+				this.coverageList);
+		this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues,
+				this.creatorList);
+		this.dates = DublinCoreFieldLoader.setDate(responseWorkValues,
+				this.dateList);
+		this.descriptions = DublinCoreFieldLoader.setDescription(
+				responseWorkValues, this.descriptionList);
+		this.formats = DublinCoreFieldLoader.setFormat(hit, this.formatList);
+		this.identifiers = DublinCoreFieldLoader.setIdentifier(hit,
+				this.identifierList);
+		this.languages = DublinCoreFieldLoader.setLanguage(hit,
+				this.languageList);
+		this.publishers = DublinCoreFieldLoader.setPublisher(hit,
+				this.publisherList);
+		this.relations = DublinCoreFieldLoader.setRelation(hit,
+				this.relationList);
+		this.relations = DublinCoreFieldLoader.setRelationForWork(
+				responseWorkValues, this.relationForWorkList);
+		this.rights = DublinCoreFieldLoader.setRights(hit, this.rightList);
+		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);
 
 	}
 
+	/**
+	 * @param hit
+	 * @param responseWorkValues
+	 */
 	public void putContentIntoDCFieldLists2(SearchHit hit,
 			GetResponse responseWorkValues) {
 
-		contributors = DublinCoreFieldLoader.setContributor(hit,
-				contributorList);
-		coverages = DublinCoreFieldLoader.setCoverage(hit, coverageList);
-		creators = DublinCoreFieldLoader.setCreator(hit, creatorList);
-		dates = DublinCoreFieldLoader.setDate(hit, dateList);
-		descriptions = DublinCoreFieldLoader.setDescription(hit,
-				descriptionList);
-		formats = DublinCoreFieldLoader.setFormat(hit, formatList);
-		identifiers = DublinCoreFieldLoader.setIdentifier(hit, identifierList);
-		languages = DublinCoreFieldLoader.setLanguage(hit, languageList);
-		publishers = DublinCoreFieldLoader.setPublisher(hit, publisherList);
-		relations = DublinCoreFieldLoader.setRelation(hit, relationList);
+		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);
+		this.descriptions = DublinCoreFieldLoader.setDescription(hit,
+				this.descriptionList);
+		this.formats = DublinCoreFieldLoader.setFormat(hit, this.formatList);
+		this.identifiers = DublinCoreFieldLoader.setIdentifier(hit,
+				this.identifierList);
+		this.languages = DublinCoreFieldLoader.setLanguage(hit,
+				this.languageList);
+		this.publishers = DublinCoreFieldLoader.setPublisher(hit,
+				this.publisherList);
+		this.relations = DublinCoreFieldLoader.setRelation(hit,
+				this.relationList);
 		// relations =
 		// DublinCoreFieldLoader.setRelationForWork(responseWorkValues,
 		// relationForWorkList);
-		rights = DublinCoreFieldLoader.setRights(hit, rightList);
-		sources = DublinCoreFieldLoader.setSources(hit, sourceList);
-		subjects = DublinCoreFieldLoader.setSources(hit, subjectList);
-		titles = DublinCoreFieldLoader.setTitle(hit, titleList);
-		types = DublinCoreFieldLoader.setType(hit, typeList);
+		this.rights = DublinCoreFieldLoader.setRights(hit, this.rightList);
+		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);
 
 	}
 
+	/**
+	 * @param recordList
+	 * @return
+	 */
 	public RecordType buildRecord(ListRecordsType recordList) {
 
 		ObjectFactory of = new ObjectFactory();
@@ -331,34 +359,40 @@ public class RecordListDeliverer {
 
 		setDCObject(odt, of);
 
-		if (!identifiers.isEmpty()) {
-			recordHeader.setIdentifier(identifiers.get(0));
+		if (!this.identifiers.isEmpty()) {
+			recordHeader.setIdentifier(this.identifiers.get(0));
 		}
 		// TODO Why take the 0th date here?
-		if (!dates.isEmpty()) {
-			recordHeader.setDatestamp(dates.get(0));
+		if (!this.dates.isEmpty()) {
+			recordHeader.setDatestamp(this.dates.get(0));
 		}
 
 		metadata = newDbc.getDC();
 		record.setMetadata(metadata);
-		record.setHeader(setHeader(set));
+		record.setHeader(setHeader(this.set));
 		recordList.getRecord().add(record);
 
 		return record;
 	}
 
+	/**
+	 * @param from
+	 * @param to
+	 * @param set
+	 * @return
+	 */
 	public ListRecordsType getRecordsWithSet(String from, String to, String set) {
 
 		ListRecordsType recordList = new ListRecordsType();
 		QueryBuilder query;
-		QueryBuilder rangeQuery = QueryBuilders.rangeQuery(rangeField)
+		QueryBuilder rangeQuery = QueryBuilders.rangeQuery(this.rangeField)
 				.from(from).to(to);
 
 		if (set != null) {
 			this.set = set;
 			String[] setParts = set.split(":");
 
-			if (dariah == true) {
+			if (this.dariah == true) {
 				if (setParts[0].equals("cregId")) {
 					/*
 					 * cregId is the name of the set Category but no field in
@@ -372,7 +406,7 @@ public class RecordListDeliverer {
 				}
 			}
 
-			if (textgrid == true) {
+			if (this.textgrid == true) {
 				if (setParts[0].equals("project")) {
 
 					setParts[0] = setParts[0].concat(".value");
@@ -396,14 +430,18 @@ public class RecordListDeliverer {
 		return recordList;
 	}
 
+	/**
+	 * @param set
+	 * @return
+	 */
 	public HeaderType setHeader(String set) {
 
 		HeaderType header = new HeaderType();
-		header.setDatestamp(dates.get(0));
-		header.setIdentifier(identifiers.get(0));
+		header.setDatestamp(this.dates.get(0));
+		header.setIdentifier(this.identifiers.get(0));
 		if (set != null) {
 			header.getSetSpec().add(set);
-			header.getSetSpec().add(collectionTitle);
+			header.getSetSpec().add(this.collectionTitle);
 		}
 		return header;
 	}
@@ -436,6 +474,9 @@ public class RecordListDeliverer {
 		return dbc;
 	}
 
+	/**
+	 * 
+	 */
 	public void listClearer() {
 
 		this.contributors.clear();
@@ -455,43 +496,73 @@ public class RecordListDeliverer {
 		this.types.clear();
 	}
 
+	/**
+	 * @param formatToFilter
+	 */
 	public void setFormatToFilter(String formatToFilter) {
 		this.formatToFilter = formatToFilter;
 	}
 
+	/**
+	 * @param formatField
+	 */
 	public void setFormatField(String formatField) {
 		this.formatField = formatField;
 	}
 
+	/**
+	 * @return
+	 */
 	public String getDateOfObjectCreation() {
-		return dateOfObjectCreation;
+		return this.dateOfObjectCreation;
 	}
 
+	/**
+	 * @param dateOfObjectCreation
+	 */
 	public void setDateOfObjectCreation(String dateOfObjectCreation) {
 		this.dateOfObjectCreation = dateOfObjectCreation;
 	}
 
+	/**
+	 * @return
+	 */
 	public String getRelationToFurtherMetadataObject() {
-		return relationToFurtherMetadataObject;
+		return this.relationToFurtherMetadataObject;
 	}
 
+	/**
+	 * @param relationToFurtherMetadataObject
+	 */
 	public void setRelationToFurtherMetadataObject(
 			String relationToFurtherMetadataObject) {
 		this.relationToFurtherMetadataObject = relationToFurtherMetadataObject;
 	}
 
+	/**
+	 * @return
+	 */
 	public String getRepositoryObjectURIPrefix() {
-		return repositoryObjectURIPrefix;
+		return this.repositoryObjectURIPrefix;
 	}
 
+	/**
+	 * @param repositoryObjectURIPrefix
+	 */
 	public void setRepositoryObjectURIPrefix(String repositoryObjectURIPrefix) {
 		this.repositoryObjectURIPrefix = repositoryObjectURIPrefix;
 	}
 
+	/**
+	 * @return
+	 */
 	public String getFieldForRange() {
-		return rangeField;
+		return this.rangeField;
 	}
 
+	/**
+	 * @param fieldForRange
+	 */
 	public void setFieldForRange(String fieldForRange) {
 		this.rangeField = fieldForRange;
 	}
@@ -500,66 +571,114 @@ public class RecordListDeliverer {
 	 * Setter for DublinCore Lists
 	 */
 
+	/**
+	 * @param contributorList
+	 */
 	public void setContributor(String[] contributorList) {
 		this.contributorList = contributorList;
 	}
 
+	/**
+	 * @param coveragesList
+	 */
 	public void setCoverage(String[] coveragesList) {
 		this.coverageList = coveragesList;
 	}
 
+	/**
+	 * @param creatorsList
+	 */
 	public void setCreators(String[] creatorsList) {
 		this.creatorList = creatorsList;
 	}
 
+	/**
+	 * @param datesList
+	 */
 	public void setDates(String[] datesList) {
 		this.dateList = datesList;
 	}
 
+	/**
+	 * @param descriptionsList
+	 */
 	public void setDescriptions(String[] descriptionsList) {
 		this.descriptionList = descriptionsList;
 	}
 
+	/**
+	 * @param formatsList
+	 */
 	public void setFormats(String[] formatsList) {
 		this.formatList = formatsList;
 	}
 
+	/**
+	 * @param identifiersList
+	 */
 	public void setIdentifiers(String[] identifiersList) {
 		this.identifierList = identifiersList;
 	}
 
+	/**
+	 * @param languagesList
+	 */
 	public void setLanguages(String[] languagesList) {
 		this.languageList = languagesList;
 	}
 
+	/**
+	 * @param publishersList
+	 */
 	public void setPublishers(String[] publishersList) {
 		this.publisherList = publishersList;
 	}
 
+	/**
+	 * @param relationsList
+	 */
 	public void setRelations(String[] relationsList) {
 		this.relationList = relationsList;
 	}
 
+	/**
+	 * @param relationsList
+	 */
 	public void setRelationsForWork(String[] relationsList) {
 		this.relationForWorkList = relationsList;
 	}
 
+	/**
+	 * @param rightsList
+	 */
 	public void setRights(String[] rightsList) {
 		this.rightList = rightsList;
 	}
 
+	/**
+	 * @param sourcesList
+	 */
 	public void setSources(String[] sourcesList) {
 		this.sourceList = sourcesList;
 	}
 
+	/**
+	 * @param subjectsList
+	 */
 	public void setSubjects(String[] subjectsList) {
 		this.subjectList = subjectsList;
 	}
 
+	/**
+	 * @param titlesList
+	 */
 	public void setTitles(String[] titlesList) {
 		this.titleList = titlesList;
 	}
 
+	/**
+	 * @param typesList
+	 */
 	public void setTypes(String[] typesList) {
 		this.typeList = typesList;
 	}
@@ -583,10 +702,16 @@ public class RecordListDeliverer {
 		return requestCheck;
 	}
 
+	/**
+	 * @return
+	 */
 	public boolean isFoundItems() {
-		return foundItems;
+		return this.foundItems;
 	}
 
+	/**
+	 * @param foundItems
+	 */
 	public void setFoundItems(boolean foundItems) {
 		this.foundItems = foundItems;
 	}
-- 
GitLab