diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLEntityOperationChecker.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLEntityOperationChecker.java index eb32473d450674d9c0d437c012a87f6d4abb1537..cacb465ab7c9a6473ed5854dddc5f581a3fd95f6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLEntityOperationChecker.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLEntityOperationChecker.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server; import java.util.List; import java.util.Map; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewProject; @@ -49,6 +50,11 @@ public class ETLEntityOperationChecker implements IETLEntityOperationChecker { } + @Override + public void assertMaterialUpdateAllowed(IAuthSession session, List<MaterialUpdateDTO> materials) + { + } + @Override public void assertProjectCreationAllowed(IAuthSession session, List<NewProject> newProjects) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index a326af7d7da0c6f14df20040438b5593ba62730b..c59d8a4c34e0e0fed719e2e7f70f4eae7d384f12 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -71,6 +71,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IRoleAssignmentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.experimentlister.ExperimentLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister; @@ -1397,6 +1398,9 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements long dataSetsUpdated = updateDataSets(sessionForEntityOperation, operationDetails, progressListener); + long materialsUpdates = + updateMaterials(sessionForEntityOperation, operationDetails, progressListener); + // If the id is not null, the caller wants to persist the fact that the operation was // invoked and completed; // if the id is null, the caller does not care. @@ -1406,8 +1410,8 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements } return new AtomicEntityOperationResult(spacesCreated, projectsCreated, - materialsCreated, experimentsCreated, samplesCreated, samplesUpdated, - dataSetsCreated, dataSetsUpdated); + materialsCreated, materialsUpdates, experimentsCreated, samplesCreated, + samplesUpdated, dataSetsCreated, dataSetsUpdated); } finally { EntityOperationsInProgress.getInstance().removeRegistrationPending(registrationId); @@ -1488,6 +1492,24 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements return index; } + private long updateMaterials(Session session, AtomicEntityOperationDetails operationDetails, + IProgressListener progress) + { + MaterialHelper materialHelper = + new MaterialHelper(session, businessObjectFactory, getDAOFactory(), + getPropertiesBatchManager()); + + List<MaterialUpdateDTO> allMaterialUpdates = operationDetails.getMaterialUpdates(); + + assertMaterialUpdateAllowed(session, allMaterialUpdates); + + materialHelper.updateMaterials(allMaterialUpdates); + + // in material helper call the update of materials - but this has to wait fo change of the + // material updates to a map + return allMaterialUpdates.size(); + } + protected void assertMaterialCreationAllowed(Session session, Map<String, List<NewMaterial>> materials) { @@ -1497,6 +1519,15 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements } } + protected void assertMaterialUpdateAllowed(Session session, + List<MaterialUpdateDTO> materialUpdates) + { + if (materialUpdates != null && materialUpdates.isEmpty() == false) + { + entityOperationChecker.assertMaterialUpdateAllowed(session, materialUpdates); + } + } + private SpacePE registerSpaceInternal(Session session, NewSpace newSpace, String registratorUserIdOrNull) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/IETLEntityOperationChecker.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/IETLEntityOperationChecker.java index 0bf0ca20fd97fb45855a7288a691938cc060d8f3..dc852a7ba95c5f0d052d18cb62eca2edad9b0729 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/IETLEntityOperationChecker.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/IETLEntityOperationChecker.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server; import java.util.List; import java.util.Map; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.AuthorizationGuard; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.Capability; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; @@ -55,6 +56,9 @@ public interface IETLEntityOperationChecker public void assertMaterialCreationAllowed(IAuthSession session, Map<String, List<NewMaterial>> materials); + @RolesAllowed(RoleWithHierarchy.INSTANCE_ETL_SERVER) + public void assertMaterialUpdateAllowed(IAuthSession session, List<MaterialUpdateDTO> materials); + @RolesAllowed( { RoleWithHierarchy.SPACE_USER, RoleWithHierarchy.SPACE_ETL_SERVER }) @Capability("CREATE_PROJECTS_VIA_DSS") diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/MaterialHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/MaterialHelper.java index 35f7d3950a2e6e1ecd406d7359246547098df034..d5a46357dc3e605d31e8f304a486a53e6b3bc1b5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/MaterialHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/MaterialHelper.java @@ -244,7 +244,7 @@ public class MaterialHelper .getProperties()), existingMaterial.getModificationDate()); } - private void updateMaterials(List<MaterialUpdateDTO> updates) + public void updateMaterials(List<MaterialUpdateDTO> updates) { if (updates.isEmpty()) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialUpdateDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialUpdateDTO.java index 1a51894c3f97680c34c1b456ce7459cbadca0f8b..c7b14d35797dd61c35f014dcd08318f2638797d6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialUpdateDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialUpdateDTO.java @@ -1,19 +1,23 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo; +import java.io.Serializable; import java.util.Date; import java.util.List; import ch.systemsx.cisd.common.utilities.AbstractHashable; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; /** * Describes the material update operation, currently only properties can be changed. * * @author Tomasz Pylak */ -public class MaterialUpdateDTO extends AbstractHashable +public class MaterialUpdateDTO extends AbstractHashable implements Serializable { + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + private final TechId materialId; private final List<IEntityProperty> properties; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationDetails.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationDetails.java index e75942fd576a61a14dd051a6d59a66df2caca400..7ba4727d45959ec508cc94dacb7040e464bf3392 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationDetails.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationDetails.java @@ -25,6 +25,7 @@ import java.util.TreeMap; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; @@ -64,6 +65,8 @@ public class AtomicEntityOperationDetails implements Serializable private final Map<String /* material type */, List<NewMaterial>> materialRegistrations; + private final List<MaterialUpdateDTO> materialUpdates; + private final List<? extends NewExternalData> dataSetRegistrations; private final List<DataSetBatchUpdatesDTO> dataSetUpdates; @@ -75,6 +78,7 @@ public class AtomicEntityOperationDetails implements Serializable List<NewExperiment> experimentRegistrations, List<SampleUpdatesDTO> sampleUpdates, List<NewSample> sampleRegistrations, Map<String, List<NewMaterial>> materialRegistrations, + List<MaterialUpdateDTO> materialUpdates, List<? extends NewExternalData> dataSetRegistrations, List<DataSetBatchUpdatesDTO> dataSetUpdates) { @@ -87,10 +91,13 @@ public class AtomicEntityOperationDetails implements Serializable this.sampleUpdates = new ArrayList<SampleUpdatesDTO>(sampleUpdates); this.sampleRegistrations = new ArrayList<NewSample>(sampleRegistrations); this.materialRegistrations = new TreeMap<String, List<NewMaterial>>(materialRegistrations); + this.materialUpdates = new ArrayList<MaterialUpdateDTO>(materialUpdates); this.dataSetRegistrations = new ArrayList<NewExternalData>(dataSetRegistrations); this.dataSetUpdates = new ArrayList<DataSetBatchUpdatesDTO>(dataSetUpdates); } + // TODO: KUBA - put here the material updates as well + public AtomicEntityOperationDetails(TechId registrationId, String userIdOrNull, List<NewSpace> spaceRegistrations, List<NewProject> projectRegistrations, List<NewExperiment> experimentRegistrations, List<SampleUpdatesDTO> sampleUpdates, @@ -101,7 +108,7 @@ public class AtomicEntityOperationDetails implements Serializable { this(registrationId, userIdOrNull, spaceRegistrations, projectRegistrations, experimentRegistrations, sampleUpdates, sampleRegistrations, materialRegistrations, - dataSetRegistrations, dataSetUpdates); + new ArrayList<MaterialUpdateDTO>(), dataSetRegistrations, dataSetUpdates); this.batchSizeOrNull = batchSizeOrNull; } @@ -160,6 +167,11 @@ public class AtomicEntityOperationDetails implements Serializable return materialRegistrations; } + public List<MaterialUpdateDTO> getMaterialUpdates() + { + return materialUpdates; + } + public Integer getBatchSizeOrNull() { return batchSizeOrNull; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationResult.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationResult.java index e59f406b0baeab5e4270972fe3771987284eb9d5..ce13c47ff2c87045bfde5ae27103e4d555904511 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationResult.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AtomicEntityOperationResult.java @@ -17,15 +17,6 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.io.Serializable; -import java.util.Collections; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; /** * @author Chandrasekhar Ramakrishnan @@ -40,6 +31,8 @@ public class AtomicEntityOperationResult implements Serializable private final long materialsCreatedCount; + private final long materialsUpdatedCount; + private final long experimentsCreatedCount; private final long samplesCreatedCount; @@ -52,29 +45,17 @@ public class AtomicEntityOperationResult implements Serializable public AtomicEntityOperationResult() { - this(Collections.<Space> emptyList(), Collections.<Project> emptyList(), Collections - .<Experiment> emptyList(), Collections.<Sample> emptyList(), Collections - .<Sample> emptyList(), Collections.<Material> emptyList(), Collections - .<ExternalData> emptyList(), Collections.<ExternalData> emptyList()); - } - - public AtomicEntityOperationResult(List<Space> spacesCreated, List<Project> projectsCreated, - List<Experiment> experimentsCreated, List<Sample> samplesUpdated, - List<Sample> samplesCreated, List<Material> materialsCreated, - List<ExternalData> dataSetsCreated, List<ExternalData> dataSetsUpdated) - { - this(spacesCreated.size(), projectsCreated.size(), materialsCreated.size(), - experimentsCreated.size(), samplesCreated.size(), samplesUpdated.size(), - dataSetsCreated.size(), dataSetsUpdated.size()); + this(0, 0, 0, 0, 0, 0, 0, 0, 0); } public AtomicEntityOperationResult(long spacesCreated, long projectsCreated, - long materialsCreated, long experimentsCreated, long samplesCreated, - long samplesUpdated, long dataSetsCreated, long dataSetsUpdated) + long materialsCreated, long materialsUpdated, long experimentsCreated, + long samplesCreated, long samplesUpdated, long dataSetsCreated, long dataSetsUpdated) { this.spacesCreatedCount = spacesCreated; this.projectsCreatedCount = projectsCreated; this.materialsCreatedCount = materialsCreated; + this.materialsUpdatedCount = materialsUpdated; this.experimentsCreatedCount = experimentsCreated; this.samplesCreatedCount = samplesCreated; this.samplesUpdatedCount = samplesUpdated; @@ -128,4 +109,9 @@ public class AtomicEntityOperationResult implements Serializable { return materialsCreatedCount; } + + public long getMaterialsUpdateCount() + { + return materialsUpdatedCount; + } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceDatabaseTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceDatabaseTest.java index ca7987900ab637dc9a3557359f70b816547ebeea..d2b2acbae3dc3e0fa2e307600d0ef0a760367cf3 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceDatabaseTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceDatabaseTest.java @@ -36,6 +36,7 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.AbstractDAOTest; import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria; @@ -403,13 +404,14 @@ public class ETLServiceDatabaseTest extends AbstractDAOTest List<SampleUpdatesDTO> sampleUpdates = Collections.emptyList(); List<NewSample> sampleRegistrations = Arrays.asList(sampleToCreate); Map<String, List<NewMaterial>> materialRegistrations = Collections.emptyMap(); + List<MaterialUpdateDTO> materialUpdates = Collections.emptyList(); List<? extends NewExternalData> dataSetRegistrations = Collections.emptyList(); List<DataSetBatchUpdatesDTO> dataSetUpdates = Collections.emptyList(); AtomicEntityOperationDetails details = new AtomicEntityOperationDetails(registrationid, null, spaceRegistrations, projectRegistrations, experimentRegistrations, sampleUpdates, - sampleRegistrations, materialRegistrations, dataSetRegistrations, - dataSetUpdates); + sampleRegistrations, materialRegistrations, materialUpdates, + dataSetRegistrations, dataSetUpdates); service.performEntityOperations(sessionToken, details); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java index 3292223485ae796768a5dea01881a2edc01fd98a..f19c3461ad1a9573f702009f9a06ddc582a30963 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java @@ -41,6 +41,7 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.business.IDataStoreServiceFactory; import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.PersistencyResources; import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; @@ -983,6 +984,9 @@ public class ETLServiceTest extends AbstractServerTestCase new HashMap<String, List<NewMaterial>>(); materialRegistrations.put(materialType.getCode(), Arrays.asList(newMaterial)); + // TODO: KUBA - put here the test for the material updates + List<MaterialUpdateDTO> materialUpdates = new ArrayList<MaterialUpdateDTO>(); + final SamplePE newSamplePE = createSampleWithExperiment(experiment); newSamplePE.setCode("SAMPLE_CODE_NEW"); final SampleIdentifier newSampleIdentifier = newSamplePE.getSampleIdentifier(); @@ -1010,7 +1014,7 @@ public class ETLServiceTest extends AbstractServerTestCase new ArrayList<NewProject>(), new ArrayList<NewExperiment>(), Collections.singletonList(sampleUpdate), Collections.singletonList(newSample), materialRegistrations, - Collections.singletonList(externalData), + materialUpdates, Collections.singletonList(externalData), Collections.singletonList(dataSetUpdate)); AtomicEntityOperationResult result = @@ -1157,6 +1161,9 @@ public class ETLServiceTest extends AbstractServerTestCase new HashMap<String, List<NewMaterial>>(); materialRegistrations.put(materialType.getCode(), Arrays.asList(newMaterial)); + // TODO: KUBA - put here the test for the material updates + List<MaterialUpdateDTO> materialUpdates = new ArrayList<MaterialUpdateDTO>(); + final SamplePE newSamplePE = createSampleWithExperiment(experiment); newSamplePE.setCode("SAMPLE_CODE_NEW"); final SampleIdentifier newSampleIdentifier = newSamplePE.getSampleIdentifier(); @@ -1191,7 +1198,7 @@ public class ETLServiceTest extends AbstractServerTestCase new ArrayList<NewProject>(), new ArrayList<NewExperiment>(), Collections.singletonList(sampleUpdate), Collections.singletonList(newSample), materialRegistrations, - Collections.singletonList(externalData), + materialUpdates, Collections.singletonList(externalData), Collections.singletonList(dataSetUpdate)); AtomicEntityOperationResult result = diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java index 6577253195f0689016339e01e914a9611e8de8a3..76e45fe1be2926c591deb7d3f6516b1511241306 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java @@ -24,6 +24,7 @@ import java.util.Map; import org.testng.AssertJUnit; import org.testng.annotations.Test; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; @@ -54,6 +55,9 @@ public class AtomicEntityOperationDetailsTest extends AssertJUnit materialRegistrations.put("material-type-1", newMaterials1); materialRegistrations.put("material-type-2", newMaterials2); + // TODO: KUBA - put here the test for the material updates + List<MaterialUpdateDTO> materialUpdates = new ArrayList<MaterialUpdateDTO>(); + ArrayList<NewProject> projectRegistrations = new ArrayList<NewProject>(); projectRegistrations.add(new NewProject("/SPACE/P1", "description")); projectRegistrations.add(new NewProject("/SPACE/P2", "description")); @@ -87,8 +91,8 @@ public class AtomicEntityOperationDetailsTest extends AssertJUnit AtomicEntityOperationDetails details = new AtomicEntityOperationDetails(null, null, spaceRegistrations, projectRegistrations, experimentRegistrations, sampleUpdates, - sampleRegistrations, materialRegistrations, dataSetRegistrations, - dataSetUpdates); + sampleRegistrations, materialRegistrations, materialUpdates, + dataSetRegistrations, dataSetUpdates); assertEquals( "AtomicEntityOperationDetails[registrationIdOrNull=<null>" diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java index 4c075d45d7d15a3add25d1d8d0d78d52a1ef05e5..0f5a5aa592152f4085c9febf52418edace77b655 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java @@ -29,6 +29,7 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; +import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; @@ -110,6 +111,8 @@ public class EntityOperationTest extends SystemTestCase private final Map<String, List<NewMaterial>> materials = new HashMap<String, List<NewMaterial>>(); + private final List<MaterialUpdateDTO> materialUpdates = new ArrayList<MaterialUpdateDTO>(); + private TechId registrationID = new TechId(counter++); private String userID; @@ -269,7 +272,8 @@ public class EntityOperationTest extends SystemTestCase AtomicEntityOperationDetails create() { return new AtomicEntityOperationDetails(registrationID, userID, spaces, projects, - experiments, sampleUpdates, samples, materials, dataSets, dataSetUpdates); + experiments, sampleUpdates, samples, materials, materialUpdates, dataSets, + dataSetUpdates); } }