diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractAssignmentSampleToExperimentTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractAssignmentSampleToExperimentTestCase.java index e56936743cbcd00b9dc6efa27669436860c399a6..9f83e1409d16584a76e54ff57f55dbe69bef29b5 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractAssignmentSampleToExperimentTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractAssignmentSampleToExperimentTestCase.java @@ -39,6 +39,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleC import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.systemtest.base.BaseTest; import ch.systemsx.cisd.openbis.systemtest.base.auth.AuthorizationRule; import ch.systemsx.cisd.openbis.systemtest.base.auth.GuardedDomain; @@ -182,12 +184,6 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT abstract protected void reassignSampleToExperiment(String samplePermId, String experimentIdentifierOrNull, String userSessionToken); - /** - * Registers a new experiment for the specified project with the specified existing samples. - */ - abstract protected String registerExperimentWithSamples(String projectIdentifier, List<String> samplePermIds, - String userSessionToken); - @Test public void unassignSampleWithDataSetsFromExperiment() { @@ -605,7 +601,27 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT { checkAssigningSamplesToExperiment(destinationSpaceRole, instanceRole); } - + + protected Sample[] loadSamples(List<String> samplePermIds) + { + List<Sample> samples = new ArrayList<Sample>(); + for (String permId : samplePermIds) + { + SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, permId); + if (sampleIdentifier == null) + { + throw new IllegalArgumentException("Unknown sample with perm id: " + permId); + } + Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier); + if (sample == null) + { + throw new IllegalArgumentException("Unknown sample with identifier: " + sampleIdentifier); + } + samples.add(sample); + } + return samples.toArray(new Sample[0]); + } + private void checkAssigningSampleToExperiment(RoleWithHierarchy sourceSpaceRole, RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole) { @@ -656,8 +672,12 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT { List<String> samplePermIds = getSamplePermIds(sampleNodes); String user = create(aSession().withInstanceRole(RoleCode.ADMIN)); - String experimentIdentifier - = registerExperimentWithSamples(entityGraphManager.getIdentifierOfDefaultProject(), samplePermIds, user); + String projectIdentifier = entityGraphManager.getIdentifierOfDefaultProject(); + Sample[] samples = loadSamples(samplePermIds); + Project project = commonServer.getProjectInfo(systemSessionToken, ProjectIdentifierFactory.parse(projectIdentifier)); + Experiment experiment = create(anExperiment().inProject(project).withSamples(samples).as(user)); + String experimentIdentifier = experiment.getIdentifier(); + addToRepository(experimentNode, etlService.tryGetExperiment(systemSessionToken, ExperimentIdentifierFactory.parse(experimentIdentifier))); } @@ -671,5 +691,5 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT } return samplePermIds; } - + } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentTest.java index 651dc451fa6cea814970810d9a875aa00232f4f1..d55e146d61582144aa5b2fa8e69d3148a225aff1 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentTest.java @@ -16,16 +16,13 @@ package ch.systemsx.cisd.openbis.systemtest; -import java.util.ArrayList; import java.util.List; import org.testng.annotations.Test; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -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.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; /** @@ -60,35 +57,4 @@ public class AssignSampleToExperimentTest extends AbstractAssignmentSampleToExpe perform(anUpdateOf(sample).removingExperiment().as(userSessionToken)); } } - - @Override - protected String registerExperimentWithSamples(String projectIdentifier, List<String> samplePermIds, - String userSessionToken) - { - Sample[] samples = loadSamples(samplePermIds); - Project project = commonServer.getProjectInfo(systemSessionToken, ProjectIdentifierFactory.parse(projectIdentifier)); - Experiment experiment = create(anExperiment().inProject(project).withSamples(samples).as(userSessionToken)); - return experiment.getIdentifier(); - } - - private Sample[] loadSamples(List<String> samplePermIds) - { - List<Sample> samples = new ArrayList<Sample>(); - for (String permId : samplePermIds) - { - SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, permId); - if (sampleIdentifier == null) - { - throw new IllegalArgumentException("Unknown sample with perm id: " + permId); - } - Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier); - if (sample == null) - { - throw new IllegalArgumentException("Unknown sample with identifier: " + sampleIdentifier); - } - samples.add(sample); - } - return samples.toArray(new Sample[0]); - } - } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentViaDropBoxAPITest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentViaDropBoxAPITest.java new file mode 100644 index 0000000000000000000000000000000000000000..5112deef99eaeb12bd05920fec0195f1c3d68892 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignSampleToExperimentViaDropBoxAPITest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.systemtest; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.testng.annotations.Test; + +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.builders.AtomicEntityOperationDetailsBuilder; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; + +/** + * @author Franz-Josef Elmer + */ +@Test(groups = { "system-cleandb" }) +public class AssignSampleToExperimentViaDropBoxAPITest extends AbstractAssignmentSampleToExperimentTestCase +{ + @Override + protected void reassignSamplesToExperiment(String experimentIdentifier, List<String> samplePermIds, + String userSessionToken) + { + ExperimentIdentifier identifier = ExperimentIdentifierFactory.parse(experimentIdentifier); + Experiment experiment = etlService.tryGetExperiment(systemSessionToken, identifier); + ExperimentUpdatesDTO experimentUpdate = new ExperimentUpdatesDTO(); + experimentUpdate.setExperimentId(new TechId(experiment)); + experimentUpdate.setProjectIdentifier(identifier); + experimentUpdate.setVersion(experiment.getVersion()); + experimentUpdate.setProperties(Collections.<IEntityProperty>emptyList()); + experimentUpdate.setAttachments(Collections.<NewAttachment>emptyList()); + Sample[] samples = loadSamples(samplePermIds); + experimentUpdate.setSampleCodes(Code.extractCodesToArray(Arrays.asList(samples))); + AtomicEntityOperationDetailsBuilder builder = new AtomicEntityOperationDetailsBuilder(); + etlService.performEntityOperations(userSessionToken, builder.experimentUpdate(experimentUpdate).getDetails()); + } + + @Override + protected void reassignSampleToExperiment(String samplePermId, String experimentIdentifierOrNull, + String userSessionToken) + { + SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, samplePermId); + Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier); + ExperimentIdentifier experimentIdentifier = null; + if (experimentIdentifierOrNull != null) + { + experimentIdentifier = ExperimentIdentifierFactory.parse(experimentIdentifierOrNull); + sampleIdentifier = new SampleIdentifier(experimentIdentifier, sampleIdentifier.getSampleCode()); + } + AtomicEntityOperationDetailsBuilder builder = new AtomicEntityOperationDetailsBuilder(); + String containerIdentifier = null; + if (sample.getContainer() != null) + { + containerIdentifier = sample.getContainer().getIdentifier(); + } + builder.sampleUpdate(new SampleUpdatesDTO(new TechId(sample), Collections.<IEntityProperty> emptyList(), + experimentIdentifier, Collections.<NewAttachment> emptyList(), sample.getVersion(), + sampleIdentifier, containerIdentifier, null)); + etlService.performEntityOperations(userSessionToken, builder.getDetails()); + } + +}