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 9534300ced39e5014a1536e499568c8f3d9e3fff..2475161b7f119f2af13104f1629268a863a74c0b 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -7,8 +7,10 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; +import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.List; @@ -26,7 +28,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.script.Script; +import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.json.JSONArray; import org.json.JSONException; @@ -263,14 +271,14 @@ public class OAIPMHUtilities { */ public static ResumptionTokenType getResumptionToken(final long completeListSize, final String resumptionToken, Map<String, Integer> cursorCollector, final String scrollID, - final int searchResponseSize, final int i) { - - log.debug("Creating a ResumptionToken:\n " + + int searchResponseSize, final int i) { + //TODO: searchResponseSize to final and configure it via propertiesFile + log.info("Creating a ResumptionToken:\n " + "CompleteListSize: " + completeListSize + "\n" + "ResumptionToken: " + resumptionToken + "\n" + "CursorCollector: " + cursorCollector + "\n" + "ScrollID: " + scrollID + "\n" + - "SearchResponseSize: " + scrollID + "\n" + + "SearchResponseSize: " + searchResponseSize + "\n" + "IterationStep: " + i); int cursor; @@ -280,7 +288,10 @@ public class OAIPMHUtilities { // check hash map! // 2. Complete list size is > searchResponseSize and we have no token: we do need one! // 3. Complete list size is <= searchResponseSize (we do not need a token! do nothing!) - + if(searchResponseSize < 100){ + //Just for idiom. Better implementation by config is TODO + searchResponseSize = 30; + } if (completeListSize > searchResponseSize) { ResumptionTokenType resTokenForResponse = new ResumptionTokenType(); @@ -294,7 +305,12 @@ public class OAIPMHUtilities { } else { resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize)); cursorCollector.put(scrollID, searchResponseSize); - cursor = 100; + if(searchResponseSize == 30){ + //AGAIN IDIOM CASE + cursor = 30; + }else{ + cursor = 100; + } resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor)); } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java index f43cc365a522328d303364b217a98550920d3f8e..216d0fe9bc12f3b0da831a80fbf85f0d04a3f905 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java @@ -89,13 +89,12 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(recordFilter); - searchSourceBuilder.size(100); + searchSourceBuilder.size(30); searchRequest.source(searchSourceBuilder); SearchResponse scrollResp = new SearchResponse(); if (resumptionToken != null) { - SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); scrollRequest.scroll(TimeValue.timeValueHours(24L)); @@ -155,6 +154,7 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer log.debug("cursorCollector: " + cursorCollector); } else { + log.info("HALLO"); setFoundItems(false); } 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 1c38debd22987a3acee23d45514d0afa711d1651..7bb839c3f8a085980eb9b81b1e027682e6816d6d 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -49,11 +49,12 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to); - recordFilterForClassicMayan = QueryBuilders.boolQuery().must(rangeQuery) - .must(QueryBuilders.matchPhraseQuery("project.id", - "TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318")) + recordFilterForClassicMayan = QueryBuilders.boolQuery() + .must(rangeQuery) + .must(QueryBuilders.matchPhraseQuery("project.id","TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318")) .must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml")) - .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT")); + .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT")) + ; SearchResponse scrollResp; @@ -65,7 +66,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { searchSourceBuilder.query(recordFilterForClassicMayan); searchSourceBuilder.size(30); searchRequest.source(searchSourceBuilder); - + log.info("resToken: " + resumptionToken); if (resumptionToken != null) { SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); scrollRequest.scroll(TimeValue.timeValueHours(24L)); @@ -90,28 +91,29 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { long completeListSize = scrollResp.getHits().totalHits; // long completeListSize = 45; - if (completeListSize > 0) { setFoundItems(true); int i = 0; - + for (SearchHit hit : scrollResp.getHits().getHits()) { i++; String textgridURI = OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri"); - log.debug("IDIOM URIs: " + textgridURI); + //log.debug("IDIOM URIs: " + textgridURI); // hit.getFields().get("textgridUri").getValue().toString().replace(".0", ""); - log.debug("Processing: " + textgridURI); - + //log.debug("Processing: " + textgridURI); + + log.info(i + " Records are processed"); RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false); recordList.getRecord() .add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord()); } // Check the need for a resumption token! + ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken( completeListSize, resumptionToken, cursorCollector, scrollID, 30, i); if (resTokenForResponse != null) { @@ -120,7 +122,6 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { } else { setFoundItems(false); } - return recordList; } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java b/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java index 56cb8ef77b9bc3e3302899455d99a56e8651d876..ef3cc6f11062367aaa0860c4f71e635f4212acdc 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java @@ -1,6 +1,8 @@ package info.textgrid.middleware; import static org.junit.Assert.assertTrue; + +import java.io.IOException; import java.text.ParseException; import org.junit.Test; diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index 37c18fa1c597e735e6fb0e2921d5ecac00907ad4..48e1e0660b9cd72fb99b8de95c2b02b270e1eb31 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -24,7 +24,7 @@ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> - <value>file:/etc/dhrep/oaipmh/oaipmh.properties</value> + <value>file:C:\dev\oai-pmh\oaipmh-webapp\src\main\webapp\WEB-INF\oaipmh.textgrid.properties</value> </list> </property> <property name="ignoreResourceNotFound" value="true" />