diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/OpenBIS.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/OpenBIS.java index 76ba0dae6246adf2359a34a1d51770650f9183c2..8a2f22b5d1e06987d87018dafb6a953eb2bae2f0 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/OpenBIS.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/OpenBIS.java @@ -120,6 +120,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.update.ExternalDmsUp import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject; import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.search.GlobalSearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.ImportResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data.ImportData; import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.options.ImportOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.Material; @@ -1245,8 +1246,8 @@ public class OpenBIS return asFacadeWithTransactions.createCodes(sessionToken, prefix, entityKind, count); } - public void executeImport(ImportData importData, ImportOptions importOptions) { - asFacadeWithTransactions.executeImport(sessionToken, importData, importOptions); + public ImportResult executeImport(ImportData importData, ImportOptions importOptions) { + return asFacadeWithTransactions.executeImport(sessionToken, importData, importOptions); } public ExportResult executeExport(ExportData exportData, ExportOptions exportOptions) { diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationSessionWorkspaceTest.java b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationSessionWorkspaceTest.java index 49768482efe4933db4c61dd9f2eaab44133a7552..d2831bc421ed865c015e9fb82669fc8816d993ea 100644 --- a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationSessionWorkspaceTest.java +++ b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationSessionWorkspaceTest.java @@ -1,53 +1,33 @@ package ch.ethz.sis.openbis.systemtests; -import static ch.ethz.sis.transaction.TransactionTestUtil.TestTransaction; -import static ch.ethz.sis.transaction.TransactionTestUtil.assertTransactions; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; import java.io.File; -import java.lang.reflect.Method; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.UUID; +import java.util.stream.Collectors; -import javax.sql.DataSource; - -import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import ch.ethz.sis.openbis.generic.OpenBIS; -import ch.ethz.sis.openbis.generic.asapi.v3.ITransactionCoordinatorApi; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.EntityKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.Project; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.create.ProjectCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.fetchoptions.ProjectFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; -import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.fetchoptions.DataSetFileFetchOptions; -import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.search.DataSetFileSearchCriteria; -import ch.ethz.sis.openbis.generic.server.asapi.v3.TransactionConfiguration; -import ch.ethz.sis.openbis.generic.server.asapi.v3.TransactionCoordinatorApi; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data.ImportData; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data.ImportFormat; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.options.ImportMode; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.options.ImportOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.systemtests.common.AbstractIntegrationTest; -import ch.ethz.sis.transaction.TransactionStatus; public class IntegrationSessionWorkspaceTest extends AbstractIntegrationTest { @@ -87,4 +67,56 @@ public class IntegrationSessionWorkspaceTest extends AbstractIntegrationTest openBIS.logout(); } + @Test + public void testImport() throws Exception + { + final OpenBIS openBIS = createOpenBIS(); + final String fileName = "import-test.zip"; + final Path originalFilePath = Path.of("sourceTest/java/ch/ethz/sis/openbis/systemtests/" + fileName); + + openBIS.login(USER, PASSWORD); + openBIS.uploadToSessionWorkspace(originalFilePath); + + // Executing import + + final List<IObjectId> objectIds = openBIS.executeImport(new ImportData(ImportFormat.EXCEL, fileName), + new ImportOptions(ImportMode.UPDATE_IF_EXISTS)).getObjectIds(); + + // Verifying imported sample + + final List<ISampleId> sampleIdentifiers = objectIds.stream().filter(objectId -> objectId instanceof ISampleId) + .map(objectId -> (ISampleId) objectId).collect(Collectors.toList()); + + System.out.println("objectIds: " + objectIds); + assertEquals(sampleIdentifiers.size(), 1); + + final SampleFetchOptions sampleFetchOptions = new SampleFetchOptions(); + sampleFetchOptions.withProperties(); + final Sample sample = openBIS.getSamples(sampleIdentifiers, sampleFetchOptions).values().iterator().next(); + assertEquals(sample.getIdentifier().getIdentifier(), "/DEFAULT/DEFAULT/TEST"); + + final String notes = sample.getStringProperty("NOTES"); + assertEquals(notes, "Test"); + + // Verifying imported sample type + + final List<IEntityTypeId> sampleTypes = objectIds.stream() + .filter(objectId -> (objectId instanceof EntityTypePermId) && ((EntityTypePermId) objectId).getEntityKind() == EntityKind.SAMPLE) + .map(objectId -> (IEntityTypeId) objectId).collect(Collectors.toList()); + + assertEquals(sampleTypes.size(), 1); + + final SampleTypeFetchOptions sampleTypeFetchOptions = new SampleTypeFetchOptions(); + sampleTypeFetchOptions.withValidationPlugin().withScript(); + final SampleType sampleType = openBIS.getSampleTypes(sampleTypes, sampleTypeFetchOptions).values().iterator().next(); + final Plugin validationPlugin = sampleType.getValidationPlugin(); + + assertNotNull(validationPlugin); + + assertEquals(validationPlugin.getName(), "EXPERIMENTAL_STEP.EXPERIMENTAL_STEP.EXPERIMENTAL_STEP.EXPERIMENTAL_STEP.date_range_validation"); + assertTrue(validationPlugin.getScript().contains("\"End date cannot be before start date!\"")); + + openBIS.logout(); + } + } diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/import-test.zip b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/import-test.zip new file mode 100644 index 0000000000000000000000000000000000000000..43c486e2c4c96df7f8850139d996a760be602878 Binary files /dev/null and b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/import-test.zip differ