diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractSearchPropertyTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractSearchPropertyTest.java index 3ae5dad0fdc972a20be3f5671972febf72b8dcc7..3d0fd0816d8c0de0d110f77c8eb8c0e09a9fac6c 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractSearchPropertyTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractSearchPropertyTest.java @@ -27,12 +27,14 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Collections; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPermIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractEntitySearchCriteria; @@ -41,12 +43,19 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ControlledVocabula import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.DateFieldSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.NumberFieldSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.StringFieldSearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId; 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.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.create.MaterialCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyTermCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyPermId; @@ -917,16 +926,67 @@ public abstract class AbstractSearchPropertyTest extends AbstractTest public void testSearchWithSampleProperty() { final String sessionToken = v3api.login(TEST_USER, PASSWORD); - final PropertyTypePermId propertyTypeId = createASamplePropertyType(sessionToken, null); - createEntity(sessionToken, propertyTypeId, "/CISD/CL1"); + final String samplePropertyCode1 = "Sample1"; + final String samplePropertyCode2 = "Sample2"; + + final EntityTypePermId propertySampleType = createASampleType(sessionToken, false); + final PropertyTypePermId samplePropertyTypeId1 = createASamplePropertyType(sessionToken, propertySampleType, + samplePropertyCode1); + final PropertyTypePermId samplePropertyTypeId2 = createASamplePropertyType(sessionToken, propertySampleType, + samplePropertyCode2); + + final EntityTypePermId searchTest1EntityTypeId = createEntityType(sessionToken, samplePropertyTypeId1, + samplePropertyTypeId2); + + final SamplePermId sample1 = createSample(sessionToken, samplePropertyCode1, propertySampleType, Map.of()); + final SamplePermId sample2 = createSample(sessionToken, samplePropertyCode2, propertySampleType, Map.of()); + + final ObjectPermId entity1 = createEntity(sessionToken, "Entity", searchTest1EntityTypeId, + new HashMap<>(Map.of(samplePropertyTypeId1.getPermId(), sample1.getPermId(), + samplePropertyTypeId2.getPermId(), sample2.getPermId()))); + + final EntityTypePermId searchTest2EntityTypeId = createEntityType(sessionToken, samplePropertyTypeId1, + samplePropertyTypeId2); + final ObjectPermId entity2 = createEntity(sessionToken, "Sample4", searchTest2EntityTypeId, + new HashMap<>(Map.of(samplePropertyTypeId1.getPermId(), sample1.getPermId()))); final AbstractEntitySearchCriteria<?> searchCriteria = createSearchCriteria(); searchCriteria.withOrOperator(); - searchCriteria.withSampleProperty(propertyTypeId.getPermId()).thatEquals("/CISD/CL1"); + searchCriteria.withSampleProperty(searchTest1EntityTypeId.getPermId()).thatEquals(sample1.getPermId()); - final List<? extends IPermIdHolder> entities = search(sessionToken, searchCriteria); - assertEquals(entities.size(), 1); + try + { + final List<? extends IPermIdHolder> entities = search(sessionToken, searchCriteria); + assertEquals(entities.size(), 1); + assertEquals(entities.get(0).getPermId(), entity1); + } finally + { + final IDeletionId entitiesDeletion = deleteEntities(sessionToken, entity1, entity2); + final IDeletionId samplesDeletion = deleteSamples(sessionToken, sample1, sample2); + v3api.confirmDeletions(sessionToken, List.of(entitiesDeletion, samplesDeletion)); + deleteEntityTypes(sessionToken, searchTest1EntityTypeId, searchTest2EntityTypeId); + deletePropertyTypes(sessionToken, samplePropertyTypeId1, samplePropertyTypeId2); + deleteSampleTypes(sessionToken, propertySampleType); + } + } + + protected SamplePermId createSample(final String sessionToken, final String code, + final EntityTypePermId entityTypeId, final Map<String, String> propertyMap) + { + final SampleCreation sampleCreation = new SampleCreation(); + sampleCreation.setCode(code); + sampleCreation.setTypeId(entityTypeId); + sampleCreation.setSpaceId(new SpacePermId("CISD")); + sampleCreation.setProperties(propertyMap); + return v3api.createSamples(sessionToken, List.of(sampleCreation)).get(0); + } + + protected IDeletionId deleteSamples(final String sessionToken, final ISampleId... entityIds) + { + final SampleDeletionOptions deletionOptions = new SampleDeletionOptions(); + deletionOptions.setReason("Test"); + return v3api.deleteSamples(sessionToken, List.of(entityIds), deletionOptions); } @Test @@ -1174,11 +1234,18 @@ public abstract class AbstractSearchPropertyTest extends AbstractTest return createEntity(sessionToken, "ENTITY_TO_BE_DELETED", entityTypeId, propertyTypeId.getPermId(), value); } - protected abstract EntityTypePermId createEntityType(String sessionToken, PropertyTypePermId propertyTypeId); + protected abstract EntityTypePermId createEntityType(String sessionToken, PropertyTypePermId... propertyTypeIds); + + protected abstract void deleteEntityTypes(String sessionToken, IEntityTypeId... entityTypeIds); + + protected abstract ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, + Map<String, String> propertyMap); protected abstract ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, String propertyType, String value); + protected abstract IDeletionId deleteEntities(String sessionToken, IObjectId... entityIds); + protected abstract AbstractEntitySearchCriteria<?> createSearchCriteria(); protected abstract List<? extends IPermIdHolder> search(String sessionToken, diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java index 2595a3936a351c56e708bb4a774582991877f02a..869d77d9eef748f5b8d26907ca20f30531234d3e 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java @@ -79,6 +79,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISemanticAnnot import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISpaceHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ITagsHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IValidationPluginHolder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.ListUpdateValue; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetCreation; @@ -120,11 +121,15 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.create.PropertyAssignmentCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.create.PropertyTypeCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.delete.PropertyTypeDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.IPropertyTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.Query; import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.RoleAssignment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleTypeDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleTypeUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.SemanticAnnotation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; @@ -1480,10 +1485,16 @@ public class AbstractTest extends SystemTestCase return v3api.createPropertyTypes(sessionToken, Collections.singletonList(creation)).get(0); } - protected PropertyTypePermId createASamplePropertyType(String sessionToken, IEntityTypeId sampleTypeId) + protected PropertyTypePermId createASamplePropertyType(final String sessionToken, final IEntityTypeId sampleTypeId) + { + return createASamplePropertyType(sessionToken, sampleTypeId, "TYPE-" + System.currentTimeMillis()); + } + + protected PropertyTypePermId createASamplePropertyType(final String sessionToken, + final IEntityTypeId sampleTypeId, final String code) { PropertyTypeCreation creation = new PropertyTypeCreation(); - creation.setCode("TYPE-" + System.currentTimeMillis()); + creation.setCode(code); creation.setDataType(DataType.SAMPLE); creation.setSampleTypeId(sampleTypeId); creation.setLabel("label"); @@ -1491,6 +1502,13 @@ public class AbstractTest extends SystemTestCase return v3api.createPropertyTypes(sessionToken, Collections.singletonList(creation)).get(0); } + protected void deletePropertyTypes(final String sessionToken, final IPropertyTypeId... propertyTypeIds) + { + final PropertyTypeDeletionOptions deletionOptions = new PropertyTypeDeletionOptions(); + deletionOptions.setReason("Test"); + v3api.deletePropertyTypes(sessionToken, List.of(propertyTypeIds), deletionOptions); + } + protected PropertyTypePermId createAMaterialPropertyType(final String sessionToken, final IEntityTypeId materialTypeId) { @@ -1503,7 +1521,8 @@ public class AbstractTest extends SystemTestCase return v3api.createPropertyTypes(sessionToken, Collections.singletonList(creation)).get(0); } - protected EntityTypePermId createASampleType(String sessionToken, boolean mandatory, PropertyTypePermId... propertyTypes) + protected EntityTypePermId createASampleType(String sessionToken, boolean mandatory, + PropertyTypePermId... propertyTypes) { SampleTypeCreation creation = new SampleTypeCreation(); creation.setCode("SAMPLE-TYPE-" + System.currentTimeMillis()); @@ -1519,6 +1538,13 @@ public class AbstractTest extends SystemTestCase return v3api.createSampleTypes(sessionToken, Arrays.asList(creation)).get(0); } + protected void deleteSampleTypes(final String sessionToken, final IEntityTypeId... entityTypeIds) + { + final SampleTypeDeletionOptions deletionOptions = new SampleTypeDeletionOptions(); + deletionOptions.setReason("Test"); + v3api.deleteSampleTypes(sessionToken, List.of(entityTypeIds), deletionOptions); + } + protected EntityTypePermId createAnExperimentType(String sessionToken, boolean mandatory, PropertyTypePermId... propertyTypes) { ExperimentTypeCreation creation = new ExperimentTypeCreation(); diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DataSetSearchPropertyTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DataSetSearchPropertyTest.java index 0c4b17e2527f61f0b7914e2d85138b924648d84f..5782ad8eb25abeb5a12e566edcb6ac849c3c6143 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DataSetSearchPropertyTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DataSetSearchPropertyTest.java @@ -17,15 +17,24 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPermIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractEntitySearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.delete.DataSetDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.delete.DataSetTypeDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; /** @@ -35,21 +44,46 @@ public class DataSetSearchPropertyTest extends AbstractSearchPropertyTest { @Override - protected EntityTypePermId createEntityType(String sessionToken, PropertyTypePermId propertyTypeId) + protected EntityTypePermId createEntityType(final String sessionToken, final PropertyTypePermId... propertyTypeIds) { - return createADataSetType(sessionToken, false, propertyTypeId); + return createADataSetType(sessionToken, false, propertyTypeIds); + } + + @Override + protected void deleteEntityTypes(final String sessionToken, final IEntityTypeId... entityTypeIds) + { + final DataSetTypeDeletionOptions deletionOptions = new DataSetTypeDeletionOptions(); + deletionOptions.setReason("Test"); + v3api.deleteDataSetTypes(sessionToken, List.of(entityTypeIds), deletionOptions); } @Override - protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, - String propertyType, String value) + protected ObjectPermId createEntity(final String sessionToken, final String code, final EntityTypePermId entityTypeId, + final Map<String, String> propertyMap) { - DataSetCreation dataSetCreation = physicalDataSetCreation(); + final DataSetCreation dataSetCreation = physicalDataSetCreation(); dataSetCreation.setTypeId(entityTypeId); - dataSetCreation.setProperty(propertyType, value); + dataSetCreation.setProperties(new HashMap<>(propertyMap)); return v3api.createDataSets(sessionToken, Arrays.asList(dataSetCreation)).get(0); } + @Override + protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, + String propertyType, String value) + { + return createEntity(sessionToken, code, entityTypeId, Map.of(propertyType, value)); + } + + @Override + protected IDeletionId deleteEntities(final String sessionToken, final IObjectId... entityIds) + { + final DataSetDeletionOptions deletionOptions = new DataSetDeletionOptions(); + deletionOptions.setReason("Test"); + return v3api.deleteDataSets(sessionToken, + Arrays.stream(entityIds).map(entityId -> (IDataSetId) entityId).collect(Collectors.toList()), + deletionOptions); + } + @Override protected AbstractEntitySearchCriteria<?> createSearchCriteria() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExperimentSearchPropertyTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExperimentSearchPropertyTest.java index 36209cbaf128a5742790926f378d0bb3c7a5271d..12ad1fc8dcc02dde88a408af1bb4c58040a9a8f3 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExperimentSearchPropertyTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExperimentSearchPropertyTest.java @@ -17,14 +17,23 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPermIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractEntitySearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.delete.ExperimentDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.delete.ExperimentTypeDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; @@ -36,23 +45,48 @@ public class ExperimentSearchPropertyTest extends AbstractSearchPropertyTest { @Override - protected EntityTypePermId createEntityType(String sessionToken, PropertyTypePermId propertyTypeId) + protected EntityTypePermId createEntityType(final String sessionToken, final PropertyTypePermId... propertyTypeIds) { - return createAnExperimentType(sessionToken, false, propertyTypeId); + return createAnExperimentType(sessionToken, false, propertyTypeIds); } @Override - protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, - String propertyType, String value) + protected void deleteEntityTypes(final String sessionToken, final IEntityTypeId... entityTypeIds) + { + final ExperimentTypeDeletionOptions deletionOptions = new ExperimentTypeDeletionOptions(); + deletionOptions.setReason("Test"); + v3api.deleteExperimentTypes(sessionToken, List.of(entityTypeIds), deletionOptions); + } + + @Override + protected ObjectPermId createEntity(final String sessionToken, final String code, final EntityTypePermId entityTypeId, + final Map<String, String> propertyMap) { - ExperimentCreation experimentCreation = new ExperimentCreation(); + final ExperimentCreation experimentCreation = new ExperimentCreation(); experimentCreation.setCode("TEST-EXPERIMENT-" + System.currentTimeMillis()); experimentCreation.setTypeId(entityTypeId); experimentCreation.setProjectId(new ProjectIdentifier("/CISD/NEMO")); - experimentCreation.setProperty(propertyType, value); + experimentCreation.setProperties(new HashMap<>(propertyMap)); return v3api.createExperiments(sessionToken, Arrays.asList(experimentCreation)).get(0); } + @Override + protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, + String propertyType, String value) + { + return createEntity(sessionToken, code, entityTypeId, Map.of(propertyType, value)); + } + + @Override + protected IDeletionId deleteEntities(final String sessionToken, final IObjectId... entityIds) + { + final ExperimentDeletionOptions deletionOptions = new ExperimentDeletionOptions(); + deletionOptions.setReason("Test"); + return v3api.deleteExperiments(sessionToken, + Arrays.stream(entityIds).map(entityId -> (IExperimentId) entityId).collect(Collectors.toList()), + deletionOptions); + } + @Override protected AbstractEntitySearchCriteria<?> createSearchCriteria() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SampleSearchPropertyTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SampleSearchPropertyTest.java index bd356d1168804e59d52f3ac2ba9a4b5197c67f1e..9c6bb172f29d6f7a91e12aeb0f7211a26e4497b2 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SampleSearchPropertyTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SampleSearchPropertyTest.java @@ -17,15 +17,24 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPermIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractEntitySearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleDeletionOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleTypeDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; @@ -36,21 +45,46 @@ public class SampleSearchPropertyTest extends AbstractSearchPropertyTest { @Override - protected EntityTypePermId createEntityType(String sessionToken, PropertyTypePermId propertyTypeId) + protected EntityTypePermId createEntityType(final String sessionToken, final PropertyTypePermId... propertyTypeIds) { - return createASampleType(sessionToken, false, propertyTypeId); + return createASampleType(sessionToken, false, propertyTypeIds); } @Override - protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, - String propertyType, String value) + protected void deleteEntityTypes(final String sessionToken, final IEntityTypeId... entityTypeIds) + { + final SampleTypeDeletionOptions deletionOptions = new SampleTypeDeletionOptions(); + deletionOptions.setReason("Test"); + v3api.deleteSampleTypes(sessionToken, List.of(entityTypeIds), deletionOptions); + } + + @Override + protected ObjectPermId createEntity(final String sessionToken, final String code, + final EntityTypePermId entityTypeId, final Map<String, String> propertyMap) { - SampleCreation sampleCreation = new SampleCreation(); + final SampleCreation sampleCreation = new SampleCreation(); sampleCreation.setCode("TEST-SAMPLE-" + System.currentTimeMillis()); sampleCreation.setTypeId(entityTypeId); sampleCreation.setSpaceId(new SpacePermId("CISD")); - sampleCreation.setProperty(propertyType, value); - return v3api.createSamples(sessionToken, Arrays.asList(sampleCreation)).get(0); + sampleCreation.setProperties(new HashMap<>(propertyMap)); + return v3api.createSamples(sessionToken, List.of(sampleCreation)).get(0); + } + + @Override + protected ObjectPermId createEntity(String sessionToken, String code, EntityTypePermId entityTypeId, + String propertyType, String value) + { + return createEntity(sessionToken, code, entityTypeId, Map.of(propertyType, value)); + } + + @Override + protected IDeletionId deleteEntities(final String sessionToken, final IObjectId... entityIds) + { + final SampleDeletionOptions deletionOptions = new SampleDeletionOptions(); + deletionOptions.setReason("Test"); + return v3api.deleteSamples(sessionToken, + Arrays.stream(entityIds).map(entityId -> (ISampleId) entityId).collect(Collectors.toList()), + deletionOptions); } @Override