From 6373a45afc21504e2c63d9de9fa06467f0847744 Mon Sep 17 00:00:00 2001 From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de> Date: Fri, 17 Jul 2020 17:52:35 +0200 Subject: [PATCH] prepare listrecords for open aire and make openAireRecord read setting from property file --- .../textgrid/middleware/OAIPMHUtilities.java | 20 ++ .../textgrid/middleware/OpenAireRecord.java | 67 ++++++- .../RecordListDelivererAbstract.java | 188 ++++++++++++++++++ .../middleware/RecordListDelivererDC.java | 6 +- .../info/textgrid/middleware/TGConstants.java | 3 + .../info/textgrid/middleware/OaiPmhTest.java | 74 ++++++- .../webapp/WEB-INF/oaipmh.textgrid.properties | 34 +++- 7 files changed, 365 insertions(+), 27 deletions(-) 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 abd3aeae..8134ada2 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -12,6 +12,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.TimeZone; import javax.xml.bind.JAXBContext; @@ -32,6 +33,8 @@ import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.common.Strings; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.json.JSONException; import org.json.JSONObject; @@ -41,6 +44,7 @@ import info.textgrid.clients.tgauth.AuthClientException; import info.textgrid.middleware.oaipmh.GetRecordType; import info.textgrid.middleware.oaipmh.HeaderType; import info.textgrid.middleware.oaipmh.ListMetadataFormatsType; +import info.textgrid.middleware.oaipmh.ListRecordsType; import info.textgrid.middleware.oaipmh.MetadataFormatType; import info.textgrid.middleware.oaipmh.MetadataType; import info.textgrid.middleware.oaipmh.OAIPMHtype; @@ -430,4 +434,20 @@ public class OAIPMHUtilities { return getRecordType; } + + public static String[][] fetchArrayFromPropFile(String propertyName, Properties propFile) { + + //get array split up by the semicolin + String[] a = propFile.getProperty(propertyName).split(";"); + + //create the two dimensional array with correct size + String[][] array = new String[a.length][a.length]; + + //combine the arrays split by semicolin and comma + for(int i = 0;i < a.length;i++) { + array[i] = a[i].split(","); + } + return array; + } + } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java index 2a0ef350..dc9ec029 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java @@ -1,6 +1,11 @@ package info.textgrid.middleware; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.text.ParseException; +import java.util.Properties; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; @@ -8,6 +13,7 @@ import javax.xml.datatype.DatatypeConfigurationException; import org.apache.commons.logging.LogFactory; import org.elasticsearch.common.Strings; +import org.json.JSONException; import org.json.JSONObject; import info.textgrid.middleware.oaipmh.ContributorType; @@ -40,6 +46,7 @@ import info.textgrid.middleware.oaipmh.Resource.RightsList; import info.textgrid.middleware.oaipmh.Resource.RightsList.Rights; import info.textgrid.middleware.oaipmh.Resource.Titles; import info.textgrid.middleware.oaipmh.Resource.Titles.Title; +import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes; /** @@ -78,6 +85,7 @@ public class OpenAireRecord extends RecordDelivererAbstract { private String[] relatedIdentifierFields; private String[] workFields; private String relationToWorkObject; + private String identifierField; //Contains the setting to get connection to the ElasticSearch index. The content will be given by a configuration file private OAI_ESClient oaiEsClient; @@ -89,9 +97,35 @@ public class OpenAireRecord extends RecordDelivererAbstract { * * @param textgrid * @param dariah + * @throws IOException */ - public OpenAireRecord(boolean textgrid, boolean dariah) { + public OpenAireRecord(boolean textgrid, boolean dariah) throws IOException { super(textgrid, dariah); + + InputStream input = null; + try { + input = new FileInputStream("/home/max/dev/oai-pmh/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties"); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Properties prop = new Properties(); + prop.load(input); + + this.setFields(OAIPMHUtilities.fetchArrayFromPropFile("fields", prop)[0]); + this.setFormatField(prop.getProperty("formatField")); + this.setFormatToFilter(TextGridMimetypes.EDITION); + this.setTitleFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.titleFields", prop)[0]); + this.setDateFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.dateFields", prop)[0]); + this.setContributorFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.contributorFields", prop)[0]); + this.setLanguageFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.languageFields", prop)[0]); + this.setAlternateIdentifierFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.alternateIdentifierFields", prop)[0]); + this.setFormatFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.formatFields", prop)[0]); + this.setRightsFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.rightsFields", prop)[0]); + this.setDescriptionFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.descriptionFields", prop)[0]); + this.setRelationToWorkObject(prop.getProperty("oar.relationToWorkObject")); + this.setRelatedIdentifierFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.relatedIdentifierFields", prop)[0]); + } /** @@ -103,6 +137,7 @@ public class OpenAireRecord extends RecordDelivererAbstract { HeaderType header = new HeaderType(); header.setDatestamp(OAIPMHUtilities.datestampAsString(OAIPMHUtilities.fieldLoader(jsonObj, TGConstants.CREATED))); + if(!idInElasticSearchIndex.startsWith(TGConstants.ITEM_IDENTIFIER_PREFIX)) { header.setIdentifier(TGConstants.ITEM_IDENTIFIER_PREFIX + idInElasticSearchIndex); }else { @@ -279,7 +314,12 @@ public class OpenAireRecord extends RecordDelivererAbstract { private Identifier addIdentifier() { Identifier identifier = new Identifier(); identifier.setIdentifierType("HANDLE"); - identifier.setValue(jsonObj.getJSONObject("pid").get("value").toString()); + try { + identifier.setValue(jsonObj.getJSONObject("pid").get("value").toString()); + }catch(JSONException fieldNotFound) { + identifier.setValue(jsonObj.get("textgridUri").toString()); + } + return identifier; } @@ -298,9 +338,12 @@ public class OpenAireRecord extends RecordDelivererAbstract { NameIdentifier nameIdentifier = new NameIdentifier(); //TODO: creatorID Field from configfile String creatorID = OAIPMHUtilities.fieldLoader(jsonObj, "edition.source.bibliographicCitation.author.id"); - if (creatorID != null) { + + if (creatorID != null && creatorID.contains(":")) { nameIdentifier.setValue(creatorID.split(":")[1]); nameIdentifier.setNameIdentifierScheme(creatorID.split(":")[0]); + }else { + nameIdentifier.setValue(creatorID); } creator.setNameIdentifier(nameIdentifier); creators.getCreator().add(creator); @@ -310,8 +353,11 @@ public class OpenAireRecord extends RecordDelivererAbstract { private Titles addTitles() { Titles titles = new Titles(); - + for(String field : fields) { + System.out.println(field); + } for (String titleField: titleFields) { + Title tileInOpenAireRecord = new Title(); tileInOpenAireRecord.setValue(OAIPMHUtilities.fieldLoader(jsonObj, titleField)); titles.getTitle().add(tileInOpenAireRecord); @@ -353,6 +399,9 @@ public class OpenAireRecord extends RecordDelivererAbstract { this.formatField = formatField; } + public String getFormatField() { + return formatField; + } /** * @param fields */ @@ -430,6 +479,8 @@ public class OpenAireRecord extends RecordDelivererAbstract { public void setFormatFields(String[] formatFields) { this.formatFields = formatFields; } + + public String[] getRightsFields() { return rightsFields; @@ -477,6 +528,14 @@ public class OpenAireRecord extends RecordDelivererAbstract { this.workFields = workFields; } + public String getIdentifierField() { + return identifierField; + } + + public void setIdentifierField(String identifierField) { + this.identifierField = identifierField; + } + } \ No newline at end of file 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 7b0fab41..7e810c83 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java @@ -1,17 +1,45 @@ package info.textgrid.middleware; +import java.io.IOException; import java.util.ArrayList; +import java.util.Hashtable; import java.util.List; +import java.util.Map; + +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.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.builder.SearchSourceBuilder; + +import info.textgrid.middleware.oaipmh.ListRecordsType; import info.textgrid.middleware.oaipmh.RequestType; +import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** * */ public abstract class RecordListDelivererAbstract implements RecordListDelivererInterface { + private OAI_ESClient oaiEsClient; + protected boolean textgrid; protected boolean dariah; + private String rangeField; + private String formatField; + private String formatToFilter; + private int searchResponseSize; + private long resultSize; + private boolean foundItems; + + private static final int LIFETIME_RES_TOKEN = 600; + protected static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); + /** * @param textgrid * @param dariah @@ -21,6 +49,108 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer this.dariah = dariah; } + public List<String> getUriList(String from, String to, String set, String resumptionToken) { + + List<String> uriList = new ArrayList<String>(); + QueryBuilder query; + + QueryBuilder rangeQuery = QueryBuilders.rangeQuery(this.rangeField).from("1900").to("2020"); + + if(set.length()>0) { + 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); + + query = boolQuery; + }else { + query = rangeQuery; + } + + return getFieldsFromESIndex(query, resumptionToken, set); + } + + + public List<String> getFieldsFromESIndex(QueryBuilder query, String resumptionToken, + String set) { + ListRecordsType recordList = new ListRecordsType(); + List<String> uriList = new ArrayList<String>(); + QueryBuilder recordFilter = QueryBuilders.boolQuery().must(query) + .must(QueryBuilders.matchPhraseQuery(this.formatField, this.formatToFilter)); + + SearchRequest searchRequest = new SearchRequest(OAI_ESClient.getEsIndex()); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + + + searchSourceBuilder.query(recordFilter); + searchSourceBuilder.size(this.searchResponseSize); + searchRequest.source(searchSourceBuilder); + + SearchResponse scrollResp = new SearchResponse(); + + if (resumptionToken.length()>0) { + + //scrollResp = null; + SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); + scrollRequest.scroll(TimeValue.timeValueSeconds(LIFETIME_RES_TOKEN)); + + 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.timeValueMinutes(LIFETIME_RES_TOKEN)); + try { + System.out.println(searchRequest); + 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()); + } + } + + ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken( + completeListSize, resumptionToken, cursorCollector, scrollID, this.searchResponseSize, i); + + if (resTokenForResponse != null) { + recordList.setResumptionToken(resTokenForResponse); + } + }else { + setFoundItems(false); + } + + return uriList; + } + + + /** * @param request * @return @@ -86,6 +216,64 @@ 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) { + 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; + } } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java index defe0a3b..4b0271e0 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java @@ -385,7 +385,6 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { QueryBuilder rangeQuery = QueryBuilders.rangeQuery(this.rangeField).from(from).to(to); if (set != null) { - String queryField = ""; String valueField = ""; @@ -410,6 +409,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { query = boolQuery; } else { query = rangeQuery; + } try { fetchFields(query, recordList, resumptionToken, set); @@ -449,9 +449,9 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { header.setIdentifier(identifierForHeader); // Set set :-) - //if (set != null) { + if (set != null) { header.getSetSpec().add(setSpec); - //} + } return header; } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java index cc47c193..4a5b1849 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java @@ -20,6 +20,9 @@ public final class TGConstants { // } + public static final String SET_FIELD_FOR_TEXTGRID = "project"; + public static final String PROJECT_ID_FOR_TEXTGRID = "project.id"; + public static final String ITEM_IDENTIFIER_PREFIX = "textgrid:"; public static final List<String> TEXTGRID_REP_ADMIN_CONTACT = Arrays.asList("support@de.dariah.eu"); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java index 35a20952..38fa84c5 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java @@ -1,7 +1,11 @@ package info.textgrid.middleware; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.text.ParseException; import java.util.Map; +import java.util.Properties; import javax.xml.bind.JAXBException; import javax.xml.datatype.DatatypeConfigurationException; @@ -73,8 +77,10 @@ public class OaiPmhTest { recordIDIOM = new RecordDelivererIDIOM(true, false); recordIDIOM.setOaiEsClient(oaiEsClient); - + openAireRecord = new OpenAireRecord(true, false); + openAireRecord.setOaiEsClient(oaiEsClient); + recordList = new RecordListDelivererDC(true, false); recordList.setFields(TGConstants.TGFields); @@ -92,6 +98,11 @@ public class OaiPmhTest { setListTextGrid = new SetDeliverer(true, false); } + @Test + public void testReadFromPropertyFile() throws IOException { + OpenAireRecord oar = new OpenAireRecord(true, false); + } + /** * @throws DatatypeConfigurationException */ @@ -232,12 +243,12 @@ public class OaiPmhTest { @Test //@Ignore - public void testGetRequestGetRecordOpenAire() throws ParseException, JAXBException, DatatypeConfigurationException { + public void testGetRequestGetRecordOpenAire() throws ParseException, JAXBException, DatatypeConfigurationException, IOException { System.out.println("Test for OpenAire get record"); //OpenAireRecord oar = new OpenAireRecord(true, false); - openAireRecord.setOaiEsClient(oaiEsClient); - String[] fields = {"textgridUri", "pid.value", "format", "edition", "title", "created", "issued", "lastModified", "dataContributor"}; + + /*String[] fields = {"textgridUri", "pid.value", "format", "edition", "title", "created", "issued", "lastModified", "dataContributor"}; String[] titleFields = {"title", "edition.source.bibliographicCitation.editionTitle"}; String[] dateFields = {"created", "issued", "lastModified"}; String[] contributorFields = {"dataContributor"}; @@ -247,10 +258,10 @@ public class OaiPmhTest { String[] rightsFields = {"edition.license"}; String[] descriptionFields = {"work.abstract"}; String[] relatedIdentifierFields = {"edition.isEditionOf"}; - openAireRecord.setFields(fields ); + openAireRecord.setFields(fields); + openAireRecord.setFormatField(TGConstants.FORMAT); + openAireRecord.setFormatToFilter(TextGridMimetypes.EDITION); - openAireRecord.setFormatField(TGConstants.FORMAT); - openAireRecord.setFormatToFilter(TextGridMimetypes.EDITION); openAireRecord.setTitleFields(titleFields); openAireRecord.setDateFields(dateFields); openAireRecord.setContributorFields(contributorFields); @@ -260,7 +271,7 @@ public class OaiPmhTest { openAireRecord.setRightsFields(rightsFields); openAireRecord.setDescriptionFields(descriptionFields); openAireRecord.setRelationToWorkObject("edition.isEditionOf"); - openAireRecord.setRelatedIdentifierFields(relatedIdentifierFields); + openAireRecord.setRelatedIdentifierFields(relatedIdentifierFields);*/ //oar.getRecordById("24gv8.0"); /*System.out.println("Identifier: " + oar.getResource().getIdentifier().getIdentifierType() + " " + oar.getResource().getIdentifier().getValue()); @@ -318,13 +329,52 @@ public class OaiPmhTest { //OAIPMHUtilities.marshal(oar.getRecord("24gv8.0")); - String p = this.request.getRequest("GetRecord", "24gv8.0", + String p = this.request.getRequest("GetRecord", "mk7j.0", TGConstants.METADATA_OPENAIRE_PREFIX, "", "", "", ""); System.out.println(p); - } + + @Test + //@Ignore + public void testLIstRecordsOpenAire() throws IOException { + OpenAireRecordList oarList = new OpenAireRecordList(true, false); + OpenAireRecord openAireRecord = new OpenAireRecord(true, false); + + /* String[] fields = {"textgridUri", "pid.value", "format", "edition", "title", "created", "issued", "lastModified", "dataContributor"}; + String[] titleFields = {"title", "edition.source.bibliographicCitation.editionTitle"}; + String[] dateFields = {"created", "issued", "lastModified"}; + String[] contributorFields = {"dataContributor"}; + String[] languageFields = {"edition.language"}; + String[] alternateIdentifierFields = {"textgridUri"}; + String[] formatFields = {"format"}; + String[] rightsFields = {"edition.license"}; + String[] descriptionFields = {"work.abstract"}; + String[] relatedIdentifierFields = {"edition.isEditionOf"}; + + openAireRecord.setFields(fields ); + openAireRecord.setFormatField(TGConstants.FORMAT); + openAireRecord.setFormatToFilter(TextGridMimetypes.EDITION); + openAireRecord.setTitleFields(titleFields); + openAireRecord.setDateFields(dateFields); + openAireRecord.setContributorFields(contributorFields); + openAireRecord.setLanguageFields(languageFields); + openAireRecord.setAlternateIdentifierFields(alternateIdentifierFields); + openAireRecord.setFormatFields(formatFields); + openAireRecord.setRightsFields(rightsFields); + openAireRecord.setDescriptionFields(descriptionFields); + openAireRecord.setRelationToWorkObject("edition.isEditionOf"); + openAireRecord.setRelatedIdentifierFields(relatedIdentifierFields);*/ + + oarList.setOpenAireRecord(openAireRecord); + oarList.setOaiEsClient(oaiEsClient); + oarList.setRangeField(TGConstants.RANGE_FIELD); + oarList.setFormatField(TGConstants.FORMAT); + oarList.setFormatToFilter(TextGridMimetypes.EDITION); + oarList.setSearchResponseSize(100); + oarList.getRecords("", "", "", ""); + } /** * @throws ParseException @@ -436,7 +486,7 @@ public class OaiPmhTest { * @throws ParseException */ @Test - @Ignore + //@Ignore public void testListRecordSets() throws ParseException { OaiPmhTest.recordList.setContributor(TGConstants.CONTRIBUTOR_LIST); OaiPmhTest.recordList.setCoverage(TGConstants.COVERAGE_LIST); @@ -466,6 +516,7 @@ public class OaiPmhTest { System.out.println("Test for the verb \"ListRecords\" with sets with succesfull response"); //String p = this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-f89ad029-4eb2-ae5c-6028-5db876513128", "", "", ""); String p = this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", ""); + System.out.println(p); /*String resToken = ""; for (Map.Entry<String, Integer> entry : RecordListDelivererDC.cursorCollector.entrySet()) { @@ -520,6 +571,7 @@ public class OaiPmhTest { @Test @Ignore public void testListRecords2() throws ParseException { + System.out.println("HU"); OaiPmhTest.recordList.setContributor(TGConstants.CONTRIBUTOR_LIST); OaiPmhTest.recordList.setCoverage(TGConstants.COVERAGE_LIST); OaiPmhTest.recordList.setCreators(TGConstants.CREATOR_LIST); diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties index 155cfca4..d07aaf14 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties @@ -37,36 +37,52 @@ AdminMail = support@de.dariah.eu ## Field Settings ## ###################### -fields = created, format, identifier, dataContributor, textgridUri, project.id, relations.isDerivedFrom, title, pid.value, edition.isEditionOf, edition.agent.value, edition.license.licenseUri, edition.language, edition.source.bibliographicCitation.author.value, edition.source.bibliographicCitation.editor.value, edition.source.bibliographicCitation.editionTitle, edition.source.bibliographicCitation.placeOfPublication.value, edition.source.bibliographicCitation.publisher.value, edition.source.bibliographicCitation.editionNo, edition.source.bibliographicCitation.series, edition.source.bibliographicCitation.volume, edition.source.bibliographicCitation.issue, edition.source.bibliographicCitation.epage, edition.source.bibliographicCitation.spage, edition.source.bibliographicCitation.bibidentifier, work.abstract, work.genre, work.type, work.spatial.value, work.temporal.value, work.agent.value, work.subject.id.value, lastModified -workFields = created, work.abstract, relations.isDerivedFrom, textgridUri, work.genre, title, work.type, work.spatial.value, work.temporal.spatial, work.agent.value, work.subject.id.value +fields = created,issued,format,identifier,dataContributor,textgridUri,project.id,relations.isDerivedFrom,title,pid.value,edition.isEditionOf,edition.agent.value,edition.license.licenseUri,edition.language,edition.source.bibliographicCitation.author.value,edition.source.bibliographicCitation.editor.value,edition.source.bibliographicCitation.editionTitle,edition.source.bibliographicCitation.placeOfPublication.value,edition.source.bibliographicCitation.publisher.value,edition.source.bibliographicCitation.editionNo,edition.source.bibliographicCitation.series,edition.source.bibliographicCitation.volume,edition.source.bibliographicCitation.issue,edition.source.bibliographicCitation.epage,edition.source.bibliographicCitation.spage,edition.source.bibliographicCitation.bibidentifier,work.abstract,work.genre,work.type,work.spatial.value,work.temporal.value,work.agent.value,work.subject.id.value,lastModified +workFields = created,work.abstract,relations.isDerivedFrom,textgridUri,work.genre,title,work.type,work.spatial.value,work.temporal.spatial,work.agent.value,work.subject.id.value + + +###################### +## OpenAireRecords ### +###################### + +oar.titleFields = title,edition.source.bibliographicCitation.editionTitle +oar.dateFields = created,issued,lastModified +oar.contributorFields = dataContributor +oar.languageFields = edition.language +oar.alternateIdentifierFields = textgridUri +oar.formatFields = format +oar.rightsFields = edition.license +oar.descriptionFields = work.abstract +oar.relatedIdentifierFields = edition.isEditionOf +oar.relationToWorkObject = edition.isEditionOf ########################## ## Dublin Core Fields ## ########################## contributorList = dataContributor -coverageList = work.spatial.value, work.temporal.value +coverageList = work.spatial.value,work.temporal.value creatorList = work.agent.value dateList = created descriptionList = work.abstract formatList = format -identifierList = textgridUri, pid.value, identifier +identifierList = textgridUri,pid.value,identifier languageList = edition.language publisherList = edition.source.bibliographicCitation.publisher.value -relationList = project.id, relations.isDerivedFrom -relationsForWorkList = relations.isDerivedFrom, title, textgridUri +relationList = project.id,relations.isDerivedFrom +relationsForWorkList = relations.isDerivedFrom,title,textgridUri rightsList = edition.license.licenseUri -sourceList = edition.source.bibliographicCitation.author.value, edition.source.bibliographicCitation.editor.value, edition.source.bibliographicCitation.editionTitle, edition.source.bibliographicCitation.placeOfPublication.value, edition.source.bibliographicCitation.publisher.value, edition.source.bibliographicCitation.editionNo, edition.source.bibliographicCitation.series, edition.source.bibliographicCitation.volume, edition.source.bibliographicCitation.issue, edition.source.bibliographicCitation.epage, edition.source.bibliographicCitation.spage +sourceList = edition.source.bibliographicCitation.author.value,edition.source.bibliographicCitation.editor.value,edition.source.bibliographicCitation.editionTitle,edition.source.bibliographicCitation.placeOfPublication.value,edition.source.bibliographicCitation.publisher.value,edition.source.bibliographicCitation.editionNo,edition.source.bibliographicCitation.series,edition.source.bibliographicCitation.volume,edition.source.bibliographicCitation.issue,edition.source.bibliographicCitation.epage,edition.source.bibliographicCitation.spage subjectList = work.subject.id.value titleList = title -typeList = work.genre, work.type +typeList = work.genre,work.type ############################# ## ListIdentifierSetting ## ############################# rangeField = created -identifierListFields = textgridUri, created, format +identifierListFields = textgridUri,created,format formatField = format formatToFilter = text/vnd.dariah.dhrep.collection+turtle dateOfObjectCreation = created -- GitLab