Skip to content

Commit

Permalink
expose inputs to exporters
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed Mar 20, 2024
1 parent 1dd5fa4 commit 8adb28d
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 1 deletion.
1 change: 1 addition & 0 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
51 changes: 51 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;


/**
Expand All @@ -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();
Expand Down

0 comments on commit 8adb28d

Please sign in to comment.