Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • dariah-de/dariah-de-oai-pmh-services
1 result
Show changes
Commits on Source (17)
Showing
with 156 additions and 63 deletions
.git
**/target/
# [6.2.0](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/compare/v6.1.0...v6.2.0) (2023-03-13)
### Bug Fixes
* add new metsmods release version 2.4.1 ([cc82593](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/commit/cc82593abf68ce20b3cfb7b423a6ba75515ae156))
* add sandbox (and edition) filter to tg listidentifier method ([0968cda](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/commit/0968cda37043c8168157966cfb68ebf21cd03065))
* add sandbox filter to datacite metadata format, too ([4967d5c](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/commit/4967d5c90469b464fe1c22833c81e37eba61912c))
* update metsmods version to new snapshot ([3989111](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/commit/398911140b9b37c1e4b3882d7fc1fe130ddb0055))
### Features
* add 1970-12-10 date format again ([7a31028](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/commit/7a31028426ac33d8a7a665c48289bd5dab161c4d))
# [6.1.0](https://gitlab.gwdg.de/dariah-de/dariah-de-oai-pmh-services/compare/v6.0.0...v6.1.0) (2023-03-07)
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>oaipmh</artifactId>
<groupId>info.textgrid.middleware</groupId>
<version>6.1.0</version>
<version>6.2.0</version>
</parent>
<artifactId>oaipmh-core</artifactId>
<packaging>jar</packaging>
......
......@@ -23,7 +23,7 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD
// STATIC
// **
private static Logger log = Logger.getLogger(IdentifierListDelivererAbstract.class.getName());
protected static Logger log = Logger.getLogger(IdentifierListDelivererAbstract.class.getName());
// **
// FINALS
......
......@@ -12,6 +12,7 @@ import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import info.textgrid.middleware.oaipmh.ListIdentifiersType;
......@@ -22,8 +23,6 @@ import info.textgrid.middleware.oaipmh.ListIdentifiersType;
*
* @author Maximilian Brodhun, SUB Göttingen
* @author Stefan E. Funk, SUB Göttingen
* @version 2022-09-07
* @since 2014-02-20
*/
public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
......@@ -67,8 +66,30 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
String[] includes = this.identifierListFields;
String[] excludes = Strings.EMPTY_ARRAY;
// TODO: necessary?
// FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
// **
// DARIAH
// **
if (this.dariah == true) {
// All objects!
}
// **
// TEXTGRID
// **
else {
// No sandbox items.
QueryBuilder tgFilterSandBox = QueryBuilders.matchPhraseQuery("nearlyPublished", "true");
// All editions only!
QueryBuilder tgEditionsOnly =
QueryBuilders.matchPhraseQuery(this.formatField, this.formatToFilter);
// Compose filtered query.
query = QueryBuilders.boolQuery().must(query).must(tgEditionsOnly).mustNot(tgFilterSandBox);
}
SearchRequest searchRequest =
new SearchRequest(this.oaiEsClient.getEsIndex()).searchType(SearchType.QUERY_THEN_FETCH);
......@@ -96,10 +117,6 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
return lit;
}
// **
// GETTERS & SETTERS
// **
/**
* @return
*/
......
......@@ -12,6 +12,7 @@ import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import info.textgrid.middleware.oaipmh.ListIdentifiersType;
......@@ -35,11 +36,8 @@ public class IdentifierListDelivererDatacite extends IdentifierListDelivererAbst
super(textgrid, dariah);
}
/*
* (non-Javadoc)
*
* @see info.textgrid.middleware.IdentifierListDelivererInterface#processIdentifierList(java.lang.
* String, java.lang.String, java.lang.String, java.lang.String)
/**
* TODO: Put in IdentifierListDelivererAbstract, due to usage in DC and Datacite class!!
*/
@Override
public ListIdentifiersType processIdentifierList(String from, String to, String set,
......@@ -61,8 +59,30 @@ public class IdentifierListDelivererDatacite extends IdentifierListDelivererAbst
String[] includes = this.identifierListFields;
String[] excludes = Strings.EMPTY_ARRAY;
// TODO: necessary?
// FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
// **
// DARIAH
// **
if (this.dariah == true) {
// All objects!
}
// **
// TEXTGRID
// **
else {
// No sandbox items.
QueryBuilder tgFilterSandBox = QueryBuilders.matchPhraseQuery("nearlyPublished", "true");
// All editions only!
QueryBuilder tgEditionsOnly =
QueryBuilders.matchPhraseQuery(this.formatField, this.formatToFilter);
// Compose filtered query.
query = QueryBuilders.boolQuery().must(query).must(tgEditionsOnly).mustNot(tgFilterSandBox);
}
SearchRequest searchRequest =
new SearchRequest(this.oaiEsClient.getEsIndex()).searchType(SearchType.QUERY_THEN_FETCH);
......
......@@ -14,7 +14,6 @@ import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
......@@ -84,8 +83,11 @@ public class OaipmhUtilities {
public static final String UTC_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public static final DateTimeFormatter UTC_FORMATTER =
DateTimeFormatter.ofPattern(UTC_FORMAT_STRING).withZone(ZoneId.of("UTC"));
public static final SimpleDateFormat FROM_UNTIL_FORMAT =
public static final SimpleDateFormat FROM_UNTIL_FORMAT_LONG =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
public static final SimpleDateFormat FROM_UNTIL_FORMAT_SHORT = new SimpleDateFormat("yyyy-MM-dd");
public static final String FROM_UNTIL_SHORT_MATCH = "\\d{4}-\\d{2}-\\d{2}";
public static final String FROM_UNTIL_LONG_MATCH = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}";
// **
// CLASS
......@@ -203,30 +205,34 @@ public class OaipmhUtilities {
/**
* <p>
* Parse incoming date for UTS format.
* Check incoming date.
* </p>
*
* @param incomingDate
* @return
*/
public static boolean isCorrectFromUntilDate(String incomingDate) {
public static boolean isParsableDate(String incomingDate) {
boolean result = false;
log.fine("incoming date: " + incomingDate);
try {
Date d = FROM_UNTIL_FORMAT.parse(incomingDate);
FROM_UNTIL_FORMAT.format(d);
log.fine("date used: " + result);
// Look for a match for valid date formatting, only "1970-12-10T18:30:00" or "1970-12-10" are
// allowed!
boolean matchesShort = incomingDate.matches(FROM_UNTIL_SHORT_MATCH);
boolean matchesLong = incomingDate.matches(FROM_UNTIL_LONG_MATCH);
result = true;
try {
// If matching long or short date, look for valid and parsable date!
if (matchesShort) {
FROM_UNTIL_FORMAT_SHORT.parse(incomingDate);
result = true;
} else if (matchesLong) {
FROM_UNTIL_FORMAT_LONG.parse(incomingDate);
result = true;
}
} catch (ParseException e) {
log.warning("date not usable for from/until: " + incomingDate);
result = false;
log.warning("date can not be parsed: " + incomingDate);
}
return result;
......
......@@ -85,10 +85,10 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
}
// Check from and util.
if (request.getFrom() != null && !OaipmhUtilities.isCorrectFromUntilDate(request.getFrom())) {
if (request.getFrom() != null && !OaipmhUtilities.isParsableDate(request.getFrom())) {
errorValues.add("from");
}
if (request.getUntil() != null && !OaipmhUtilities.isCorrectFromUntilDate(request.getUntil())) {
if (request.getUntil() != null && !OaipmhUtilities.isParsableDate(request.getUntil())) {
errorValues.add("until");
}
......
......@@ -208,28 +208,34 @@ public class TestOaipmhUtilities {
String date;
date = "1970-12-10T18:30:00";
assertTrue(OaipmhUtilities.isCorrectFromUntilDate(date));
assertTrue(OaipmhUtilities.isParsableDate(date));
date = "1970-12-10T22:30:97";
assertTrue(OaipmhUtilities.isParsableDate(date));
date = "1970-12-10";
assertTrue(OaipmhUtilities.isParsableDate(date));
date = "1970-53-65";
assertTrue(OaipmhUtilities.isParsableDate(date));
date = "1970-12-10T18:30";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
date = "1970-12-10T18";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
date = "1970-12-10";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
date = "1970-12";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
date = "1970";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
date = "kakki";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
date = "kakki-fakki";
assertFalse(OaipmhUtilities.isCorrectFromUntilDate(date));
assertFalse(OaipmhUtilities.isParsableDate(date));
}
/**
......
......@@ -35,8 +35,10 @@ public class TestDHOaipmhOnline {
// FINALS
// **
// private static final String PROPERTIES_FILE = "oaipmh.test.repository-de-dariah-eu.properties";
private static final String PROPERTIES_FILE = "oaipmh.test.trep-de-dariah-eu.properties";
private static final String PROPERTIES_FILE = "oaipmh.test.repository-de-dariah-eu.properties";
// private static final String PROPERTIES_FILE = "oaipmh.test.trep-de-dariah-eu.properties";
// private static final String PROPERTIES_FILE =
// "oaipmh.test.dhrepworkshop-de-dariah-eu.properties";
// **
// STATICS
......
......@@ -36,7 +36,7 @@ import info.textgrid.middleware.test.online.OaipmhUtilitiesOnline;
*
* @author Stefan E. Funk, SUB Göttingen
*/
@Ignore
@Ignore
public class TestTGGetRecordOnline {
// **
......
......@@ -25,10 +25,10 @@ checkListRecordsDCSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c
checkListRecordsDCFrom = 2012-01-04T01:00:00
checkListRecordsDCUntil = 2012-01-04T12:00:00
checkListRecordsIdiomFrom = 2012-01-04T01:00:00
checkListRecordsIdiomUntil = 2022-01-04T12:00:00
checkListRecordsIdiomFrom = 2012-01-04
checkListRecordsIdiomUntil = 2022-01-04
checkListRecordsDataciteFrom = 2012-01-04T01:00:00
checkListRecordsDataciteFrom = 2012-01-04
checkListRecordsDataciteUntil = 2012-01-04T12:00:00
# ListIdentifiers
......
# !!! ADD DHREPWORKSHOP URIS !!!
# OAI-PMH host
oaipmhEndpoint = https://dhrepworkshop.de.dariah.eu/1.0/oaipmh
# GetRecord
checkGetRecordDC = hdl:21.T11991/0000-000D-2845-9
expectedGetRecordDC = <dc:identifier>doi:10.5072/0000-000D-2845-9</dc:identifier>
checkGetRecordDatacite = hdl:21.T11991/0000-000D-2845-9
expectedGetRecordDatacite = <datacite:alternateIdentifier alternateIdentifierType="DOI">10.5072/0000-000D-2845-9</datacite:alternateIdentifier>
# ListRecords
checkListRecordsDCSet = hdl:21.T11991/0000-001C-2AA6-8
checkListRecordsDCSetExpectedPages = 4
checkListRecordsDCFrom = 2018-07-02T16:00:00
checkListRecordsDCUntil = 2018-07-02T23:00:00
checkListRecordsDataciteFrom = 2018-07-02T16:00:00
checkListRecordsDataciteUntil = 2018-07-02T23:00:00
# ListIdentifiers
checkListIdentifiersSet = hdl:21.T11991/0000-001C-2AA6-8
checkListIdentifiersSetExpectedPages = 4
# ListSets
expectedListSets = hdl:21.T11991/0000-0005-E1A9-E
......@@ -23,13 +23,13 @@ checkGetRecordIDList = textgrid:mq05.0, textgrid:jgv6.0, textgrid:w7rz.0, textgr
# ListRecords
checkListRecordsDCSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c
checkListRecordsDCFrom = 2012-01-04T01:00:00
checkListRecordsDCUntil = 2012-01-04T12:00:00
checkListRecordsDCUntil = 2012-01-04
checkListRecordsIdiomFrom = 2020-11-27T15:00:00
checkListRecordsIdiomFrom = 2020-11-27
checkListRecordsIdiomUntil = 2021-11-27T20:00:00
checkListRecordsDataciteFrom = 2012-01-04T01:00:00
checkListRecordsDataciteUntil = 2012-01-04T12:00:00
checkListRecordsDataciteFrom = 2012-01-04
checkListRecordsDataciteUntil = 2012-01-04
# ListIdentifiers
checkListIdentifiersSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>oaipmh</artifactId>
<groupId>info.textgrid.middleware</groupId>
<version>6.1.0</version>
<version>6.2.0</version>
</parent>
<artifactId>oaipmh-webapp</artifactId>
<packaging>war</packaging>
......
......@@ -375,6 +375,7 @@
<constructor-arg index="1" value="${dariah}" />
<property name="fieldForRange" value="${rangeField}" />
<property name="formatField" value="${formatField}" />
<property name="formatToFilter" value="${formatToFilter}" />
<property name="searchResponseSize"
value="${searchResponseSize}" />
......@@ -428,6 +429,7 @@
<constructor-arg index="1" value="${dariah}" />
<property name="fieldForRange" value="${rangeField}" />
<property name="formatField" value="${formatField}" />
<property name="formatToFilter" value="${formatToFilter}" />
<property name="searchResponseSize"
value="${searchResponseSize}" />
......
......@@ -8,8 +8,8 @@ RS_ENDPOINT = https://repository.de.dariah.eu/1.0/oaipmh
## ElasticSearch Config ##
############################
elasticSearch.url = 127.0.0.1
elasticSearch.ports = 9202, 9203
elasticSearch.url = searchindex-main
elasticSearch.ports = 9200
elasticSearch.index = ***
elasticSearch.type = metadata
elasticSearch.itemLimit = 100
......
......@@ -8,8 +8,8 @@ RS_ENDPOINT = https://dev.textgridlab.org/1.0/tgoaipmh
## ElasticSearch Config ##
############################
elasticSearch.url = 127.0.0.1
elasticSearch.ports = 9202, 9203
elasticSearch.url = searchindex-main
elasticSearch.ports = 9200
elasticSearch.index = ***
elasticSearch.type = metadata
elasticSearch.itemLimit = 100
......
......@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>info.textgrid.middleware</groupId>
<artifactId>oaipmh</artifactId>
<version>6.1.0</version>
<version>6.2.0</version>
<packaging>pom</packaging>
<name>DARIAHDE :: OAI-PMH DataProvider</name>
<properties>
......@@ -26,7 +26,7 @@
<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
<maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
<maven-jaxb2-plugin.version>0.15.2</maven-jaxb2-plugin.version>
<mets-mods-mapping.version>2.4.0</mets-mods-mapping.version>
<mets-mods-mapping.version>2.4.1</mets-mods-mapping.version>
<package-info-maven-plugin.version>1.4.5</package-info-maven-plugin.version>
<properties-maven-plugin.version>1.0-alpha-2</properties-maven-plugin.version>
<rdf4j-repository-api.version>3.0.2</rdf4j-repository-api.version>
......