Skip to content
Snippets Groups Projects
Commit 465e8440 authored by mbrodhu's avatar mbrodhu
Browse files

Adapted ListSets to ES6 and repair noRecordsMatch in ListRecords

parent 73245fb7
No related branches found
No related tags found
No related merge requests found
......@@ -409,7 +409,11 @@ public class DublinCoreFieldLoader {
Map<String, Object> nestedMap2 = null;
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]);
try {
nestedMap2 = (Map<String, Object>)nestedMap.get(requestedField[i]);
}catch(ClassCastException cce) {
}
}
if(i==requestedField.length-1 &&
nestedMap2!=null && nestedMap2.get(requestedField[i])!=null ) {
......
......@@ -15,6 +15,8 @@ import info.textgrid.middleware.oaipmh.ListMetadataFormatsType;
import info.textgrid.middleware.oaipmh.ListRecordsType;
import info.textgrid.middleware.oaipmh.ListSetsType;
import info.textgrid.middleware.oaipmh.OAIPMHType;
import info.textgrid.middleware.oaipmh.OAIPMHerrorType;
import info.textgrid.middleware.oaipmh.OAIPMHerrorcodeType;
import info.textgrid.middleware.oaipmh.ObjectFactory;
import info.textgrid.middleware.oaipmh.RequestType;
import info.textgrid.middleware.oaipmh.VerbType;
......@@ -312,7 +314,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
*/
public JAXBElement<OAIPMHType> listSetsRequest(ObjectFactory obf, OAIPMHType oai,
RequestType request) {
System.out.println(this.textgrid);
ListSetsType sl = new ListSetsType();
JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
sl = this.setList.setListBuilder();
......@@ -400,6 +402,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
if (request.getMetadataPrefix() != null) {
if (request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)) {
recListDeliv = this.recordListDC;
} else {
recListDeliv = this.recordListIDIOM;
}
......@@ -422,7 +425,12 @@ public class OAIPMHImpl implements OAIPMHProducer {
ListRecordsType listRecords = recListDeliv.getRecords(request.getFrom(), request.getUntil(),
request.getSet(), request.getResumptionToken());
if (listRecords != null) {
if (listRecords != null ) {
if(recordListDC.getResultSize()==0) {
System.out.println(recordListDC.isFoundItems());
requestErrors.setError("RecordMatchError", "The combination of the values of the from, until, set and metadataPrefix arguments results in an empty list.");
oai.getError().add(requestErrors.getError());
}
oai.setListRecords(listRecords);
}
}
......
......@@ -4,6 +4,7 @@ import java.io.IOException;
import java.text.ParseException;
import java.util.Map;
import javax.swing.plaf.synth.SynthSpinnerUI;
import javax.xml.datatype.DatatypeConfigurationException;
import org.apache.commons.logging.LogFactory;
import org.elasticsearch.action.get.GetRequest;
......@@ -145,7 +146,7 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
}
if (this.textgrid == true && esResultObject.getSourceAsMap().get(this.formatField).equals(this.formatToFilter)) {
String[] requestedField = relationToFurtherMetadataObject.split("\\.");
Map<String, Object> nestedMap = esResultObject.getSourceAsMap();
......
......@@ -50,7 +50,12 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
+ request.getResumptionToken() + " argument is invalid or expired.");
}
}
// Check if query to ElastisSearch responses with more then zero results
if(true) {
}
// Check params in general.
List<String> errorValues = new ArrayList<String>();
......@@ -68,6 +73,8 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
+ "or is missing required arguments: " + errorValues);
}
return result;
}
......
......@@ -6,15 +6,15 @@ import java.net.URLDecoder;
import java.text.ParseException;
import java.util.Hashtable;
import java.util.Map;
import javax.xml.datatype.DatatypeConfigurationException;
import org.apache.commons.logging.LogFactory;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.Strings;
......@@ -81,7 +81,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
private String[] typeList;
private String modifiedValue;
private static final int lifeTimeResToken = 600;
private long resultSize;
static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
private int searchResponseSize;
......@@ -149,6 +150,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
SearchResponse scrollResp;
QueryBuilder recordFilter;
DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder();
if (this.dariah == true) {
recordFilter = query;
} else {
......@@ -194,6 +196,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
scrollID = scrollResp.getScrollId();
long completeListSize = scrollResp.getHits().totalHits;
setResultSize(completeListSize);
if (completeListSize > 0) {
setFoundItems(true);
......@@ -201,11 +205,10 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
for (SearchHit hit : scrollResp.getHits().getHits()) {
i++;
if (hit != null && hit.getFields() != null) {
try {
if (hit.getSourceAsMap().get(this.dateOfObjectCreation) != null) {
String datestamp =
hit.getSourceAsMap().get(this.dateOfObjectCreation).toString();
datestamp = OAIPMHUtillities.convertDateFormat(datestamp).toXMLFormat();
......@@ -299,7 +302,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
GetResponse responseWorkValues) {
DublinCoreBuilder result = new DublinCoreBuilder();
result.setContributor(DublinCoreFieldLoader.setContributor(hit, this.contributorList));
result.setCoverage(DublinCoreFieldLoader.setCoverage(hit, this.coverageList));
result.setCreator(DublinCoreFieldLoader.setCreator(hit, this.creatorList));
......@@ -716,4 +719,12 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
this.oaiEsClient = oaiEsClient;
}
public long getResultSize() {
return this.resultSize;
}
public void setResultSize(long resultSize) {
this.resultSize = resultSize;
}
}
package info.textgrid.middleware;
import info.textgrid.middleware.oaipmh.ListSetsType;
import info.textgrid.middleware.oaipmh.SetType;
import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.Strings;
......@@ -30,6 +23,10 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import info.textgrid.middleware.oaipmh.ListSetsType;
import info.textgrid.middleware.oaipmh.SetType;
import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes;
/**
*
*/
......@@ -52,7 +49,7 @@ public class SetDeliverer {
* @param textgrid
* @param dariah
*/
public SetDeliverer(boolean textgrid, boolean dariah) {
public SetDeliverer(boolean textgrid, boolean dariah) {
this.textgrid = textgrid;
this.dariah = dariah;
}
......@@ -64,40 +61,27 @@ public class SetDeliverer {
ListSetsType setList = new ListSetsType();
QueryBuilder aggQuery;
if (!this.textgrid) {
System.out.println("TEST");
aggQuery = QueryBuilders.matchPhraseQuery("format", TextGridMimetypes.EDITION);
SearchRequest request = new SearchRequest(OAI_ESClient.getEsIndex());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
AggregationBuilder agg = null;
if (this.textgrid) {
agg = AggregationBuilders
.terms("project.value.untouched")
.field("project.value.untouched")
.size(10000);
} else {
aggQuery = QueryBuilders.matchPhraseQuery("descriptiveMetadata.dc:format",
TextGridMimetypes.DARIAH_COLLECTION);
}
SearchRequest request = new SearchRequest(OAI_ESClient.getEsIndex());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//searchSourceBuilder.query(aggQuery);
AggregationBuilder agg = AggregationBuilders
.terms("project.value.untouched")
.field("project.value.untouched")
.size(10000);
searchSourceBuilder.aggregation(agg);
request.source(searchSourceBuilder);
/*searchSourceBuilder.storedField(this.formatField);
searchSourceBuilder.storedField(this.identifierField);
searchSourceBuilder.storedField("project.value");
searchSourceBuilder.storedField("project.id");*/
searchSourceBuilder.size(10000);
request.source(searchSourceBuilder);
SearchResponse getRecordListItems=null;
/*SearchRequestBuilder request = OAI_ESClient.getEsClient()
.prepareSearch(OAI_ESClient.getEsIndex()).setTypes(OAI_ESClient.getEsType())
.setQuery(aggQuery).addField(this.formatField).addField(this.identifierField)
.addField("project.value").addField("project.id").setSize(100000);*/
SearchResponse getRecordListItems=null;
try {
getRecordListItems = OAI_ESClient.getEsClient().search(request, RequestOptions.DEFAULT);
} catch (IOException e1) {
// TODO Auto-generated catch block
......@@ -105,27 +89,28 @@ public class SetDeliverer {
}
for (SearchHit hit : getRecordListItems.getHits().getHits()) {
if (this.dariah == false && hit.getSourceAsMap().get(this.identifierField)
.toString().startsWith("hdl:")) {
String pid = hit.getFields().get(this.identifierField).getValues().get(0).toString();
this.identifier.add(pid);
}
if (this.textgrid == false) {
if (this.textgrid == true) {
String[] projectFields = new String[] {"project.value", "project.id"};
String projectName = DublinCoreFieldLoader.fillList(hit, projectFields).get(0);
String projectID = DublinCoreFieldLoader.fillList(hit, projectFields).get(1);
String projectSetSpec = projectName.concat(":").concat(projectID);
System.out.println(projectName + ": " + projectSetSpec);
//String projectSetSpec = projectName.concat(":").concat(projectID);
SetDeliverer.setSet.put(projectID, projectName);
}
}
System.out.println("MAP SIZE: " + setSet.size());
if (this.textgrid == false) {
Iterator it = setSet.entrySet().iterator();
if (this.textgrid == true) {
Iterator<?> it = setSet.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
SetType set = new SetType();
......@@ -135,7 +120,7 @@ public class SetDeliverer {
}
}
if (this.dariah == false) {
if (this.dariah == true) {
for (String identifierSetSpec : this.identifier) {
String id = identifierSetSpec;
try {
......
......@@ -38,13 +38,13 @@ public class OaiPmhTest {
private static IdentifierListDelivererDC identifierList = new IdentifierListDelivererDC(true, false);
private static IdentifierListDelivererIDIOM identifierListIDIOM = new IdentifierListDelivererIDIOM(true, false);
private MetadataFormatListDeliverer metadataFormatList = new MetadataFormatListDeliverer();
private SetDeliverer setListDARIAH = new SetDeliverer(false, true);
// private SetDeliverer setListDARIAH = new SetDeliverer(false, true);
private static SetDeliverer setListTextGrid;
private OAIPMHImpl request = new OAIPMHImpl(
this.rep, OaiPmhTest.record, OaiPmhTest.recordIDIOM, OaiPmhTest.recordList,
OaiPmhTest.recordListIDIOM, this.metadataFormatList,
this.setListDARIAH, OaiPmhTest.identifierList, OaiPmhTest.identifierListIDIOM);
this.setListTextGrid, OaiPmhTest.identifierList, OaiPmhTest.identifierListIDIOM);
/**
* @throws Exception
......@@ -249,7 +249,7 @@ public class OaiPmhTest {
OaiPmhTest.identifierList.setSearchResponseSize("100");
System.out.println("Test for the verb \"ListIdentifiers\" with succesfull response");
JAXBElement<OAIPMHType> p = this.request.getRequest("ListIdentifiers", "", "oai_dc",
"", "", "", "");
"project:TGPR-ed7c757e-1ead-69d4-7c17-554a3581925c", "", "", "");
JAXB.marshal(p, System.out);
System.out.println("-----------------------------------\n");
}
......@@ -355,7 +355,7 @@ public class OaiPmhTest {
System.out.println("Test for the verb \"ListRecords\" with sets with succesfull response");
JAXBElement<OAIPMHType> p =
this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", "");
this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-bbac3e50-440c-e763-4749-5540cc8bb6aa", "", "", "");
JAXB.marshal(p, System.out);
/*String resToken ="";
......@@ -447,7 +447,7 @@ public class OaiPmhTest {
OaiPmhTest.recordList.setSearchResponseSize("100");
JAXBElement<OAIPMHType> r =
this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", "");
this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-ed7c757e-1ead-69d4-7c17-554a3581925c", "", "", "");
JAXB.marshal(r, System.out);
System.out.println("-----------------------------------\n");
}
......@@ -483,12 +483,12 @@ public class OaiPmhTest {
*/
@Test
@Ignore
public void testListSets() throws ParseException {
public void testListSets() throws ParseException {
OaiPmhTest.setListTextGrid.setFormatField("format");
OaiPmhTest.setListTextGrid.setFormatToFilter(TextGridMimetypes.EDITION);
OaiPmhTest.setListTextGrid.setIdentifierField("textgridUri");
OaiPmhTest.setListTextGrid.setRepositoryObjectURIPrefix("textgrid:");
OaiPmhTest.setListTextGrid.setFormatField("format");
OaiPmhTest.setListTextGrid.setFormatToFilter(TextGridMimetypes.EDITION);
OaiPmhTest.setListTextGrid.setIdentifierField("textgridUri");
OaiPmhTest.setListTextGrid.setRepositoryObjectURIPrefix("textgrid:");
JAXBElement<OAIPMHType> r = this.request.getRequest("ListSets", "", "", "", "", "", "");
JAXB.marshal(r, System.out);
......
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