diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java index 74980e16d6caec50006f30bc3920a334b218aef6..27e59270377ae2e112f6255e4805e63211f398e9 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java @@ -777,7 +777,8 @@ public class ExportExecutor implements IExportExecutor final String sampleCode, final String sampleName, final String dataSetCode, final String extension) throws IOException { - final String entry = getNextDocZipEntry(spaceCode, projectCode, experimentCode, experimentName, sampleCode, sampleName, dataSetCode, extension); + final String entry = getNextDocZipEntry(spaceCode, projectCode, experimentCode, experimentName, sampleCode, sampleName, dataSetCode, + extension); if (!existingZipEntries.contains(entry)) { zos.putNextEntry(new ZipEntry(entry)); @@ -790,7 +791,7 @@ public class ExportExecutor implements IExportExecutor { final StringBuilder entryBuilder = new StringBuilder(PDF_DIRECTORY); - if (spaceCode == null && (projectCode != null || experimentCode != null || sampleCode != null || dataSetCode != null || extension != null)) + if (spaceCode == null && (projectCode != null || experimentCode != null || dataSetCode != null || (sampleCode == null && extension != null))) { throw new IllegalArgumentException(); } else if (spaceCode != null) diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutorTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutorTest.java index 91c7eff9a0c4f5abc486ba4b4f96329ee6b94e81..635ac6d2f2026c1a48db3e76530e5103cc8c5cf6 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutorTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutorTest.java @@ -181,6 +181,22 @@ public class ExportExecutorTest String.format("%s/%s/%s/%s (%s)/%s (%s)/%s%s", PDF_DIRECTORY, SPACE_CODE, PROJECT_CODE, EXPERIMENT_NAME, EXPERIMENT_CODE, SAMPLE_NAME, SAMPLE_CODE, DATA_SET_CODE, EXTENSION) }, + { + null, null, null, null, SAMPLE_CODE, null, null, null, + String.format("%s/%s/", PDF_DIRECTORY, SAMPLE_CODE) + }, + { + null, null, null, null, SAMPLE_CODE, SAMPLE_NAME, null, null, + String.format("%s/%s (%s)/", PDF_DIRECTORY, SAMPLE_NAME, SAMPLE_CODE) + }, + { + null, null, null, null, SAMPLE_CODE, null, null, EXTENSION, + String.format("%s/%s%s", PDF_DIRECTORY, SAMPLE_CODE, EXTENSION) + }, + { + null, null, null, null, SAMPLE_CODE, SAMPLE_NAME, null, EXTENSION, + String.format("%s/%s (%s)%s", PDF_DIRECTORY, SAMPLE_NAME, SAMPLE_CODE, EXTENSION) + }, }; private static final Object[][] ERRONEOUS_NEXT_ZIP_ENTRY_DATA = { @@ -190,15 +206,15 @@ public class ExportExecutorTest { null, null, EXPERIMENT_CODE, null, null, null, null, null }, - { - null, null, null, null, SAMPLE_CODE, null, null, null - }, { null, null, null, null, null, null, DATA_SET_CODE, null }, { null, null, null, null, null, null, null, EXTENSION }, + { + null, PROJECT_CODE, EXPERIMENT_CODE, null, SAMPLE_CODE, null, DATA_SET_CODE, null + }, { null, PROJECT_CODE, EXPERIMENT_CODE, EXPERIMENT_NAME, SAMPLE_CODE, SAMPLE_NAME, DATA_SET_CODE, EXTENSION }, @@ -208,9 +224,15 @@ public class ExportExecutorTest { SPACE_CODE, null, null, null, null, null, DATA_SET_CODE, EXTENSION }, + { + SPACE_CODE, null, null, null, null, null, DATA_SET_CODE, null + }, { SPACE_CODE, PROJECT_CODE, null, null, null, null, DATA_SET_CODE, EXTENSION }, + { + SPACE_CODE, PROJECT_CODE, null, null, null, null, DATA_SET_CODE, null + }, }; private static final Object[][] FOLDER_NAME_DATA = {