diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index ae0aa2bdf76..6c56b5a3d6e 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -21,6 +21,7 @@ services: DATAVERSE_AUTH_OIDC_CLIENT_ID: test DATAVERSE_AUTH_OIDC_CLIENT_SECRET: 94XHrfNRwXsjqTqApRrwWmhDLDHpIYV8 DATAVERSE_AUTH_OIDC_AUTH_SERVER_URL: http://keycloak.mydomain.com:8090/realms/test + DATAVERSE_SPI_EXPORTERS_DIRECTORY: "/dv/exporters" # These two oai settings are here to get HarvestingServerIT to pass dataverse_oai_server_maxidentifiers: "2" dataverse_oai_server_maxrecords: "2" diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java index a32141b8baf..c0fffc086ab 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java @@ -699,7 +699,8 @@ public void exportAllDatasets(boolean forceReExport) { Integer countError = 0; String logTimestamp = logFormatter.format(new Date()); Logger exportLogger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.client.DatasetServiceBean." + "ExportAll" + logTimestamp); - String logFileName = "../logs" + File.separator + "export_" + logTimestamp + ".log"; +// String logFileName = "../logs" + File.separator + "export_" + logTimestamp + ".log"; + String logFileName = System.getProperty("com.sun.aas.instanceRoot") + File.separator + "logs" + File.separator + "export_" + logTimestamp + ".log"; FileHandler fileHandler; boolean fileHandlerSuceeded; 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 a54e61c7c1e..dadd4eebd93 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java @@ -6,12 +6,19 @@ import io.gdcc.spi.export.ExportException; import io.gdcc.spi.export.Exporter; import edu.harvard.iq.dataverse.util.BundleUtil; +import edu.harvard.iq.dataverse.util.json.JsonUtil; +import edu.harvard.iq.dataverse.util.xml.XmlPrinter; +import jakarta.json.JsonArray; import java.io.OutputStream; import java.util.Locale; import java.util.Optional; import jakarta.json.JsonObject; import jakarta.ws.rs.core.MediaType; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.logging.Level; +import java.util.logging.Logger; /** @@ -34,6 +41,50 @@ public String getDisplayName(Locale locale) { @Override public void exportDataset(ExportDataProvider dataProvider, OutputStream outputStream) throws ExportException { + System.out.println("exporting dataset in JSON"); + // mkdir docker-dev-volumes/app/data/input-for-exporters + String outputDir = "/dv/input-for-exporters/"; + + JsonArray fileDetails = dataProvider.getDatasetFileDetails(); + String fileDetailsString = JsonUtil.prettyPrint(fileDetails); + try (PrintWriter out = new PrintWriter(outputDir + "datasetFileDetails.json")) { + out.println(fileDetailsString); + } catch (FileNotFoundException ex) { + Logger.getLogger(JSONExporter.class.getName()).log(Level.SEVERE, null, ex); + } + + JsonObject datasetJson = dataProvider.getDatasetJson(); + String datasetJsonString = JsonUtil.prettyPrint(datasetJson); + try (PrintWriter out = new PrintWriter(outputDir + "datasetJson.json")) { + out.println(datasetJsonString); + } catch (FileNotFoundException ex) { + Logger.getLogger(JSONExporter.class.getName()).log(Level.SEVERE, null, ex); + } + + JsonObject datasetOre = dataProvider.getDatasetORE(); + String datasetOreString = JsonUtil.prettyPrint(datasetOre); + try (PrintWriter out = new PrintWriter(outputDir + "datasetOre.json")) { + out.println(datasetOreString); + } catch (FileNotFoundException ex) { + Logger.getLogger(JSONExporter.class.getName()).log(Level.SEVERE, null, ex); + } + + JsonObject datasetSchemaDotOrg = dataProvider.getDatasetSchemaDotOrg(); + String datasetSchemaDotOrgString = JsonUtil.prettyPrint(datasetSchemaDotOrg); + try (PrintWriter out = new PrintWriter(outputDir + "datasetSchemaDotOrg.json")) { + out.println(datasetSchemaDotOrgString); + } catch (FileNotFoundException ex) { + Logger.getLogger(JSONExporter.class.getName()).log(Level.SEVERE, null, ex); + } + + String dataCiteXml = dataProvider.getDataCiteXml(); + String dataCiteXmlPretty = XmlPrinter.prettyPrintXml(dataCiteXml); + try (PrintWriter out = new PrintWriter(outputDir + "dataCiteXml.xml")) { + out.println(dataCiteXmlPretty); + } catch (FileNotFoundException ex) { + Logger.getLogger(JSONExporter.class.getName()).log(Level.SEVERE, null, ex); + } + try{ outputStream.write(dataProvider.getDatasetJson().toString().getBytes("UTF8")); outputStream.flush();