From 42857f518a3fb50b1a7a0372469add64c6104a30 Mon Sep 17 00:00:00 2001 From: oezcanm99 Date: Tue, 8 Jul 2025 15:58:57 +0200 Subject: [PATCH 1/4] issue 10523 --- .../export/InternalExportDataProvider.java | 2 + .../iq/dataverse/util/json/JsonPrinter.java | 4 +- .../export/InternalExportProviderTest.java | 53 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/test/java/edu/harvard/iq/dataverse/export/InternalExportProviderTest.java diff --git a/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java b/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java index f0d77eb8b52..75754e0d3db 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java @@ -75,6 +75,8 @@ public String getDataCiteXml() { public JsonArray getDatasetFileDetails() { JsonArrayBuilder jab = Json.createArrayBuilder(); for (FileMetadata fileMetadata : dv.getFileMetadatas()) { + // this is to be added in the end json... + fileMetadata.getDirectoryLabel(); DataFile dataFile = fileMetadata.getDataFile(); jab.add(JsonPrinter.json(dataFile, fileMetadata, true)); } diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java index 0b5803d75d1..53ea0df0585 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java @@ -831,6 +831,7 @@ public static JsonObjectBuilder json(DataFile df, FileMetadata fileMetadata, boo } fileName = fileMetadata.getLabel(); + String directoryLabel = fileMetadata.getDirectoryLabel(); GlobalId filePid = df.getGlobalId(); String pidURL = (filePid!=null)? filePid.asURL(): null; //For backward compatibility - prior to #8674, asString() returned "" for the value when no PID exists. @@ -873,7 +874,8 @@ public static JsonObjectBuilder json(DataFile df, FileMetadata fileMetadata, boo .add("tabularData", df.isTabularData()) .add("tabularTags", getTabularFileTags(df)) .add("creationDate", df.getCreateDateFormattedYYYYMMDD()) - .add("publicationDate", df.getPublicationDateFormattedYYYYMMDD()); + .add("publicationDate", df.getPublicationDateFormattedYYYYMMDD()) + .add("directoryLabel", directoryLabel); Dataset dfOwner = df.getOwner(); if (dfOwner != null) { builder.add("fileAccessRequest", dfOwner.isFileAccessRequest()); diff --git a/src/test/java/edu/harvard/iq/dataverse/export/InternalExportProviderTest.java b/src/test/java/edu/harvard/iq/dataverse/export/InternalExportProviderTest.java new file mode 100644 index 00000000000..4f32b04bdbc --- /dev/null +++ b/src/test/java/edu/harvard/iq/dataverse/export/InternalExportProviderTest.java @@ -0,0 +1,53 @@ +package edu.harvard.iq.dataverse.export; + +import edu.harvard.iq.dataverse.DataFile; +import edu.harvard.iq.dataverse.DataTable; +import edu.harvard.iq.dataverse.DatasetVersion; +import edu.harvard.iq.dataverse.FileMetadata; +import jakarta.json.JsonArray; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; + +public class InternalExportProviderTest { + + /** + * this is a unit-test for seeing why the directory-labels are + * not showing in the exported data and how best to remedy the case + */ + @Test + public void getDatasetFileDetailsVanilla() throws Exception { + + DatasetVersion mockDV = Mockito.mock(DatasetVersion.class); + List metadataList = new ArrayList<>(); + FileMetadata metadata = new FileMetadata(); + metadata.setId(1L); + metadata.setDirectoryLabel("some/directory/label"); + metadata.setLabel("some-silly-label"); + + DataFile datafile = new DataFile(); + datafile.setId(1L); + metadata.setDataFile(datafile); + + List dataTables = new ArrayList<>(); + DataTable dataTable = new DataTable(); + dataTable.setOriginalFileName("some_silly_original_file_name"); + dataTables.add(dataTable); + + datafile.setDataTables(dataTables); + + metadataList.add(metadata); + when(mockDV.getFileMetadatas()).thenReturn(metadataList); + + InternalExportDataProvider provider = new InternalExportDataProvider(mockDV); + + JsonArray json = provider.getDatasetFileDetails(); + assertTrue(json.toString().contains("some/directory/label")); + } + +} From 1050905375ad4a3098d8ecfdece1d98c6592e655 Mon Sep 17 00:00:00 2001 From: oezcanm99 Date: Wed, 9 Jul 2025 17:31:40 +0200 Subject: [PATCH 2/4] issue 10523 --- doc/release-notes/issue-10523.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/release-notes/issue-10523.md diff --git a/doc/release-notes/issue-10523.md b/doc/release-notes/issue-10523.md new file mode 100644 index 00000000000..184c0e218fa --- /dev/null +++ b/doc/release-notes/issue-10523.md @@ -0,0 +1 @@ +the changes are for clearing the issue 10523, concerning getDatasetFileDetails endpoint \ No newline at end of file From 29f1f4780724c496bce4af6a5eeaba358ee04a29 Mon Sep 17 00:00:00 2001 From: oezcanm99 Date: Tue, 15 Jul 2025 17:05:54 +0200 Subject: [PATCH 3/4] issue 10523 --- .../harvard/iq/dataverse/export/InternalExportDataProvider.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java b/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java index 75754e0d3db..f0d77eb8b52 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/InternalExportDataProvider.java @@ -75,8 +75,6 @@ public String getDataCiteXml() { public JsonArray getDatasetFileDetails() { JsonArrayBuilder jab = Json.createArrayBuilder(); for (FileMetadata fileMetadata : dv.getFileMetadatas()) { - // this is to be added in the end json... - fileMetadata.getDirectoryLabel(); DataFile dataFile = fileMetadata.getDataFile(); jab.add(JsonPrinter.json(dataFile, fileMetadata, true)); } From ada4858a44283a1bb23a796917b985ee1a5cd52a Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 15 Jul 2025 14:58:32 -0400 Subject: [PATCH 4/4] improve release note #10523 --- doc/release-notes/issue-10523.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/release-notes/issue-10523.md b/doc/release-notes/issue-10523.md index 184c0e218fa..3ce292646a7 100644 --- a/doc/release-notes/issue-10523.md +++ b/doc/release-notes/issue-10523.md @@ -1 +1,6 @@ -the changes are for clearing the issue 10523, concerning getDatasetFileDetails endpoint \ No newline at end of file + +## Developer Updates + +### Writing External Exporters + +The getDatasetFileDetails data structure now contains "directoryLabel" (file path). See #10523 and #11618. \ No newline at end of file