diff --git a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/ExportedOaiRecord.java b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/ExportedOaiRecord.java index af158b3..9faa927 100644 --- a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/ExportedOaiRecord.java +++ b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/ExportedOaiRecord.java @@ -11,7 +11,7 @@ import jakarta.persistence.Table; @Entity @Table(name = "oai_records") -public class ExportedOaiRecord implements OaiRecord { +public class ExportedOaiRecord implements OaiRecord { private static final long serialVersionUID = 9178403183427337500L; diff --git a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiIdentifier.java b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiIdentifier.java index 765ba56..2ca5048 100644 --- a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiIdentifier.java +++ b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiIdentifier.java @@ -1,14 +1,13 @@ package eu.dnetlib.domain.oai; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.List; -public interface OaiIdentifier extends Serializable { +public interface OaiIdentifier extends Serializable { String getId(); - LocalDateTime getDate(); + T getDate(); List getSets(); diff --git a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiInfo.java b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiInfo.java index 6a137f1..39a8026 100644 --- a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiInfo.java +++ b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiInfo.java @@ -1,7 +1,26 @@ package eu.dnetlib.domain.oai; import java.io.Serializable; +import java.util.List; -public interface OaiInfo extends Serializable { +public interface OaiInfo extends Serializable { + + String getRepositoryName(); + + String getBaseURL(); + + String getProtocolVersion(); + + T getEarliestDatestamp(); + + String getDeletedRecord(); + + String getGranularity(); + + List getAdminEmails(); + + List getCompressions(); + + List getDescriptions(); } diff --git a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiRecord.java b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiRecord.java index 4236e0b..51c895d 100644 --- a/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiRecord.java +++ b/dnet-app/libs/dnet-domain/src/main/java/eu/dnetlib/domain/oai/OaiRecord.java @@ -1,7 +1,7 @@ package eu.dnetlib.domain.oai; -public interface OaiRecord extends OaiIdentifier { +public interface OaiRecord extends OaiIdentifier { - String getBody(); + K getBody(); } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiClient.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiClient.java index 572b2f0..37a6ca9 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiClient.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiClient.java @@ -2,10 +2,10 @@ package eu.dnetlib.common.oai; import java.util.List; import java.util.Map; +import java.util.function.Function; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -26,92 +26,114 @@ import eu.dnetlib.domain.oai.OaiSet; public class OaiClient { - private static final Log log = LogFactory.getLog(OaiClient.class); + public OaiResponse> listSets(final String baseUrl, final String resumptionToken) throws Exception { - public List listSets(final String baseUrl) throws Exception { + final OaiRequest req = StringUtils.isNotBlank(resumptionToken) + ? OaiRequest.newListSetsWithToken(baseUrl, resumptionToken) + : OaiRequest.newListSets(baseUrl); - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListSets"); + final OaiResponse> res = new OaiResponse<>(); - return DocumentHelper.parseText(callOaiVerb(req).getBody()) - .selectNodes("//oai:set") + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='ListSets']/*[local-name()='set']") .stream() .map(node -> (Element) node) .map(OaiSetImpl::new) .map(set -> (OaiSet) set) - .toList(); + .toList()); + return res; } - public List listMetadataFormat(final String baseUrl) throws Exception { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListMetadataFormats"); + public OaiResponse> listMetadataFormats(final String baseUrl) throws Exception { + final OaiRequest req = OaiRequest.newListMetadataFormats(baseUrl); + final OaiResponse> res = new OaiResponse<>(); - return DocumentHelper.parseText(callOaiVerb(req).getBody()) - .selectNodes("//oai:metadataFormat") + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='ListMetadataFormats']/*[local-name()='metadataFormat']") .stream() .map(node -> (Element) node) .map(OaiMetadataFormatImpl::new) .map(set -> (OaiMetadataFormat) set) - .toList(); + .toList()); + + return res; } - public List listRecords(final String baseUrl, final String mdPrefix, final String set) { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListRecords"); - req.setMdf(mdPrefix); - req.setSet(set); + public OaiResponse>> listRecords(final String baseUrl, final String mdPrefix, final String set, final String resumptionToken) + throws Exception { + final OaiRequest req = StringUtils.isNotBlank(resumptionToken) + ? OaiRequest.newListRecordsWithToken(baseUrl, resumptionToken) + : OaiRequest.newListRecords(baseUrl, mdPrefix, set); + + final OaiResponse>> res = new OaiResponse<>(); + + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='ListRecords']/*[local-name()='record']") + .stream() + .map(node -> (Element) node) + .map(OaiRecordImpl::new) + .map(r -> (OaiRecord) r) + .toList()); + + return res; - // TODO - return null; } - public List listRecords(final String baseUrl, final String resumptionToken) { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListRecords"); - req.setToken(resumptionToken); + public OaiResponse>> listIdentifiers(final String baseUrl, final String mdPrefix, final String set, final String resumptionToken) + throws Exception { + final OaiRequest req = StringUtils.isNotBlank(resumptionToken) + ? OaiRequest.newListIdentifiersWithToken(baseUrl, resumptionToken) + : OaiRequest.newListIdentifiers(baseUrl, mdPrefix, set); - // TODO - return null; + final OaiResponse>> res = new OaiResponse<>(); + + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='ListIdentifiers']/*[local-name()='header']") + .stream() + .map(node -> (Element) node) + .map(OaiIdentifierImpl::new) + .map(r -> (OaiIdentifier) r) + .toList()); + + return res; } - public List listIdentifier(final String baseUrl, final String mdPrefix, final String set) { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListIdentifier"); - req.setMdf(mdPrefix); - req.setSet(set); + public OaiResponse> getRecord(final String baseUrl, final String mdPrefix, final String id) throws Exception { + final OaiRequest req = OaiRequest.newGetRecord(baseUrl, mdPrefix, id); - // TODO - return null; + final OaiResponse> res = new OaiResponse<>(); + + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='GetRecord']/*[local-name()='record']") + .stream() + .map(node -> (Element) node) + .map(OaiRecordImpl::new) + .map(r -> (OaiRecord) r) + .findFirst() + .orElseThrow()); + + return res; } - public List listIdentifier(final String baseUrl, final String resumptionToken) { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("ListIdentifier"); - req.setToken(resumptionToken); + public OaiResponse> info(final String baseUrl) throws Exception { + final OaiRequest req = OaiRequest.newIdentify(baseUrl); - // TODO - return null; + final OaiResponse> res = new OaiResponse<>(); + + callOaiVerb(req, res, doc -> doc + .selectNodes("//*[local-name()='Identify']") + .stream() + .map(node -> (Element) node) + .map(OaiInfoImpl::new) + .map(r -> (OaiInfo) r) + .findFirst() + .orElseThrow()); + + return res; } - public OaiInfo info(final String baseUrl) { - final OaiRequest req = new OaiRequest(); - req.setBaseUrl(baseUrl); - req.setVerb("Identify"); - - // TODO - return null; - } - - private OaiResponse callOaiVerb(final OaiRequest req) { - - final OaiResponse res = new OaiResponse(); + private void callOaiVerb(final OaiRequest req, final OaiResponse res, final Function processBody) { res.setVerb(req.getVerb()); final long start = System.currentTimeMillis(); @@ -142,15 +164,17 @@ public class OaiClient { res.setCursor(NumberUtils.toInt(node.valueOf("@cursor"), -1)); res.setTotal(NumberUtils.toInt(node.valueOf("@completeListSize"), -1)); - final OaiRequest nextCall = new OaiRequest(); - nextCall.setBaseUrl(req.getBaseUrl()); - nextCall.setVerb(req.getVerb()); - nextCall.setToken(node.getText()); - res.setNextCall(nextCall); - } - res.setBody(doc.asXML()); - res.setValid(true); + if (OaiRequest.LISTSETS.equals(req.getVerb())) { + res.setNextCall(OaiRequest.newListSetsWithToken(req.getBaseUrl(), node.getText())); + } else if (OaiRequest.LISTIDENTIFIERS.equals(req.getVerb())) { + res.setNextCall(OaiRequest.newListIdentifiersWithToken(req.getBaseUrl(), node.getText())); + } else if (OaiRequest.LISTRECORDS.equals(req.getVerb())) { + res.setNextCall(OaiRequest.newListRecordsWithToken(req.getBaseUrl(), node.getText())); + } + } + res.setBody(processBody.apply(doc)); + res.setValid(true); } } catch (final Throwable e) { res.setValid(false); @@ -159,7 +183,6 @@ public class OaiClient { res.setTime(System.currentTimeMillis() - start); } - return res; } } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiIdentifierImpl.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiIdentifierImpl.java index 44accfb..97aa8c2 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiIdentifierImpl.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiIdentifierImpl.java @@ -1,21 +1,28 @@ package eu.dnetlib.common.oai; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import org.dom4j.Element; + import eu.dnetlib.domain.oai.OaiIdentifier; -public class OaiIdentifierImpl implements OaiIdentifier { +public class OaiIdentifierImpl implements OaiIdentifier { private static final long serialVersionUID = -2097987180475959419L; private String id; - private LocalDateTime date; + private String date; private List sets = new ArrayList<>(); + public OaiIdentifierImpl(final Element node) { + this.id = node.valueOf("./*[local-name() = 'identifier']"); + this.date = node.valueOf("./*[local-name() = 'datestamp']"); + node.selectNodes("./*[local-name() = 'setSpec']").forEach(s -> this.sets.add(s.getText())); + } + @Override public String getId() { return this.id; @@ -26,11 +33,11 @@ public class OaiIdentifierImpl implements OaiIdentifier { } @Override - public LocalDateTime getDate() { + public String getDate() { return this.date; } - public void setDate(final LocalDateTime date) { + public void setDate(final String date) { this.date = date; } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiInfoImpl.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiInfoImpl.java new file mode 100644 index 0000000..9ddfeda --- /dev/null +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiInfoImpl.java @@ -0,0 +1,125 @@ +package eu.dnetlib.common.oai; + +import java.util.ArrayList; +import java.util.List; + +import org.dom4j.Element; + +import eu.dnetlib.domain.oai.OaiInfo; + +public class OaiInfoImpl implements OaiInfo { + + private static final long serialVersionUID = -1062314589986610721L; + + private String repositoryName; + + private String baseURL; + + private String protocolVersion; + + private String earliestDatestamp; + + private String deletedRecord; + + private String granularity; + + private List adminEmails = new ArrayList<>(); + + private List compressions = new ArrayList<>(); + + private List descriptions = new ArrayList<>(); + + public OaiInfoImpl(final Element node) { + this.repositoryName = node.valueOf("./*[local-name() = 'repositoryName']"); + this.baseURL = node.valueOf("./*[local-name() = 'baseURL']"); + this.protocolVersion = node.valueOf("./*[local-name() = 'protocolVersion']"); + this.earliestDatestamp = node.valueOf("./*[local-name() = 'earliestDatestamp']"); + this.deletedRecord = node.valueOf("./*[local-name() = 'deletedRecord']"); + this.granularity = node.valueOf("./*[local-name() = 'granularity']"); + node.selectNodes("./*[local-name() = 'adminEmail']").forEach(n -> this.adminEmails.add(n.getText())); + node.selectNodes("./*[local-name() = 'compression']").forEach(n -> this.compressions.add(n.getText())); + node.selectNodes("./*[local-name() = 'description']").forEach(n -> this.descriptions.add(n.getText())); + } + + @Override + public String getRepositoryName() { + return this.repositoryName; + } + + public void setRepositoryName(final String repositoryName) { + this.repositoryName = repositoryName; + } + + @Override + public String getBaseURL() { + return this.baseURL; + } + + public void setBaseURL(final String baseURL) { + this.baseURL = baseURL; + } + + @Override + public String getProtocolVersion() { + return this.protocolVersion; + } + + public void setProtocolVersion(final String protocolVersion) { + this.protocolVersion = protocolVersion; + } + + @Override + public String getEarliestDatestamp() { + return this.earliestDatestamp; + } + + public void setEarliestDatestamp(final String earliestDatestamp) { + this.earliestDatestamp = earliestDatestamp; + } + + @Override + public String getDeletedRecord() { + return this.deletedRecord; + } + + public void setDeletedRecord(final String deletedRecord) { + this.deletedRecord = deletedRecord; + } + + @Override + public String getGranularity() { + return this.granularity; + } + + public void setGranularity(final String granularity) { + this.granularity = granularity; + } + + @Override + public List getAdminEmails() { + return this.adminEmails; + } + + public void setAdminEmails(final List adminEmails) { + this.adminEmails = adminEmails; + } + + @Override + public List getCompressions() { + return this.compressions; + } + + public void setCompressions(final List compressions) { + this.compressions = compressions; + } + + @Override + public List getDescriptions() { + return this.descriptions; + } + + public void setDescriptions(final List descriptions) { + this.descriptions = descriptions; + } + +} diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiMetadataFormatImpl.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiMetadataFormatImpl.java index 43520f2..94a206f 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiMetadataFormatImpl.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiMetadataFormatImpl.java @@ -15,10 +15,9 @@ public class OaiMetadataFormatImpl implements OaiMetadataFormat { private String metadataNamespace; public OaiMetadataFormatImpl(final Element node) { - this.metadataPrefix = node.valueOf("./oai:metadataPrefix"); - this.metadataSchema = node.valueOf("./oai:schema"); - this.metadataNamespace = node.valueOf("./oai:metadataNamespace"); - + this.metadataPrefix = node.valueOf("./*[local-name()='metadataPrefix']"); + this.metadataSchema = node.valueOf("./*[local-name()='schema']"); + this.metadataNamespace = node.valueOf("./*[local-name()='metadataNamespace']"); } @Override diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRecordImpl.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRecordImpl.java index 7b145f5..ffb8f75 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRecordImpl.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRecordImpl.java @@ -1,12 +1,13 @@ package eu.dnetlib.common.oai; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import org.dom4j.Element; + import eu.dnetlib.domain.oai.OaiRecord; -public class OaiRecordImpl implements OaiRecord { +public class OaiRecordImpl implements OaiRecord { private static final long serialVersionUID = -2097987180475959419L; @@ -14,10 +15,17 @@ public class OaiRecordImpl implements OaiRecord { private String body; - private LocalDateTime date; + private String date; private List sets = new ArrayList<>(); + public OaiRecordImpl(final Element node) { + this.id = node.valueOf("./*[local-name() = 'header']/*[local-name() = 'identifier']"); + this.date = node.valueOf("./*[local-name() = 'header']/*[local-name() = 'datestamp']"); + this.body = node.selectSingleNode("./*[local-name() = 'metadata']/*").asXML(); + node.selectNodes("./*[local-name() = 'header']/*[local-name() = 'setSpec']").forEach(s -> this.sets.add(s.getText())); + } + @Override public String getId() { return this.id; @@ -37,11 +45,11 @@ public class OaiRecordImpl implements OaiRecord { } @Override - public LocalDateTime getDate() { + public String getDate() { return this.date; } - public void setDate(final LocalDateTime date) { + public void setDate(final String date) { this.date = date; } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRequest.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRequest.java index 9f4955b..a51666a 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRequest.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiRequest.java @@ -1,70 +1,100 @@ package eu.dnetlib.common.oai; -import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; -public class OaiRequest implements Serializable { +public class OaiRequest { - private static final long serialVersionUID = -1663833829304179507L; + public static final String GETRECORD = "GetRecord"; - private String baseUrl; - private String verb; - private String mdf; - private String set; - private String id; - private String token; + public static final String LISTIDENTIFIERS = "ListIdentifiers"; + + public static final String LISTRECORDS = "ListRecords"; + + public static final String LISTSETS = "ListSets"; + + public static final String LISTMETADATAFORMATS = "ListMetadataFormats"; + + public static final String IDENTIFY = "Identify"; + + private final String baseUrl; + private final String verb; + private final String mdf; + private final String set; + private final String id; + private final String token; + + public static OaiRequest newIdentify(final String baseUrl) { + return new OaiRequest(baseUrl, IDENTIFY, null, null, null, null); + } + + public static OaiRequest newListMetadataFormats(final String baseUrl) { + return new OaiRequest(baseUrl, LISTMETADATAFORMATS, null, null, null, null); + } + + public static OaiRequest newListSets(final String baseUrl) { + return new OaiRequest(baseUrl, LISTSETS, null, null, null, null); + } + + public static OaiRequest newListSetsWithToken(final String baseUrl, final String reusumptionToken) { + return new OaiRequest(baseUrl, LISTSETS, null, null, null, reusumptionToken); + } + + public static OaiRequest newListRecords(final String baseUrl, final String mdPrefix, final String set) { + return new OaiRequest(baseUrl, LISTRECORDS, mdPrefix, set, null, null); + } + + public static OaiRequest newListRecordsWithToken(final String baseUrl, final String reusumptionToken) { + return new OaiRequest(baseUrl, LISTRECORDS, null, null, null, reusumptionToken); + } + + public static OaiRequest newListIdentifiers(final String baseUrl, final String mdPrefix, final String set) { + return new OaiRequest(baseUrl, LISTIDENTIFIERS, mdPrefix, set, null, null); + } + + public static OaiRequest newListIdentifiersWithToken(final String baseUrl, final String reusumptionToken) { + return new OaiRequest(baseUrl, LISTIDENTIFIERS, null, null, null, reusumptionToken); + } + + public static OaiRequest newGetRecord(final String baseUrl, final String mdPrefix, final String id) { + return new OaiRequest(baseUrl, GETRECORD, mdPrefix, null, id, null); + } + + private OaiRequest(final String baseUrl, final String verb, final String mdf, final String set, final String id, final String token) { + this.baseUrl = baseUrl; + this.verb = verb; + this.mdf = mdf; + this.set = set; + this.id = id; + this.token = token; + } public String getBaseUrl() { return this.baseUrl; } - public void setBaseUrl(final String baseUrl) { - this.baseUrl = baseUrl; - } - public String getVerb() { return this.verb; } - public void setVerb(final String verb) { - this.verb = verb; - } - public String getMdf() { return this.mdf; } - public void setMdf(final String mdf) { - this.mdf = mdf; - } - public String getSet() { return this.set; } - public void setSet(final String set) { - this.set = set; - } - public String getId() { return this.id; } - public void setId(final String id) { - this.id = id; - } - public String getToken() { return this.token; } - public void setToken(final String token) { - this.token = token; - } - public Map toQueryParams() { final Map params = new HashMap<>(); @@ -86,4 +116,5 @@ public class OaiRequest implements Serializable { return params; } + } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiResponse.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiResponse.java index 770d6ac..a81113b 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiResponse.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiResponse.java @@ -2,7 +2,7 @@ package eu.dnetlib.common.oai; import java.io.Serializable; -public class OaiResponse implements Serializable { +public class OaiResponse implements Serializable { private static final long serialVersionUID = -7841519266909952558L; private String verb; @@ -13,7 +13,7 @@ public class OaiResponse implements Serializable { private int size; private int cursor; private int total; - private String body; + private T body; private OaiRequest nextCall; public String getVerb() { @@ -80,11 +80,11 @@ public class OaiResponse implements Serializable { this.total = total; } - public String getBody() { + public T getBody() { return this.body; } - public void setBody(final String body) { + public void setBody(final T body) { this.body = body; } diff --git a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiSetImpl.java b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiSetImpl.java index c96fc53..32be83f 100644 --- a/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiSetImpl.java +++ b/dnet-app/libs/dnet-oai-common/src/main/java/eu/dnetlib/common/oai/OaiSetImpl.java @@ -13,9 +13,9 @@ public class OaiSetImpl implements OaiSet { private String description; public OaiSetImpl(final Element node) { - this.setSpec = node.valueOf("./oai:setSpec"); - this.setName = node.valueOf("./oai:setName"); - this.description = node.valueOf("./oai:description"); + this.setSpec = node.valueOf("./*[local-name()='setSpec']"); + this.setName = node.valueOf("./*[local-name()='setName']"); + this.description = node.valueOf("./*[local-name()='description']"); } @Override diff --git a/dnet-app/libs/dnet-oai-common/src/test/java/eu/dnetlib/common/oai/OaiClientTest.java b/dnet-app/libs/dnet-oai-common/src/test/java/eu/dnetlib/common/oai/OaiClientTest.java new file mode 100644 index 0000000..4961f3a --- /dev/null +++ b/dnet-app/libs/dnet-oai-common/src/test/java/eu/dnetlib/common/oai/OaiClientTest.java @@ -0,0 +1,75 @@ +package eu.dnetlib.common.oai; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.dnetlib.domain.oai.OaiIdentifier; +import eu.dnetlib.domain.oai.OaiInfo; +import eu.dnetlib.domain.oai.OaiMetadataFormat; +import eu.dnetlib.domain.oai.OaiRecord; +import eu.dnetlib.domain.oai.OaiSet; + +@Disabled +public class OaiClientTest { + + private OaiClient oai; + + private final ObjectMapper mapper = new ObjectMapper(); + + private final String BASE_URL = "https://openportal.isti.cnr.it/oai"; + + @BeforeEach + void setUp() throws Exception { + this.oai = new OaiClient(); + } + + @Test + void testListSets() throws Exception { + final OaiResponse> res = this.oai.listSets(this.BASE_URL, null); + + System.err.println(this.mapper.writeValueAsString(res)); + } + + @Test + void testListMetadataFormat() throws Exception { + final OaiResponse> res = this.oai.listMetadataFormats(this.BASE_URL); + + System.err.println(this.mapper.writeValueAsString(res)); + } + + @Test + void testListRecords() throws Exception { + final OaiResponse>> res = this.oai.listRecords(this.BASE_URL, "oai_dc", "ISTI", null); + + System.err.println(this.mapper.writeValueAsString(res)); + } + + @Test + void testListIdentifiers() throws Exception { + final OaiResponse>> res = this.oai.listIdentifiers(this.BASE_URL, "oai_dc", "ISTI", null); + + System.err.println(this.mapper.writeValueAsString(res)); + } + + @Test + void testGetRecord() throws Exception { + final OaiResponse> res = + this.oai.getRecord(this.BASE_URL, "oai_dc", "oai:dnet:people______::1ba6ca3a2416b67b4c2206f2d6b865da"); + + System.err.println(this.mapper.writeValueAsString(res)); + + } + + @Test + void testInfo() throws Exception { + final OaiResponse> res = this.oai.info(this.BASE_URL); + + System.err.println(this.mapper.writeValueAsString(res)); + } + +}