diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml index 8c4380788a4364789ab693c55715352ec7c0bfae..4fd393caf0b3cdf43bdf956ccfe9f9e6a29e8494 100644 --- a/oaipmh-core/pom.xml +++ b/oaipmh-core/pom.xml @@ -27,11 +27,6 @@ <artifactId>httpclients</artifactId> <version>${common.version}</version> </dependency> - <dependency> - <groupId>info.textgrid.middleware</groupId> - <artifactId>ltputils</artifactId> - <version>${common.version}</version> - </dependency> <dependency> <groupId>info.textgrid.middleware.clients</groupId> <artifactId>textgrid-clients</artifactId> diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java index 8a06ce10ba377dab089918b43dcd209725126eb5..7b0c4411bfeddda92a567b17e50137496cc06a64 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java @@ -123,7 +123,7 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD public SearchResponse hitHandling(SearchResponse listFurtherValues, ListIdentifiersType lit, String set, String resumptionToken, Map<String, Integer> cursorCollector) { - long size = listFurtherValues.getHits().totalHits; + long size = listFurtherValues.getHits().getTotalHits().value; setResultSize(size); for (SearchHit hit : listFurtherValues.getHits().getHits()) { @@ -147,7 +147,7 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD // Check the need for a resumption token! ResumptionTokenType responseToken = OaipmhUtilities.getResumptionToken( - listFurtherValues.getHits().getTotalHits(), resumptionToken, cursorCollector, + listFurtherValues.getHits().getTotalHits().value, resumptionToken, cursorCollector, listFurtherValues.getScrollId(), this.searchResponseSize); if (responseToken != null) { lit.setResumptionToken(responseToken); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java index 4b483374e9bedd653d955222f854bec7b2003696..8fe6dfc279e294e4dd6a34e4c610b4fb09c59837 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java @@ -135,7 +135,7 @@ public class IdentifierListDelivererIdiom extends IdentifierListDelivererAbstrac String scrollID = scrollResp.getScrollId(); - long completeListSize = scrollResp.getHits().totalHits; + long completeListSize = scrollResp.getHits().getTotalHits().value; log.fine("complete list size: " + completeListSize); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java index 334fe565fbe3827cf7f662fefdab26889f3f5ac2..e22b06009f4ee6da6d69c2737b68d537febcbf57 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java @@ -35,9 +35,8 @@ public class MetadataFormatListDelivererTG extends MetadataFormatListDelivererAb FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes); GetRequest getRequest = - new GetRequest(this.oaiEsClient.getEsIndex(), this.oaiEsClient.getEsType(), - id.replace("textgrid:", "")).fetchSourceContext(fetchSourceContext); - + new GetRequest(this.oaiEsClient.getEsIndex(), id.replace("textgrid:", "")) + .fetchSourceContext(fetchSourceContext); GetResponse tgObject = null; try { tgObject = this.oaiEsClient.getEsClient().get(getRequest, RequestOptions.DEFAULT); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java index 30b0c3d31eb47f1e1027633ae47adc2828aeaf48..effcc0a8760cc94bbec51c81e5d52ac658957494 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java @@ -13,16 +13,14 @@ import org.elasticsearch.client.RestHighLevelClient; * * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-08 + * @version 2023-09-06 * @since 2014-01-09 */ public class OaipmhElasticSearchClient { private String url; private int[] ports; - private String esCluster; private String esIndex; - private String esType; private RestHighLevelClient esClient; /** @@ -62,34 +60,6 @@ public class OaipmhElasticSearchClient { this.esIndex = esIndex; } - /** - * @return esType - */ - public String getEsType() { - return this.esType; - } - - /** - * @param esType - */ - public void setEsType(String esType) { - this.esType = esType; - } - - /** - * @return esCluster - */ - public String getClusterName() { - return this.esCluster; - } - - /** - * @param esCluster - */ - public void setClusterName(String esCluster) { - this.esCluster = esCluster; - } - /** * @return url */ @@ -107,7 +77,7 @@ public class OaipmhElasticSearchClient { /** * @return port */ - public int[] getPort() { + public int[] getPorts() { return this.ports; } 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 26158b71ddf93d7c1800edb94020b5a3c6bd140d..48bef015b37d43c6dff127ff3e8936caa6294704 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java @@ -445,9 +445,8 @@ public class OaipmhUtilities { } // Building the getRequest against the elastic search index. - GetRequest getRequest = - new GetRequest(theESClient.getEsIndex(), theESClient.getEsType(), idInElasticSearchIndex) - .fetchSourceContext(fetchSourceContext); + GetRequest getRequest = new GetRequest(theESClient.getEsIndex(), idInElasticSearchIndex) + .fetchSourceContext(fetchSourceContext); log.fine("get request id: " + getRequest.id()); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java index 1722a4aabeb56934d3cce7b8468c4e4d1a538b86..7dd1645597d5443d8749560069de2181b4f8bb9c 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java @@ -9,7 +9,6 @@ import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.common.Strings; import org.json.JSONObject; import org.springframework.stereotype.Component; -import info.textgrid.middleware.common.LTPUtils; import info.textgrid.middleware.common.RDFConstants; import info.textgrid.middleware.common.TextGridMimetypes; import info.textgrid.middleware.oaipmh.ContributorType; @@ -492,10 +491,10 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract { RelatedIdentifier relatedID = new RelatedIdentifier(); if (i.startsWith(RDFConstants.HDL_PREFIX)) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.HANDLE); - relatedID.setValue(LTPUtils.omitHdlPrefix(i)); + relatedID.setValue(omitHdlPrefix(i)); } else if (i.startsWith(RDFConstants.DOI_PREFIX)) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.DOI); - relatedID.setValue(LTPUtils.omitDoiPrefix(i)); + relatedID.setValue(omitDoiPrefix(i)); } else if (i.startsWith("http")) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.URL); } @@ -685,10 +684,10 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract { AlternateIdentifier alternateID = new AlternateIdentifier(); if (i.startsWith(RDFConstants.HDL_PREFIX)) { alternateID.setAlternateIdentifierType(ID_TYPE_HANDLE); - alternateID.setValue(LTPUtils.omitHdlPrefix(i)); + alternateID.setValue(omitHdlPrefix(i)); } else if (i.startsWith(RDFConstants.DOI_PREFIX)) { alternateID.setAlternateIdentifierType(ID_TYPE_DOI); - alternateID.setValue(LTPUtils.omitDoiPrefix(i)); + alternateID.setValue(omitDoiPrefix(i)); } else { alternateID.setAlternateIdentifierType(ID_TYPE_OTHER); alternateID.setValue(i); @@ -859,7 +858,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract { // Datacite schema validation! if (idValue != null && !idValue.isEmpty()) { identifier.setIdentifierType(ID_TYPE_HANDLE); - identifier.setValue(LTPUtils.omitHdlPrefix(idValue)); + identifier.setValue(omitHdlPrefix(idValue)); } } @@ -870,7 +869,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract { else if (this.dariah) { // We set DOI for DH, 'cause we HAVE it! :-D identifier.setIdentifierType(ID_TYPE_DOI); - identifier.setValue(LTPUtils.omitDoiPrefix(idValue)); + identifier.setValue(omitDoiPrefix(idValue)); } return identifier; @@ -1009,6 +1008,51 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract { .getYear()); } + /** + * <p> + * Removes the "doi:" from the given DOI, if existing. + * </p> + * + * @param theDOI + * @return + */ + private static String omitDoiPrefix(final String theDOI) { + return omitPrefix(theDOI, RDFConstants.DOI_PREFIX); + } + + + /** + * <p> + * Removes the "hdl:" from the given PID, if existing. + * </p> + * + * @param theHDL + * @return + */ + private static String omitHdlPrefix(final String theHDL) { + return omitPrefix(theHDL, RDFConstants.HDL_PREFIX); + } + + /** + * <p> + * Removes a prefix, including the ":" from the beginning of a string. + * </p> + * + * @param theURI + * @param thePrefix + * @return + */ + private static String omitPrefix(final String theURI, final String thePrefix) { + + String result = theURI; + + if (theURI != null && theURI.startsWith(thePrefix + ":")) { + result = theURI.replaceFirst(thePrefix + ":", ""); + } + + return result; + } + // ** // GETTERS & SETTERS // ** 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 a0ee3a71bbbf990c819dad6d7100ea4257855bb6..98b5717171e69e198fe46ad66d3cc757b98ee3ab 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java @@ -101,9 +101,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { String[] includes = this.workFields; String[] excludes = Strings.EMPTY_ARRAY; FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes); - GetRequest getRequest = - new GetRequest(this.oaiEsClient.getEsIndex(), this.oaiEsClient.getEsType(), identifier) - .fetchSourceContext(fetchSourceContext); + GetRequest getRequest = new GetRequest(this.oaiEsClient.getEsIndex(), identifier) + .fetchSourceContext(fetchSourceContext); GetResponse responseWorkValues = null; try { @@ -195,7 +194,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract { scrollID = scrollResp.getScrollId(); - long completeListSize = scrollResp.getHits().totalHits; + long completeListSize = scrollResp.getHits().getTotalHits().value; setResultSize(completeListSize); if (completeListSize > 0) { diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java index 0e66a0b695a6f351465fa1597923871647f4d27d..ccb89496d230c64d60b230aa8bcc8e4334cccc15 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java @@ -175,31 +175,27 @@ public class RecordListDelivererDatacite extends RecordListDelivererAbstract { searchSourceBuilder.size(this.searchResponseSize); searchRequest.source(searchSourceBuilder); - SearchResponse scrollResp = new SearchResponse(); - - if (resumptionToken != null) { - SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); - scrollRequest.scroll(TimeValue.timeValueHours(24L)); - - try { + SearchResponse scrollResp = null; + // SearchResponse scrollResp = new SearchResponse(null); + try { + if (resumptionToken != null) { + SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); + scrollRequest.scroll(TimeValue.timeValueHours(24L)); scrollResp = this.oaiEsClient.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 { + } else { + searchRequest.source(searchSourceBuilder); + searchRequest.scroll(TimeValue.timeValueHours(24L)); scrollResp = this.oaiEsClient.getEsClient().search(searchRequest, RequestOptions.DEFAULT); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } + // TODO Check if scrollResp == null and what to do then! + String scrollID = scrollResp.getScrollId(); - long completeListSize = scrollResp.getHits().totalHits; + long completeListSize = scrollResp.getHits().getTotalHits().value; setResultSize(completeListSize); if (completeListSize > 0) { @@ -223,6 +219,7 @@ public class RecordListDelivererDatacite extends RecordListDelivererAbstract { } else { id2add = hit.getId(); } + uriList.add(id2add); } } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java index 87a9f872409bdff85edf9c8fdfee5bda860563e3..9c492810c6543cd7e435cc29330155394e1637ce 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java @@ -135,7 +135,7 @@ public class RecordListDelivererIdiom extends RecordListDelivererAbstract { String scrollID = scrollResp.getScrollId(); - long completeListSize = scrollResp.getHits().totalHits; + long completeListSize = scrollResp.getHits().getTotalHits().value; log.fine("total hits: " + completeListSize); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java index fa8f5a8af7bfbd8a2053dd25b7542231127d5168..914e687052abd20c94b60c73c3e45da0ad9ac07c 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java @@ -133,7 +133,6 @@ public class TestDHOaipmhLocally { int[] ports = new int[] {9202}; oaiEsClient = new OaipmhElasticSearchClient("localhost", ports, 100); oaiEsClient.setEsIndex("dariah-public"); - oaiEsClient.setEsType("metadata"); record = new RecordDelivererDC(false, true); record.setOaiEsClient(oaiEsClient); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java index bb826ba8ba24d1318b844cdbf2b317af221e97c2..932c83aacc299fe28819c96f0cf5fcf92c63e3f5 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java @@ -161,7 +161,6 @@ public class TestTGOaipmhLocally { int[] ports = new int[] {9202}; oaiEsClient = new OaipmhElasticSearchClient("localhost", ports, 100); oaiEsClient.setEsIndex("textgrid-public"); - oaiEsClient.setEsType("metadata"); record = new RecordDelivererDC(true, false); record.setOaiEsClient(oaiEsClient); diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index 416f17ca91253daba6f8a187efefb30ce9ceb342..84711a9f85c22bc7b5e303a2b697e0a999eda91b 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -41,7 +41,6 @@ <constructor-arg index="2" value="${elasticSearch.itemLimit}" /> <property name="esIndex" value="${elasticSearch.index}" /> - <property name="esType" value="${elasticSearch.type}" /> </bean> <bean id="NonpublicElasticSearchClient" @@ -54,7 +53,6 @@ value="${elasticSearch.itemLimit}" /> <property name="esIndex" value="${elasticSearch.nonpublicIndex}" /> - <property name="esType" value="${elasticSearch.type}" /> </bean> <!-- Main class bean --> 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 3a4d2e79fa5c752167dcfa76b053433189dfdd82..28c6ebe5011da9c72361fbe5fd35767ff69550fe 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties @@ -11,7 +11,6 @@ RS_ENDPOINT = https://dev.textgridlab.org/1.0/tgoaipmh elasticSearch.url = searchindex-main elasticSearch.ports = 9200 elasticSearch.index = *** -elasticSearch.type = metadata elasticSearch.itemLimit = 100 # NONPUBLIC index only TextGrid IDIOM queries! elasticSearch.nonpublicIndex = *** diff --git a/pom.xml b/pom.xml index 47e33b9eafc36a29d2561b886161d74a0b46edb8..2baabc77b14437f18eaf9928c3555bb93325d014 100644 --- a/pom.xml +++ b/pom.xml @@ -13,10 +13,10 @@ <jdk.version>1.8</jdk.version> <antlr-maven-plugin.version>3.2</antlr-maven-plugin.version> <antlr-runtime.version>3.2</antlr-runtime.version> - <common.version>4.4.1</common.version> + <common.version>5.0.0</common.version> <cxf.version>3.3.13</cxf.version> <cyclonedx-maven-plugin.version>2.7.0</cyclonedx-maven-plugin.version> - <elasticsearch.version>6.5.4</elasticsearch.version> + <elasticsearch.version>7.9.3</elasticsearch.version> <jaxb2-namespace-prefix.version>1.3</jaxb2-namespace-prefix.version> <jetty-maven-plugin.version>9.4.12.v20180830</jetty-maven-plugin.version> <junit.version>4.13.1</junit.version> @@ -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.1</mets-mods-mapping.version> + <mets-mods-mapping.version>2.4.2</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>