diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index 3911e9d5bbb..490341d2b6e 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -14,6 +14,7 @@ ../../pom.xml ../../scripts/zipdownload ../container-base + ../extension-api + 1.0.0-SNAPSHOT + jar + Extension API + + This package provides interfaces, data transfer objects, utilities and so on to create Dataverse extensions. + For more information on how to use, please read the developer guide of Dataverse at https://guides.dataverse.org. + + + + + poikilotherm + Oliver Bertuch + github@bertuch.eu + Europe/Berlin + + maintainer + + + + + + + + + + jakarta.platform + jakarta.jakartaee-api + ${jakartaee-api.version} + provided + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${target.java.version} + + ${compilerArgument} + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + true + + + + + + + \ No newline at end of file diff --git a/src/main/java/edu/harvard/iq/dataverse/export/ExportException.java b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java similarity index 90% rename from src/main/java/edu/harvard/iq/dataverse/export/ExportException.java rename to modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java index 0909bf06ca4..a9b5426c1d9 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/ExportException.java +++ b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package edu.harvard.iq.dataverse.export; +package io.gdcc.dataverse.extension.exceptions; /** * diff --git a/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java new file mode 100644 index 00000000000..9753eb47373 --- /dev/null +++ b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java @@ -0,0 +1,41 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package io.gdcc.dataverse.extension.spi; + +import io.gdcc.dataverse.extension.exceptions.ExportException; + +import javax.json.JsonObject; +import javax.ws.rs.core.MediaType; +import java.io.OutputStream; + +public interface Exporter { + + void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException; + + String getProviderName(); + + String getDisplayName(); + + Boolean isXMLFormat(); + + Boolean isHarvestable(); + + Boolean isAvailableToUsers(); + + /* These should throw an ExportException if called on an Exporter that is not isXMLFormat(): */ + String getXMLNameSpace() throws ExportException; + + String getXMLSchemaLocation() throws ExportException; + + String getXMLSchemaVersion() throws ExportException; + + void setParam(String name, Object value); + + default String getMediaType() { + return MediaType.APPLICATION_XML; + } + +} diff --git a/pom.xml b/pom.xml index 8b6f98c5896..8b15654b16f 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,12 @@ --> + + + io.gdcc + extension-api + 1.0.0-SNAPSHOT + diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 6e71f6c5042..f7285d7786b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -1,5 +1,6 @@ package edu.harvard.iq.dataverse; +import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.provenance.ProvPopupFragmentBean; import edu.harvard.iq.dataverse.api.AbstractApiBean; import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean; @@ -33,9 +34,6 @@ import edu.harvard.iq.dataverse.engine.command.impl.PublishDatasetCommand; import edu.harvard.iq.dataverse.engine.command.impl.PublishDataverseCommand; import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand; -import edu.harvard.iq.dataverse.export.ExportException; -import edu.harvard.iq.dataverse.export.ExportService; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.ingest.IngestRequest; import edu.harvard.iq.dataverse.ingest.IngestServiceBean; import edu.harvard.iq.dataverse.license.LicenseServiceBean; @@ -88,6 +86,8 @@ import javax.inject.Inject; import javax.inject.Named; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import org.apache.commons.lang3.StringUtils; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.file.UploadedFile; diff --git a/src/main/java/edu/harvard/iq/dataverse/FilePage.java b/src/main/java/edu/harvard/iq/dataverse/FilePage.java index 85eb79d2ddc..c0f57a4d471 100644 --- a/src/main/java/edu/harvard/iq/dataverse/FilePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/FilePage.java @@ -22,9 +22,7 @@ import edu.harvard.iq.dataverse.engine.command.impl.PersistProvFreeFormCommand; import edu.harvard.iq.dataverse.engine.command.impl.RestrictFileCommand; import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.externaltools.ExternalTool; import edu.harvard.iq.dataverse.externaltools.ExternalToolHandler; import edu.harvard.iq.dataverse.externaltools.ExternalToolServiceBean; @@ -59,6 +57,8 @@ import javax.inject.Named; import javax.validation.ConstraintViolation; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import org.primefaces.PrimeFaces; import org.primefaces.component.tabview.TabView; import org.primefaces.event.TabChangeEvent; @@ -341,7 +341,7 @@ public List< String[]> getExporters(){ String formatName = provider[1]; String formatDisplayName = provider[0]; - Exporter exporter = null; + Exporter exporter = null; try { exporter = ExportService.getInstance().getExporter(formatName); } catch (ExportException ex) { diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Files.java b/src/main/java/edu/harvard/iq/dataverse/api/Files.java index af0f6be6d32..6778821a02c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/Files.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/Files.java @@ -30,7 +30,6 @@ import edu.harvard.iq.dataverse.engine.command.impl.RestrictFileCommand; import edu.harvard.iq.dataverse.engine.command.impl.UningestFileCommand; import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.externaltools.ExternalTool; import edu.harvard.iq.dataverse.externaltools.ExternalToolHandler; @@ -71,6 +70,8 @@ import javax.ws.rs.core.Response; import static javax.ws.rs.core.Response.Status.BAD_REQUEST; import javax.ws.rs.core.UriInfo; + +import io.gdcc.dataverse.extension.exceptions.ExportException; import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataParam; diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java index 66ba00bcf55..13ed3462901 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java @@ -1,13 +1,11 @@ package edu.harvard.iq.dataverse.engine.command.impl; import edu.harvard.iq.dataverse.authorization.Permission; -import edu.harvard.iq.dataverse.datavariable.VarGroup; import edu.harvard.iq.dataverse.engine.command.CommandContext; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import edu.harvard.iq.dataverse.engine.command.RequiredPermissions; import edu.harvard.iq.dataverse.engine.command.exception.CommandException; import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.util.BundleUtil; import edu.harvard.iq.dataverse.util.DatasetFieldUtil; @@ -19,8 +17,8 @@ import edu.harvard.iq.dataverse.FileMetadata; import edu.harvard.iq.dataverse.DataFileCategory; import edu.harvard.iq.dataverse.DatasetVersionDifference; +import io.gdcc.dataverse.extension.exceptions.ExportException; -import java.util.Collection; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java index 391e798e285..69ee5434f4b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java @@ -15,15 +15,14 @@ import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import edu.harvard.iq.dataverse.engine.command.RequiredPermissions; import edu.harvard.iq.dataverse.engine.command.exception.CommandException; -import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; -import edu.harvard.iq.dataverse.settings.SettingsServiceBean; -import edu.harvard.iq.dataverse.util.BundleUtil; + import java.io.IOException; import java.util.logging.Logger; import edu.harvard.iq.dataverse.batch.util.LoggingUtil; import java.util.concurrent.Future; + +import io.gdcc.dataverse.extension.exceptions.ExportException; import org.apache.solr.client.solrj.SolrServerException; /** diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java index 286b107a5fd..11128e19641 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java @@ -9,10 +9,10 @@ import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import edu.harvard.iq.dataverse.engine.command.RequiredPermissions; import edu.harvard.iq.dataverse.engine.command.exception.CommandException; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.util.EjbUtil; import edu.harvard.iq.dataverse.util.FileUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; import java.io.File; import java.io.FileOutputStream; diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java index 7c5fea0f1ec..410ba863e24 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java @@ -2,13 +2,14 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.dublincore.DublinCoreExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; -import java.io.OutputStream; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import javax.json.JsonObject; import javax.xml.stream.XMLStreamException; +import java.io.OutputStream; /** * @@ -30,7 +31,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { DublinCoreExportUtil.datasetJson2dublincore(json, outputStream, DublinCoreExportUtil.DC_FLAVOR_DCTERMS); } catch (XMLStreamException xse) { diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java index bb325226fad..910222a4a6c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java @@ -2,15 +2,16 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; -import java.io.OutputStream; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import javax.json.JsonObject; +import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; -import javax.xml.stream.XMLOutputFactory; +import java.io.OutputStream; /** * This exporter is for the "full" DDI, that includes the file-level, @@ -39,7 +40,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { XMLStreamWriter xmlw = XMLOutputFactory.newInstance().createXMLStreamWriter(outputStream); xmlw.writeStartDocument(); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java index 7110067296d..515f793f9e2 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java @@ -2,17 +2,17 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; - import edu.harvard.iq.dataverse.DOIDataCiteRegisterService; import edu.harvard.iq.dataverse.DataCitation; -import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + +import javax.json.JsonObject; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; import java.util.Map; -import javax.json.JsonObject; /** * @@ -39,7 +39,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { DataCitation dc = new DataCitation(version); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java index 113e669f511..e1709559a55 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java @@ -2,13 +2,14 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.dublincore.DublinCoreExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; -import java.io.OutputStream; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import javax.json.JsonObject; import javax.xml.stream.XMLStreamException; +import java.io.OutputStream; /** * @@ -30,7 +31,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { DublinCoreExportUtil.datasetJson2dublincore(json, outputStream, DublinCoreExportUtil.DC_FLAVOR_OAI); } catch (XMLStreamException xse) { diff --git a/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java b/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java index ddc6296093c..b255c2c37aa 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java @@ -10,8 +10,6 @@ import static edu.harvard.iq.dataverse.dataaccess.DataAccess.getStorageIO; import edu.harvard.iq.dataverse.dataaccess.DataAccessOption; import edu.harvard.iq.dataverse.dataaccess.StorageIO; -import edu.harvard.iq.dataverse.export.spi.Exporter; -import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.json.JsonPrinter; import java.io.BufferedReader; import java.io.File; @@ -41,6 +39,8 @@ import javax.json.JsonObjectBuilder; import javax.ws.rs.core.MediaType; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import org.apache.commons.io.IOUtils; /** diff --git a/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java index 367ac4bbc5b..374d16f4eff 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java @@ -1,21 +1,17 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.Dataset; -import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import javax.json.JsonObject; import javax.ws.rs.core.MediaType; import javax.xml.stream.XMLStreamException; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.file.Path; -import java.nio.file.Paths; @AutoService(Exporter.class) public class HtmlCodeBookExporter implements Exporter { @@ -31,7 +27,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { InputStream ddiInputStream; try { diff --git a/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java index 0c87e02456d..623ea29ae4a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java @@ -2,9 +2,10 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import java.io.OutputStream; import javax.json.JsonObject; import javax.ws.rs.core.MediaType; @@ -28,7 +29,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try{ outputStream.write(json.toString().getBytes("UTF8")); outputStream.flush(); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java index 30934cfc891..fad161aae85 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java @@ -2,10 +2,11 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import java.io.OutputStream; import javax.json.JsonObject; import javax.xml.stream.XMLStreamException; @@ -32,7 +33,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { DdiExportUtil.datasetJson2ddi(json, outputStream); } catch (XMLStreamException xse) { diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java index 87adc1b4c5b..7841989db1e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java @@ -1,18 +1,15 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.spi.Exporter; -import edu.harvard.iq.dataverse.settings.SettingsServiceBean; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.util.BundleUtil; import edu.harvard.iq.dataverse.util.bagit.OREMap; -import java.io.OutputStream; -import java.util.ResourceBundle; -import java.util.logging.Logger; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import javax.json.JsonObject; import javax.ws.rs.core.MediaType; +import java.io.OutputStream; +import java.util.logging.Logger; @AutoService(Exporter.class) public class OAI_OREExporter implements Exporter { @@ -22,7 +19,7 @@ public class OAI_OREExporter implements Exporter { public static final String NAME = "OAI_ORE"; @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { new OREMap(version).writeOREMap(outputStream); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java index f4ce294f6e9..99d57491e9c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java @@ -9,8 +9,9 @@ import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.export.openaire.OpenAireExportUtil; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; @AutoService(Exporter.class) public class OpenAireExporter implements Exporter { @@ -29,7 +30,7 @@ public String getDisplayName() { } @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { try { OpenAireExportUtil.datasetJson2openaire(json, outputStream); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java index 971f0e5afa5..8baa507063b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java @@ -1,17 +1,18 @@ package edu.harvard.iq.dataverse.export; import com.google.auto.service.AutoService; -import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; -import java.io.IOException; -import java.io.OutputStream; -import java.io.StringReader; -import java.util.logging.Logger; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; + import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; import javax.ws.rs.core.MediaType; +import java.io.IOException; +import java.io.OutputStream; +import java.io.StringReader; +import java.util.logging.Logger; /** * Schema.org JSON-LD is used by Google Dataset Search and other services to @@ -75,7 +76,7 @@ public class SchemaDotOrgExporter implements Exporter { public static final String NAME = "schema.org"; @Override - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException { + public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException { String jsonLdAsString = version.getJsonLd(); try (JsonReader jsonReader = Json.createReader(new StringReader(jsonLdAsString));) { JsonObject jsonLdJsonObject = jsonReader.readObject(); diff --git a/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java b/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java deleted file mode 100644 index e44265946f6..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package edu.harvard.iq.dataverse.export.spi; - -import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.ExportException; -import java.io.OutputStream; -import javax.json.JsonObject; -import javax.ws.rs.core.MediaType; - -/** - * - * @author skraffmi - */ -public interface Exporter { - - /* When implementing exportDataset, when done writing content, please make sure to flush() the outputStream, - but NOT close() it! - This way an exporter can be used to insert the produced metadata into the - body of an HTTP response, etc. (for example, to insert it into the body - of an OAI response, where more XML needs to be written, for the outer - OAI-PMH record). -- L.A. 4.5 - */ - //public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException; - - public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException; - - public String getProviderName(); - - public String getDisplayName(); - - public Boolean isXMLFormat(); - - public Boolean isHarvestable(); - - public Boolean isAvailableToUsers(); - - /* These should throw an ExportException if called on an Exporter that is not isXMLFormat(): */ - public String getXMLNameSpace() throws ExportException; - public String getXMLSchemaLocation() throws ExportException; - public String getXMLSchemaVersion() throws ExportException; - - public void setParam(String name, Object value); - - public default String getMediaType() { - return MediaType.APPLICATION_XML; - }; - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java index 6cdc4e5c277..4a3dba8f00e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java @@ -8,10 +8,11 @@ import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetServiceBean; import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.search.IndexServiceBean; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import io.gdcc.dataverse.extension.exceptions.ExportException; + import java.time.Instant; import java.io.File; import java.io.IOException; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index f778fd56644..d4ee7555b55 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -5,6 +5,8 @@ */ package edu.harvard.iq.dataverse.harvest.server.web.servlet; +import io.gdcc.dataverse.extension.exceptions.ExportException; +import io.gdcc.dataverse.extension.spi.Exporter; import io.gdcc.xoai.dataprovider.DataProvider; import io.gdcc.xoai.dataprovider.repository.Repository; import io.gdcc.xoai.dataprovider.repository.RepositoryConfiguration; @@ -20,9 +22,7 @@ import io.gdcc.xoai.xml.XmlWriter; import edu.harvard.iq.dataverse.DatasetServiceBean; import edu.harvard.iq.dataverse.DataverseServiceBean; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; -import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean; import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean; import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 147d42648fa..75ea681fa00 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -1,5 +1,6 @@ package edu.harvard.iq.dataverse.harvest.server.xoai; +import io.gdcc.dataverse.extension.exceptions.ExportException; import io.gdcc.xoai.dataprovider.exceptions.handler.IdDoesNotExistException; import io.gdcc.xoai.dataprovider.filter.ScopedFilter; import io.gdcc.xoai.dataprovider.model.Item; @@ -9,7 +10,6 @@ import io.gdcc.xoai.dataprovider.repository.ItemRepository; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetServiceBean; -import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean;