Skip to content
Snippets Groups Projects
Commit 1af26b1a authored by Stefan E. Funk's avatar Stefan E. Funk
Browse files

Add some method javadoc

Add some this. qualifiers
parent bd6879d5
No related branches found
No related tags found
No related merge requests found
Showing
with 1312 additions and 1096 deletions
......@@ -4,7 +4,6 @@ import java.text.ParseException;
import java.util.List;
import javax.xml.bind.JAXBElement;
import javax.xml.datatype.DatatypeConfigurationException;
import info.textgrid.middleware.oaipmh.ElementType;
import info.textgrid.middleware.oaipmh.MetadataType;
import info.textgrid.middleware.oaipmh.OaiDcType;
......@@ -108,8 +107,8 @@ public final class DublinCoreBuilder {
* </p>
*
* @param dates
* @throws DatatypeConfigurationException
* @throws ParseException
* @throws DatatypeConfigurationException
* @throws ParseException
*/
public void setDate(List<String> dates) throws ParseException, DatatypeConfigurationException {
for (String dcdate : dates) {
......@@ -163,11 +162,11 @@ public final class DublinCoreBuilder {
* @param identifiers
*/
public void setIdentifier(List<String> identifiers) {
for (String dcidentifier : identifiers) {
// System.out.println("hooray");
ElementType identifierElement = new ElementType();
identifierElement.setValue(dcidentifier);
JAXBElement<ElementType> dcCoreIdentifier = oaiDcObj.createIdentifier(identifierElement);
......@@ -339,7 +338,7 @@ public final class DublinCoreBuilder {
* @deprecated
*/
@Deprecated
public ObjectFactory getOaiDcObj() {
public static ObjectFactory getOaiDcObj() {
return oaiDcObj;
}
......
......@@ -2,24 +2,18 @@ package info.textgrid.middleware;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import org.classicmayan.tools.Queries;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import info.textgrid.middleware.oaipmh.ListIdentifiersType;
import info.textgrid.middleware.oaipmh.ResumptionTokenType;
......@@ -30,6 +24,7 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac
static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
private boolean foundItems;
/**
* @param textgrid
* @param dariah
......@@ -49,104 +44,114 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac
String resTokenValue = resumptionToken;
//QueryBuilder recordFilterForClassicMayan;
//QueryBuilder rangeQuery;
//rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to);
/*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"));*/
// QueryBuilder recordFilterForClassicMayan;
// QueryBuilder rangeQuery;
// rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to);
/*
* 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"));
*/
BoolQueryBuilder recordFilterForClassicMayan;
RangeQueryBuilder rangeQuery;
rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to);
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("project.id",
"TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318"))
.must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml"))
.must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT"));
ListIdentifiersType identifierList = new ListIdentifiersType();
//List<String> artefactURIs = new ArrayList<String>();
//Queries queries = new Queries();
// List<String> artefactURIs = new ArrayList<String>();
// Queries queries = new Queries();
SearchResponse scrollResp;
SearchRequest searchRequest = new SearchRequest(OAI_ESClient.getEsIndex());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
scrollResp = null;
searchSourceBuilder.query(recordFilterForClassicMayan);
searchSourceBuilder.size(30);
searchRequest.source(searchSourceBuilder);
if (resumptionToken == null) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().scroll(scrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().scroll(scrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
// Use given resumption token here.
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(TimeValue.timeValueHours(24L));
// scrollResp = OAI_ESClient.getEsClient().prepareSearchScroll(resumptionToken)
// .setScroll(TimeValue.timeValueHours(24L)).execute().actionGet();
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(TimeValue.timeValueHours(24L));
// scrollResp = OAI_ESClient.getEsClient().prepareSearchScroll(resumptionToken)
// .setScroll(TimeValue.timeValueHours(24L)).execute().actionGet();
}
String scrollID = scrollResp.getScrollId();
long completeListSize = scrollResp.getHits().totalHits;
//long listSize = Queries.getAmountOfArtefacts();
if (completeListSize > 0) {
setFoundItems(true);
int i = 0;
for (SearchHit hit : scrollResp.getHits().getHits()) {
i++;
String textgridURI = hit.getFields().get("textgridUri").getValue().toString().replace(".0", "");
RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false);
identifierList.getHeader()
.add(idiomRecord.getRecordById(textgridURI).getRecord().getHeader());
}
/* for (String artefactURI : artefactURIs) {
RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false);
identifierList.getHeader()
.add(idiomRecord.getRecordById(artefactURI).getRecord().getHeader());
i++;
}*/
// Check the need for a resumption token!
ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(completeListSize,
resumptionToken, cursorCollector, scrollID, 30, i);
if (resTokenForResponse != null) {
identifierList.setResumptionToken(resTokenForResponse);
String scrollID = scrollResp.getScrollId();
long completeListSize = scrollResp.getHits().totalHits;
// long listSize = Queries.getAmountOfArtefacts();
if (completeListSize > 0) {
setFoundItems(true);
int i = 0;
for (SearchHit hit : scrollResp.getHits().getHits()) {
i++;
String textgridURI =
hit.getFields().get("textgridUri").getValue().toString().replace(".0", "");
RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false);
identifierList.getHeader()
.add(idiomRecord.getRecordById(textgridURI).getRecord().getHeader());
}
/*
* for (String artefactURI : artefactURIs) { RecordDelivererIDIOM idiomRecord = new
* RecordDelivererIDIOM(true, false); identifierList.getHeader()
* .add(idiomRecord.getRecordById(artefactURI).getRecord().getHeader()); i++; }
*/
// Check the need for a resumption token!
ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(completeListSize,
resumptionToken, cursorCollector, scrollID, 30, i);
if (resTokenForResponse != null) {
identifierList.setResumptionToken(resTokenForResponse);
}
} else {
setFoundItems(false);
}
}else {
setFoundItems(false);
}
return identifierList;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.IdentifierListDelivererAbstract#isFoundItems()
*/
public boolean isFoundItems() {
return foundItems;
}
return this.foundItems;
}
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.IdentifierListDelivererAbstract#setFoundItems(boolean)
*/
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
}
......@@ -2,48 +2,45 @@ package info.textgrid.middleware;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.datatype.DatatypeConfigurationException;
import info.textgrid.middleware.oaipmh.HeaderType;
import info.textgrid.middleware.oaipmh.ListIdentifiersType;
import info.textgrid.middleware.oaipmh.ResumptionTokenType;
public class OpenAireIdentifierList extends IdentifierListDelivererAbstract {
public ResumptionTokenType resTokenForResponse;
public OpenAireIdentifierList(boolean textgrid, boolean dariah) {
super(textgrid, dariah);
// TODO Auto-generated constructor stub
}
public ListIdentifiersType processIdentifierList(String from, String to, String set, String resumptionToken) throws IOException {
ListIdentifiersType openAireIddentifiersList = new ListIdentifiersType();
//List<String> uriList = new ArrayList<String>();
//OAIPMHUtilities oaipmhUtilities = new OAIPMHUtilities();
for(String uri : getUriListOfAllEditions(from, to, set, resumptionToken)) {
OpenAireRecord openAireRecord = new OpenAireRecord(true, false);
HeaderType header = new HeaderType();
try {
header = openAireRecord.getRecordById(uri.replace("textgrid:", "")).getRecord().getHeader();
} catch (ParseException | DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
openAireIddentifiersList.getHeader().add(header);
}
//if(oaipmhUtilities.getResTokenForResponse()!=null) {
openAireIddentifiersList.setResumptionToken(getResTokenForResponse());
//}
return openAireIddentifiersList;
}
public ResumptionTokenType resTokenForResponse;
public OpenAireIdentifierList(boolean textgrid, boolean dariah) {
super(textgrid, dariah);
// TODO Auto-generated constructor stub
}
public ListIdentifiersType processIdentifierList(String from, String to, String set,
String resumptionToken) throws IOException {
ListIdentifiersType openAireIddentifiersList = new ListIdentifiersType();
// List<String> uriList = new ArrayList<String>();
// OAIPMHUtilities oaipmhUtilities = new OAIPMHUtilities();
for (String uri : getUriListOfAllEditions(from, to, set, resumptionToken)) {
OpenAireRecord openAireRecord = new OpenAireRecord(true, false);
HeaderType header = new HeaderType();
try {
header = openAireRecord.getRecordById(uri.replace("textgrid:", "")).getRecord().getHeader();
} catch (ParseException | DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
openAireIddentifiersList.getHeader().add(header);
}
// if(oaipmhUtilities.getResTokenForResponse()!=null) {
openAireIddentifiersList.setResumptionToken(getResTokenForResponse());
// }
return openAireIddentifiersList;
}
}
......@@ -2,133 +2,180 @@ package info.textgrid.middleware;
import java.io.IOException;
import java.text.ParseException;
import java.util.Hashtable;
import java.util.Map;
import javax.xml.datatype.DatatypeConfigurationException;
import info.textgrid.middleware.oaipmh.GetRecordType;
import info.textgrid.middleware.oaipmh.HeaderType;
import info.textgrid.middleware.oaipmh.ListRecordsType;
import info.textgrid.middleware.oaipmh.ResumptionTokenType;
public class OpenAireRecordList extends RecordListDelivererAbstract {
//protected static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
private String rangeField;
private String formatField;
private String formatToFilter;
private int searchResponseSize;
private long resultSize;
private boolean foundItems;
public ResumptionTokenType resTokenForResponse;
public OpenAireRecordList(boolean textgrid, boolean dariah) {
super(textgrid, dariah);
}
public ListRecordsType getRecords(String from, String to, String set, String resumptionToken){
ListRecordsType openAireRecordList = new ListRecordsType();
OpenAireRecord openAireRecord;
for(String uri : getUriList(from, to, set, resumptionToken)) {
try {
try {
openAireRecord = new OpenAireRecord(true, false);
GetRecordType grt = openAireRecord.getRecordById(uri.replace("textgrid:", ""));
openAireRecordList.getRecord().add(grt.getRecord());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//if (resTokenForResponse != null) {
//System.out.println("RESTOKEN: ");
//System.out.println(getResTokenForResponse().getValue());
//System.out.println(getResumptionToken());
//resTokenForResponse = OAIPMHUtilities.getResumptionToken(
// 94146, resumptionToken, cursorCollector, scrollID, this.searchResponseSize, i)
openAireRecordList.setResumptionToken(getResTokenForResponse());
//}
return openAireRecordList;
}
@Override
public HeaderType setHeader(String set, String headerIdentifier, String setSpec) {
// TODO Auto-generated method stub
return null;
}
//GETTER AND SETTER
public String getRangeField() {
return rangeField;
}
public void setRangeField(String rangeField) {
this.rangeField = rangeField;
}
/**
* @param formatToFilter
*/
public void setFormatToFilter(String formatToFilter) {
this.formatToFilter = formatToFilter;
}
/**
* @param formatField
*/
public void setFormatField(String formatField) {
this.formatField = formatField;
}
public int getSearchResponseSize() {
return searchResponseSize;
}
public void setSearchResponseSize(int searchResponseSize) {
this.searchResponseSize = searchResponseSize;
}
public long getResultSize() {
return resultSize;
}
public void setResultSize(long resultSize) {
this.resultSize = resultSize;
}
public boolean isFoundItems() {
return foundItems;
}
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
/*public ResumptionTokenType getResTokenForResponse() {
return resTokenForResponse;
}
public void setResTokenForResponse(ResumptionTokenType resTokenForResponse) {
this.resTokenForResponse = resTokenForResponse;
}*/
// protected static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
private String rangeField;
private String formatField;
private String formatToFilter;
private int searchResponseSize;
private long resultSize;
private boolean foundItems;
public ResumptionTokenType resTokenForResponse;
/**
* @param textgrid
* @param dariah
*/
public OpenAireRecordList(boolean textgrid, boolean dariah) {
super(textgrid, dariah);
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererInterface#getRecords(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String)
*/
public ListRecordsType getRecords(String from, String to, String set, String resumptionToken) {
ListRecordsType openAireRecordList = new ListRecordsType();
OpenAireRecord openAireRecord;
for (String uri : getUriList(from, to, set, resumptionToken)) {
try {
try {
openAireRecord = new OpenAireRecord(true, false);
GetRecordType grt = openAireRecord.getRecordById(uri.replace("textgrid:", ""));
openAireRecordList.getRecord().add(grt.getRecord());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// if (resTokenForResponse != null) {
// System.out.println("RESTOKEN: ");
// System.out.println(getResTokenForResponse().getValue());
// System.out.println(getResumptionToken());
// resTokenForResponse = OAIPMHUtilities.getResumptionToken(
// 94146, resumptionToken, cursorCollector, scrollID, this.searchResponseSize, i)
openAireRecordList.setResumptionToken(getResTokenForResponse());
// }
return openAireRecordList;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererInterface#setHeader(java.lang.String,
* java.lang.String, java.lang.String)
*/
@Override
public HeaderType setHeader(String set, String headerIdentifier, String setSpec) {
// TODO Auto-generated method stub
return null;
}
// GETTER AND SETTER
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#getRangeField()
*/
public String getRangeField() {
return this.rangeField;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#setRangeField(java.lang.String)
*/
public void setRangeField(String rangeField) {
this.rangeField = rangeField;
}
/**
* @param formatToFilter
*/
public void setFormatToFilter(String formatToFilter) {
this.formatToFilter = formatToFilter;
}
/**
* @param formatField
*/
public void setFormatField(String formatField) {
this.formatField = formatField;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#getSearchResponseSize()
*/
public int getSearchResponseSize() {
return this.searchResponseSize;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#setSearchResponseSize(int)
*/
public void setSearchResponseSize(int searchResponseSize) {
this.searchResponseSize = searchResponseSize;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#getResultSize()
*/
public long getResultSize() {
return this.resultSize;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#setResultSize(long)
*/
public void setResultSize(long resultSize) {
this.resultSize = resultSize;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#isFoundItems()
*/
public boolean isFoundItems() {
return this.foundItems;
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.RecordListDelivererAbstract#setFoundItems(boolean)
*/
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
/*
* public ResumptionTokenType getResTokenForResponse() { return resTokenForResponse; }
*
* public void setResTokenForResponse(ResumptionTokenType resTokenForResponse) {
* this.resTokenForResponse = resTokenForResponse; }
*/
}
......@@ -150,7 +150,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
textgridBaseURI_FromID = id;
}
log.info("ID for generating the METS/MODS file is: " + textgridBaseURI_FromID);
metsmods = new ClassicMayanMetsMods(
this.metsmods = new ClassicMayanMetsMods(
textgridBaseURI_FromID,
this.dateOfObjectCreation,
this.dateOfLastOblectModification);
......@@ -197,7 +197,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(metsmods.getMets())));
Document doc = builder.parse(new InputSource(new StringReader(this.metsmods.getMets())));
metadataMets.setAny(doc.getDocumentElement());
} catch (Exception e) {
e.printStackTrace();
......
......@@ -5,9 +5,7 @@ import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.LogFactory;
import org.apache.jena.atlas.logging.Log;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
......@@ -17,7 +15,6 @@ import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import info.textgrid.middleware.oaipmh.RequestType;
import info.textgrid.middleware.oaipmh.ResumptionTokenType;
......@@ -26,8 +23,8 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType;
*/
public abstract class RecordListDelivererAbstract implements RecordListDelivererInterface {
private OAI_ESClient oaiEsClient;
private OAI_ESClient oaiEsClient;
protected boolean textgrid;
protected boolean dariah;
......@@ -38,12 +35,13 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
private long resultSize;
private boolean foundItems;
public ResumptionTokenType resTokenForResponse;
private static final int LIFETIME_RES_TOKEN = 600;
protected static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
private static org.apache.commons.logging.Log log = LogFactory.getLog(RecordListDelivererAbstract.class);
private static org.apache.commons.logging.Log log =
LogFactory.getLog(RecordListDelivererAbstract.class);
/**
* @param textgrid
* @param dariah
......@@ -53,117 +51,131 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
this.dariah = dariah;
}
/**
* @param from
* @param to
* @param set
* @param resumptionToken
* @return
*/
public List<String> getUriList(String from, String to, String set, String resumptionToken) {
QueryBuilder query;
//System.out.println("RANGEFIELD: " + "created");
// System.out.println("RANGEFIELD: " + "created");
QueryBuilder rangeQuery = QueryBuilders.rangeQuery("created").from(from).to(to);
QueryBuilder filterSandBox = QueryBuilders.matchPhraseQuery("nearlyPublished", "true");
if(set!=null && !set.equals("openaire_data")) {
String[] setParts = set.split(":");
String queryField = "";
String valueField = "";
if (setParts[0].equals(TGConstants.SET_FIELD_FOR_TEXTGRID)) {
queryField = TGConstants.PROJECT_ID_FOR_TEXTGRID;
valueField = setParts[1];
}
QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery(queryField, valueField);
QueryBuilder boolQuery = QueryBuilders.boolQuery().must(rangeQuery).must(matchQuery).mustNot(filterSandBox);
query = boolQuery;
}else {
//query = rangeQuery;
query = QueryBuilders.boolQuery().must(rangeQuery).mustNot(filterSandBox);
}
return getFieldsFromESIndex(query, resumptionToken, set);
if (set != null && !set.equals("openaire_data")) {
String[] setParts = set.split(":");
String queryField = "";
String valueField = "";
if (setParts[0].equals(TGConstants.SET_FIELD_FOR_TEXTGRID)) {
queryField = TGConstants.PROJECT_ID_FOR_TEXTGRID;
valueField = setParts[1];
}
QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery(queryField, valueField);
QueryBuilder boolQuery =
QueryBuilders.boolQuery().must(rangeQuery).must(matchQuery).mustNot(filterSandBox);
query = boolQuery;
} else {
// query = rangeQuery;
query = QueryBuilders.boolQuery().must(rangeQuery).mustNot(filterSandBox);
}
return getFieldsFromESIndex(query, resumptionToken, set);
}
/**
* @param query
* @param resumptionToken
* @param set
* @return
*/
public List<String> getFieldsFromESIndex(QueryBuilder query, String resumptionToken,
String set) {
List<String> uriList = new ArrayList<String>();
QueryBuilder recordFilter = QueryBuilders.boolQuery().must(query)
.must(QueryBuilders.matchPhraseQuery("format", "text/tg.edition+tg.aggregation+xml"));
SearchRequest searchRequest = new SearchRequest(OAI_ESClient.getEsIndex());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(recordFilter);
searchSourceBuilder.size(100);
searchRequest.source(searchSourceBuilder);
SearchResponse scrollResp = new SearchResponse();
if (resumptionToken != null) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().scroll(scrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().search(searchRequest,RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String scrollID = scrollResp.getScrollId();
long completeListSize = scrollResp.getHits().totalHits;
setResultSize(completeListSize);
if (completeListSize > 0) {
setFoundItems(true);
int i=0;
for (SearchHit hit : scrollResp.getHits().getHits()) {
i++;
if (hit != null && hit.getFields() != null) {
uriList.add(hit.getSourceAsMap().get(TGConstants.URI).toString());
}
}
if(resumptionToken!=null && resTokenForResponse.getCursor().intValue()>=completeListSize) {
try{
cursorCollector.remove(resumptionToken);
}catch(NullPointerException couldNotRemove) {
log.info("Could net remove hash value: " + resumptionToken + " from hash map");
}
resTokenForResponse.setValue("");
}else {
resTokenForResponse = OAIPMHUtilities.getResumptionToken(
completeListSize, resumptionToken, cursorCollector, scrollID, this.searchResponseSize, i);
}
// System.out.println("TADA: ");
//System.out.println(cursorCollector);
}else {
setFoundItems(false);
}
//System.out.println(resTokenForResponse.getValue());
//System.out.println(resTokenForResponse.getCursor());
return uriList;
}
String set) {
List<String> uriList = new ArrayList<String>();
QueryBuilder recordFilter = QueryBuilders.boolQuery().must(query)
.must(QueryBuilders.matchPhraseQuery("format", "text/tg.edition+tg.aggregation+xml"));
SearchRequest searchRequest = new SearchRequest(OAI_ESClient.getEsIndex());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(recordFilter);
searchSourceBuilder.size(100);
searchRequest.source(searchSourceBuilder);
SearchResponse scrollResp = new SearchResponse();
if (resumptionToken != null) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
scrollRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().scroll(scrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(TimeValue.timeValueHours(24L));
try {
scrollResp = OAI_ESClient.getEsClient().search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String scrollID = scrollResp.getScrollId();
long completeListSize = scrollResp.getHits().totalHits;
setResultSize(completeListSize);
if (completeListSize > 0) {
setFoundItems(true);
int i = 0;
for (SearchHit hit : scrollResp.getHits().getHits()) {
i++;
if (hit != null && hit.getFields() != null) {
uriList.add(hit.getSourceAsMap().get(TGConstants.URI).toString());
}
}
if (resumptionToken != null
&& this.resTokenForResponse.getCursor().intValue() >= completeListSize) {
try {
cursorCollector.remove(resumptionToken);
} catch (NullPointerException couldNotRemove) {
log.info("Could net remove hash value: " + resumptionToken + " from hash map");
}
this.resTokenForResponse.setValue("");
} else {
this.resTokenForResponse = OAIPMHUtilities.getResumptionToken(
completeListSize, resumptionToken, cursorCollector, scrollID, this.searchResponseSize,
i);
}
// System.out.println("TADA: ");
// System.out.println(cursorCollector);
} else {
setFoundItems(false);
}
// System.out.println(resTokenForResponse.getValue());
// System.out.println(resTokenForResponse.getCursor());
return uriList;
}
/**
* @param request
* @return
......@@ -171,7 +183,7 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
public static ErrorHandler requestChecker(RequestType request) {
ErrorHandler result = new ErrorHandler();
// Check if metadata prefix is existing and valid.
if (request.getMetadataPrefix() != null
&& !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)
......@@ -185,21 +197,19 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
// Check if resumptionToken is invalid or existing.
if (request.getResumptionToken() != null) {
boolean restokIDIOMExisting = RecordListDelivererIDIOM.cursorCollector != null
&& RecordListDelivererIDIOM.cursorCollector.containsKey(request.getResumptionToken());
boolean restokDCExisting = RecordListDelivererDC.cursorCollector != null
&& RecordListDelivererDC.cursorCollector.containsKey(request.getResumptionToken());
boolean restok = cursorCollector != null
&& cursorCollector.containsKey(request.getResumptionToken());
if (!restokDCExisting && !restokIDIOMExisting && !restok) {
result.setError(TGConstants.OAI_BAD_RESUMPTION_TOKEN, "The value of the "
+ request.getResumptionToken() + " argument is invalid or expired.");
}
boolean restokIDIOMExisting = RecordListDelivererIDIOM.cursorCollector != null
&& RecordListDelivererIDIOM.cursorCollector.containsKey(request.getResumptionToken());
boolean restokDCExisting = RecordListDelivererDC.cursorCollector != null
&& RecordListDelivererDC.cursorCollector.containsKey(request.getResumptionToken());
boolean restok = cursorCollector != null
&& cursorCollector.containsKey(request.getResumptionToken());
if (!restokDCExisting && !restokIDIOMExisting && !restok) {
result.setError(TGConstants.OAI_BAD_RESUMPTION_TOKEN, "The value of the "
+ request.getResumptionToken() + " argument is invalid or expired.");
}
}
// Check params in general.
List<String> errorValues = new ArrayList<String>();
......@@ -210,15 +220,16 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
if (request.getIdentifier() != null) {
errorValues.add("identifier");
}
/* if(request.getFrom()!= null && (!OAIPMHUtilities.isThisDateValid(request.getFrom()) && !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getFrom()))) {
errorValues.add("from");
}
if(request.getUntil() != null && (!OAIPMHUtilities.isThisDateValid(request.getUntil()) && !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getUntil()))) {
errorValues.add("until");
}
if(request.getFrom()!= null && request.getUntil()!=null && !OAIPMHUtilities.getFormatOfDate(request.getFrom()).equals(OAIPMHUtilities.getFormatOfDate(request.getFrom()))) {
errorValues.add("until, from");
}*/
/*
* if(request.getFrom()!= null && (!OAIPMHUtilities.isThisDateValid(request.getFrom()) &&
* !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getFrom()))) {
* errorValues.add("from"); } if(request.getUntil() != null &&
* (!OAIPMHUtilities.isThisDateValid(request.getUntil()) &&
* !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getUntil()))) {
* errorValues.add("until"); } if(request.getFrom()!= null && request.getUntil()!=null &&
* !OAIPMHUtilities.getFormatOfDate(request.getFrom()).equals(OAIPMHUtilities.getFormatOfDate(
* request.getFrom()))) { errorValues.add("until, from"); }
*/
if (errorValues.size() > 0) {
result.setError(TGConstants.OAI_BAD_ARGUMENT, "The request includes illegal arguments "
+ "or is missing required arguments: " + errorValues);
......@@ -227,72 +238,105 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
return result;
}
//GETTER AND SETTER
public String getRangeField() {
return rangeField;
}
public void setRangeField(String rangeField) {
this.rangeField = rangeField;
}
/**
* @param formatToFilter
*/
public void setFormatToFilter(String formatToFilter) {
this.formatToFilter = formatToFilter;
}
/**
* @param formatField
*/
public void setFormatField(String formatField) {
this.formatField = formatField;
}
public int getSearchResponseSize() {
return searchResponseSize;
}
public void setSearchResponseSize(int searchResponseSize) {
//System.out.println("SearchResponseSize: " + searchResponseSize);
this.searchResponseSize = searchResponseSize;
}
public long getResultSize() {
return resultSize;
}
public void setResultSize(long resultSize) {
this.resultSize = resultSize;
}
public boolean isFoundItems() {
return foundItems;
}
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
public OAI_ESClient getOaiEsClient() {
return oaiEsClient;
}
public void setOaiEsClient(OAI_ESClient oaiEsClient) {
this.oaiEsClient = oaiEsClient;
}
public ResumptionTokenType getResTokenForResponse() {
return resTokenForResponse;
}
public void setResTokenForResponse(ResumptionTokenType resTokenForResponse) {
this.resTokenForResponse = resTokenForResponse;
}
// GETTER AND SETTER
/**
* @return
*/
public String getRangeField() {
return this.rangeField;
}
/**
* @param rangeField
*/
public void setRangeField(String rangeField) {
this.rangeField = rangeField;
}
/**
* @param formatToFilter
*/
public void setFormatToFilter(String formatToFilter) {
this.formatToFilter = formatToFilter;
}
/**
* @param formatField
*/
public void setFormatField(String formatField) {
this.formatField = formatField;
}
/**
* @return
*/
public int getSearchResponseSize() {
return this.searchResponseSize;
}
/**
* @param searchResponseSize
*/
public void setSearchResponseSize(int searchResponseSize) {
// System.out.println("SearchResponseSize: " + searchResponseSize);
this.searchResponseSize = searchResponseSize;
}
/**
* @return
*/
public long getResultSize() {
return this.resultSize;
}
/**
* @param resultSize
*/
public void setResultSize(long resultSize) {
this.resultSize = resultSize;
}
/**
* @return
*/
public boolean isFoundItems() {
return this.foundItems;
}
/**
* @param foundItems
*/
public void setFoundItems(boolean foundItems) {
this.foundItems = foundItems;
}
/**
* @return
*/
public OAI_ESClient getOaiEsClient() {
return this.oaiEsClient;
}
/**
* @param oaiEsClient
*/
public void setOaiEsClient(OAI_ESClient oaiEsClient) {
this.oaiEsClient = oaiEsClient;
}
/**
* @return
*/
public ResumptionTokenType getResTokenForResponse() {
return this.resTokenForResponse;
}
/**
* @param resTokenForResponse
*/
public void setResTokenForResponse(ResumptionTokenType resTokenForResponse) {
this.resTokenForResponse = resTokenForResponse;
}
}
......@@ -64,7 +64,6 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
* @see info.textgrid.middleware.RecordListDelivererInterface#getRecords(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public ListRecordsType getRecords(final String from, final String to, final String set,
......
......@@ -8,14 +8,13 @@ import java.util.Map;
import javax.xml.bind.JAXBException;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.XMLGregorianCalendar;
import org.json.JSONObject;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import info.textgrid.middleware.common.TextGridMimetypes;
import info.textgrid.middleware.oaipmh.DeletedRecordType;
import info.textgrid.middleware.oaipmh.GranularityType;
import info.textgrid.middleware.common.TextGridMimetypes;
/**
* @author Maximilian Brodhun, SUB Göttingen
......
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