Skip to content
Snippets Groups Projects
Commit 3034f6e7 authored by mbrodhu's avatar mbrodhu
Browse files

resolving concurrency problem in RecordListDeliverer

parent 3abc0ad1
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,7 @@ public final class DublinCoreBuilder { ...@@ -25,6 +25,7 @@ public final class DublinCoreBuilder {
private ObjectFactory oaiDcObj = new ObjectFactory(); private ObjectFactory oaiDcObj = new ObjectFactory();
private MetadataType metadata = new MetadataType(); private MetadataType metadata = new MetadataType();
/** /**
* <p> * <p>
* s * Constructor to build an DublinCore element for an OAIPMH request by getting TextGrid * s * Constructor to build an DublinCore element for an OAIPMH request by getting TextGrid
...@@ -38,6 +39,12 @@ public final class DublinCoreBuilder { ...@@ -38,6 +39,12 @@ public final class DublinCoreBuilder {
} }
/**
* Each of the following functions for generating the DC-XML file
* produces an ElementType for the DC-field and puts each
* element of the list into the corresponding XML-tag
*/
/** /**
* <p> * <p>
* Takes a string list containing the contributors and build the specific dublinCore element for * Takes a string list containing the contributors and build the specific dublinCore element for
......
...@@ -60,7 +60,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -60,7 +60,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
// DC-Field Lists // DC-Field Lists
// ** // **
private List<String> contributors = new ArrayList<String>(); /*private List<String> contributors = new ArrayList<String>();
private List<String> coverages = new ArrayList<String>(); private List<String> coverages = new ArrayList<String>();
private List<String> creators = new ArrayList<String>(); private List<String> creators = new ArrayList<String>();
private List<String> dates = new ArrayList<String>(); private List<String> dates = new ArrayList<String>();
...@@ -74,7 +74,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -74,7 +74,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
private List<String> sources = new ArrayList<String>(); private List<String> sources = new ArrayList<String>();
private List<String> subjects = new ArrayList<String>(); private List<String> subjects = new ArrayList<String>();
private List<String> titles = new ArrayList<String>(); private List<String> titles = new ArrayList<String>();
private List<String> types = new ArrayList<String>(); private List<String> types = new ArrayList<String>();*/
private String[] contributorList; private String[] contributorList;
private String[] coverageList; private String[] coverageList;
...@@ -159,7 +159,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -159,7 +159,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
String scrollID = ""; String scrollID = "";
SearchResponse scrollResp; SearchResponse scrollResp;
QueryBuilder recordFilter; QueryBuilder recordFilter;
DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder();
if (this.dariah == true) { if (this.dariah == true) {
recordFilter = query; recordFilter = query;
} else { } else {
...@@ -227,20 +227,20 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -227,20 +227,20 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
} }
} }
putContentIntoDCFieldLists(hit, dublinCoreBuilder = putContentIntoDCFieldLists(hit,
furtherDCElements(workUri, OAI_ESClient.getOaiESClient())); furtherDCElements(workUri, OAI_ESClient.getOaiESClient()));
buildRecord(recordList, set, buildRecord(recordList, set,
hit.getFields().get(this.identifierField).getValue().toString()); hit.getFields().get(this.identifierField).getValue().toString(), dublinCoreBuilder);
listClearer(); //listClearer();
} }
if (this.dariah == true) { if (this.dariah == true) {
putContentIntoDCFieldLists2(hit, putContentIntoDCFieldLists2(hit,
furtherDCElements(hit.getId(), OAI_ESClient.getOaiESClient())); furtherDCElements(hit.getId(), OAI_ESClient.getOaiESClient()));
buildRecord(recordList, set, buildRecord(recordList, set,
hit.getFields().get(this.identifierField).getValue().toString()); hit.getFields().get(this.identifierField).getValue().toString(), dublinCoreBuilder);
listClearer(); //listClearer();
} }
} }
} }
...@@ -261,9 +261,29 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -261,9 +261,29 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
* @param hit * @param hit
* @param responseWorkValues * @param responseWorkValues
*/ */
public void putContentIntoDCFieldLists(SearchHit hit, GetResponse responseWorkValues) { public DublinCoreBuilder putContentIntoDCFieldLists(SearchHit hit, GetResponse responseWorkValues) {
this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList);
this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList); DublinCoreBuilder result = new DublinCoreBuilder();
result.setContributor(DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList));
result.setCoverage(DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList));
result.setCreator(DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList));
result.setDate(DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList));
result.setDescription(DublinCoreFieldLoader.setDescription(responseWorkValues, this.descriptionList));
result.setFormat(DublinCoreFieldLoader.setFormat(hit, this.formatList));
result.setIdentifier(DublinCoreFieldLoader.setIdentifier(hit, this.identifierList));
result.setLanguage(DublinCoreFieldLoader.setLanguage(hit, this.languageList));
result.setPublisher(DublinCoreFieldLoader.setPublisher(hit, this.publisherList));
result.setRelation(DublinCoreFieldLoader.setRelation(hit, this.relationList));
result.setRelation(DublinCoreFieldLoader.setRelationForWork(responseWorkValues, this.relationForWorkList));
result.setRights(DublinCoreFieldLoader.setRights(hit, this.rightList));
result.setSource(DublinCoreFieldLoader.setSources(hit, this.sourceList));
result.setSubject(DublinCoreFieldLoader.setSubject(hit, this.subjectList));
result.setTitle(DublinCoreFieldLoader.setTitle(hit, this.titleList));
result.setType(DublinCoreFieldLoader.setType(responseWorkValues, this.typeList));
return result;
/*this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList);
this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList); this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList);
this.dates = DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList); this.dates = DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList);
this.descriptions = this.descriptions =
...@@ -279,7 +299,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -279,7 +299,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList); this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList);
this.subjects = DublinCoreFieldLoader.setSubject(hit, this.subjectList); this.subjects = DublinCoreFieldLoader.setSubject(hit, this.subjectList);
this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList); this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList);
this.types = DublinCoreFieldLoader.setType(responseWorkValues, this.typeList); this.types = DublinCoreFieldLoader.setType(responseWorkValues, this.typeList);*/
} }
/** /**
...@@ -287,7 +307,26 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -287,7 +307,26 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
* @param responseWorkValues * @param responseWorkValues
*/ */
public void putContentIntoDCFieldLists2(SearchHit hit, GetResponse responseWorkValues) { public void putContentIntoDCFieldLists2(SearchHit hit, GetResponse responseWorkValues) {
this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList);
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));
result.setDate(DublinCoreFieldLoader.setDate(hit, this.dateList));
result.setDescription(DublinCoreFieldLoader.setDescription(hit, this.descriptionList));
result.setFormat(DublinCoreFieldLoader.setFormat(hit, this.formatList));
result.setIdentifier(DublinCoreFieldLoader.setIdentifier(hit, this.identifierList));
result.setLanguage(DublinCoreFieldLoader.setLanguage(hit, this.languageList));
result.setPublisher(DublinCoreFieldLoader.setPublisher(hit, this.publisherList));
result.setRelation(DublinCoreFieldLoader.setRelation(hit, this.relationList));
result.setRights(DublinCoreFieldLoader.setRights(hit, this.rightList));
result.setSource(DublinCoreFieldLoader.setSources(hit, this.sourceList));
result.setSubject(DublinCoreFieldLoader.setSources(hit, this.subjectList));
result.setTitle(DublinCoreFieldLoader.setTitle(hit, this.titleList));
result.setType(DublinCoreFieldLoader.setType(hit, this.typeList));
/*this.contributors = DublinCoreFieldLoader.setContributor(hit, this.contributorList);
this.coverages = DublinCoreFieldLoader.setCoverage(hit, this.coverageList); this.coverages = DublinCoreFieldLoader.setCoverage(hit, this.coverageList);
this.creators = DublinCoreFieldLoader.setCreator(hit, this.creatorList); this.creators = DublinCoreFieldLoader.setCreator(hit, this.creatorList);
this.dates = DublinCoreFieldLoader.setDate(hit, this.dateList); this.dates = DublinCoreFieldLoader.setDate(hit, this.dateList);
...@@ -301,7 +340,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -301,7 +340,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList); this.sources = DublinCoreFieldLoader.setSources(hit, this.sourceList);
this.subjects = DublinCoreFieldLoader.setSources(hit, this.subjectList); this.subjects = DublinCoreFieldLoader.setSources(hit, this.subjectList);
this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList); this.titles = DublinCoreFieldLoader.setTitle(hit, this.titleList);
this.types = DublinCoreFieldLoader.setType(hit, this.typeList); this.types = DublinCoreFieldLoader.setType(hit, this.typeList);*/
} }
/** /**
...@@ -310,24 +349,25 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -310,24 +349,25 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
* @param headerIdentifier * @param headerIdentifier
* @return * @return
*/ */
public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) { public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier, DublinCoreBuilder dublinCoreBuilder) {
ObjectFactory of = new ObjectFactory(); ObjectFactory of = new ObjectFactory();
OaiDcType odt = new OaiDcType(); OaiDcType odt = new OaiDcType();
DublinCoreBuilder newDbc = new DublinCoreBuilder(); //DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder();
MetadataType metadata = new MetadataType(); MetadataType metadata = new MetadataType();
RecordType record = new RecordType(); RecordType record = new RecordType();
// TODO Test if this is unnecessary // TODO Test if this is unnecessary
// HeaderType recordHeader = new HeaderType(); // HeaderType recordHeader = new HeaderType();
setDCObject(newDbc); //setDCObject(newDbc);
//dublinCoreBuilder = putContentIntoDCFieldLists(esResultObject);
/* /*
* if (!this.identifiers.isEmpty()) { recordHeader.setIdentifier(this.identifiers.get(0)); } if * if (!this.identifiers.isEmpty()) { recordHeader.setIdentifier(this.identifiers.get(0)); } if
* (!this.dates.isEmpty()) { recordHeader.setDatestamp(this.dates.get(0)); } * (!this.dates.isEmpty()) { recordHeader.setDatestamp(this.dates.get(0)); }
*/ */
metadata = newDbc.getDC(); metadata = dublinCoreBuilder.getDC();
record.setMetadata(metadata); record.setMetadata(metadata);
record.setHeader(setHeader(set, headerIdentifier)); record.setHeader(setHeader(set, headerIdentifier));
recordList.getRecord().add(record); recordList.getRecord().add(record);
...@@ -425,7 +465,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -425,7 +465,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
* @param of * @param of
* @return * @return
*/ */
public DublinCoreBuilder setDCObject(DublinCoreBuilder dbc) { /*public DublinCoreBuilder setDCObject(DublinCoreBuilder dbc) {
dbc.setContributor(this.contributors); dbc.setContributor(this.contributors);
dbc.setCoverage(this.coverages); dbc.setCoverage(this.coverages);
...@@ -444,12 +484,12 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -444,12 +484,12 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
dbc.setType(this.types); dbc.setType(this.types);
return dbc; return dbc;
} }*/
/** /**
* *
*/ */
public void listClearer() { /*public void listClearer() {
this.contributors.clear(); this.contributors.clear();
this.coverages.clear(); this.coverages.clear();
this.creators.clear(); this.creators.clear();
...@@ -465,7 +505,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { ...@@ -465,7 +505,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
this.subjects.clear(); this.subjects.clear();
this.titles.clear(); this.titles.clear();
this.types.clear(); this.types.clear();
} }*/
/** /**
* @param formatToFilter * @param formatToFilter
......
...@@ -38,7 +38,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { ...@@ -38,7 +38,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
* info.textgrid.middleware.RecordListDelivererInterface#buildRecord(info.textgrid.middleware. * info.textgrid.middleware.RecordListDelivererInterface#buildRecord(info.textgrid.middleware.
* oaipmh.ListRecordsType, java.lang.String, java.lang.String) * oaipmh.ListRecordsType, java.lang.String, java.lang.String)
*/ */
@Override //@Override
public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) { public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier) {
MetadataType metadata = new MetadataType(); MetadataType metadata = new MetadataType();
......
...@@ -6,7 +6,7 @@ import info.textgrid.middleware.oaipmh.RecordType; ...@@ -6,7 +6,7 @@ import info.textgrid.middleware.oaipmh.RecordType;
public interface RecordListDelivererInterface { public interface RecordListDelivererInterface {
public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier); //public RecordType buildRecord(ListRecordsType recordList, String set, String headerIdentifier);
public ListRecordsType getRecords(String from, String to, String set, String resumptionToken); public ListRecordsType getRecords(String from, String to, String set, String resumptionToken);
public HeaderType setHeader(String set, String headerIdentifier); public HeaderType setHeader(String set, String headerIdentifier);
......
...@@ -322,7 +322,7 @@ public class OaiPmhTest { ...@@ -322,7 +322,7 @@ public class OaiPmhTest {
* @throws ParseException * @throws ParseException
*/ */
@Test @Test
@Ignore //@Ignore
public void testListRecordSets() throws ParseException { public void testListRecordSets() throws ParseException {
OaiPmhTest.recordList.setContributor(TGConstants.CONTRIBUTOR_LIST); OaiPmhTest.recordList.setContributor(TGConstants.CONTRIBUTOR_LIST);
OaiPmhTest.recordList.setCoverage(TGConstants.COVERAGE_LIST); OaiPmhTest.recordList.setCoverage(TGConstants.COVERAGE_LIST);
......
...@@ -482,11 +482,11 @@ public class OaiPmhTextgridOnlineTests { ...@@ -482,11 +482,11 @@ public class OaiPmhTextgridOnlineTests {
ExecutorService executor = Executors.newFixedThreadPool(3); ExecutorService executor = Executors.newFixedThreadPool(3);
Future<Boolean> f1 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, Future<Boolean> f1 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS,
NO_SET, OAI_DC_PREFIX, 200, 100, "[B1]")); NO_SET, OAI_DC_PREFIX, 33, 100, "[B1]"));
Future<Boolean> f2 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, Future<Boolean> f2 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS,
NO_SET, OAI_DC_PREFIX, 194, 100, "[B2]")); NO_SET, OAI_DC_PREFIX, 33, 100, "[B2]"));
Future<Boolean> f3 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS, Future<Boolean> f3 = executor.submit(new OaiPmhResumptionTokenTestThread(VERB_LIST_RECORDS,
NO_SET, OAI_DC_PREFIX, 256, 100, "[B3]")); NO_SET, OAI_DC_PREFIX, 33, 100, "[B3]"));
executor.shutdown(); executor.shutdown();
......
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