Skip to content
Snippets Groups Projects
Commit 8ee7827f authored by mbrodhu's avatar mbrodhu
Browse files

enable short list for resToken in case of idiom

parent 96691ae4
No related branches found
No related tags found
No related merge requests found
...@@ -7,8 +7,10 @@ import java.text.ParseException; ...@@ -7,8 +7,10 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.List; import java.util.List;
...@@ -26,7 +28,13 @@ import org.apache.commons.logging.Log; ...@@ -26,7 +28,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.RequestOptions; 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.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
...@@ -263,14 +271,14 @@ public class OAIPMHUtilities { ...@@ -263,14 +271,14 @@ public class OAIPMHUtilities {
*/ */
public static ResumptionTokenType getResumptionToken(final long completeListSize, public static ResumptionTokenType getResumptionToken(final long completeListSize,
final String resumptionToken, Map<String, Integer> cursorCollector, final String scrollID, final String resumptionToken, Map<String, Integer> cursorCollector, final String scrollID,
final int searchResponseSize, final int i) { int searchResponseSize, final int i) {
//TODO: searchResponseSize to final and configure it via propertiesFile
log.debug("Creating a ResumptionToken:\n " + log.info("Creating a ResumptionToken:\n " +
"CompleteListSize: " + completeListSize + "\n" + "CompleteListSize: " + completeListSize + "\n" +
"ResumptionToken: " + resumptionToken + "\n" + "ResumptionToken: " + resumptionToken + "\n" +
"CursorCollector: " + cursorCollector + "\n" + "CursorCollector: " + cursorCollector + "\n" +
"ScrollID: " + scrollID + "\n" + "ScrollID: " + scrollID + "\n" +
"SearchResponseSize: " + scrollID + "\n" + "SearchResponseSize: " + searchResponseSize + "\n" +
"IterationStep: " + i); "IterationStep: " + i);
int cursor; int cursor;
...@@ -280,7 +288,10 @@ public class OAIPMHUtilities { ...@@ -280,7 +288,10 @@ public class OAIPMHUtilities {
// check hash map! // check hash map!
// 2. Complete list size is > searchResponseSize and we have no token: we do need one! // 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!) // 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) { if (completeListSize > searchResponseSize) {
ResumptionTokenType resTokenForResponse = new ResumptionTokenType(); ResumptionTokenType resTokenForResponse = new ResumptionTokenType();
...@@ -294,7 +305,12 @@ public class OAIPMHUtilities { ...@@ -294,7 +305,12 @@ public class OAIPMHUtilities {
} else { } else {
resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize)); resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize));
cursorCollector.put(scrollID, searchResponseSize); cursorCollector.put(scrollID, searchResponseSize);
cursor = 100; if(searchResponseSize == 30){
//AGAIN IDIOM CASE
cursor = 30;
}else{
cursor = 100;
}
resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor)); resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor));
} }
......
...@@ -89,13 +89,12 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer ...@@ -89,13 +89,12 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(recordFilter); searchSourceBuilder.query(recordFilter);
searchSourceBuilder.size(100); searchSourceBuilder.size(30);
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
SearchResponse scrollResp = new SearchResponse(); SearchResponse scrollResp = new SearchResponse();
if (resumptionToken != null) { if (resumptionToken != null) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L)); scrollRequest.scroll(TimeValue.timeValueHours(24L));
...@@ -155,6 +154,7 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer ...@@ -155,6 +154,7 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
log.debug("cursorCollector: " + cursorCollector); log.debug("cursorCollector: " + cursorCollector);
} else { } else {
log.info("HALLO");
setFoundItems(false); setFoundItems(false);
} }
......
...@@ -49,11 +49,12 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { ...@@ -49,11 +49,12 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to); rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to);
recordFilterForClassicMayan = QueryBuilders.boolQuery().must(rangeQuery) recordFilterForClassicMayan = QueryBuilders.boolQuery()
.must(QueryBuilders.matchPhraseQuery("project.id", .must(rangeQuery)
"TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318")) .must(QueryBuilders.matchPhraseQuery("project.id","TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318"))
.must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml")) .must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml"))
.must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT")); .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT"))
;
SearchResponse scrollResp; SearchResponse scrollResp;
...@@ -65,7 +66,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { ...@@ -65,7 +66,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
searchSourceBuilder.query(recordFilterForClassicMayan); searchSourceBuilder.query(recordFilterForClassicMayan);
searchSourceBuilder.size(30); searchSourceBuilder.size(30);
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
log.info("resToken: " + resumptionToken);
if (resumptionToken != null) { if (resumptionToken != null) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L)); scrollRequest.scroll(TimeValue.timeValueHours(24L));
...@@ -90,28 +91,29 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { ...@@ -90,28 +91,29 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
long completeListSize = scrollResp.getHits().totalHits; long completeListSize = scrollResp.getHits().totalHits;
// long completeListSize = 45; // long completeListSize = 45;
if (completeListSize > 0) { if (completeListSize > 0) {
setFoundItems(true); setFoundItems(true);
int i = 0; int i = 0;
for (SearchHit hit : scrollResp.getHits().getHits()) { for (SearchHit hit : scrollResp.getHits().getHits()) {
i++; i++;
String textgridURI = String textgridURI =
OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "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", ""); // 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); RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false);
recordList.getRecord() recordList.getRecord()
.add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord()); .add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord());
} }
// Check the need for a resumption token! // Check the need for a resumption token!
ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken( ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(
completeListSize, resumptionToken, cursorCollector, scrollID, 30, i); completeListSize, resumptionToken, cursorCollector, scrollID, 30, i);
if (resTokenForResponse != null) { if (resTokenForResponse != null) {
...@@ -120,7 +122,6 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { ...@@ -120,7 +122,6 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
} else { } else {
setFoundItems(false); setFoundItems(false);
} }
return recordList; return recordList;
} }
......
package info.textgrid.middleware; package info.textgrid.middleware;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.text.ParseException; import java.text.ParseException;
import org.junit.Test; import org.junit.Test;
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations"> <property name="locations">
<list> <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> </list>
</property> </property>
<property name="ignoreResourceNotFound" value="true" /> <property name="ignoreResourceNotFound" value="true" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment