diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleUpdates.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleUpdates.java index de8b59062b2a7e942c4bbdad16be10a65c715cf1..eb92858099f275533f72dbfa5498613f7a1a8717 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleUpdates.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleUpdates.java @@ -56,10 +56,11 @@ public class SampleUpdates extends BasicSampleUpdates public SampleUpdates(String sessionKey, TechId sampleId, List<IEntityProperty> properties, List<NewAttachment> attachments, ExperimentIdentifier experimentIdentifierOrNull, - Date version, String sampleIdentifier, String parentIdentifierOrNull, - String containerIdentifierOrNull) + Date version, String sampleIdentifier, String containerIdentifierOrNull, + String parentIdentifierOrNull, String[] parents) { - super(sampleId, properties, version, parentIdentifierOrNull, containerIdentifierOrNull); + super(sampleId, properties, version, containerIdentifierOrNull, parentIdentifierOrNull, + parents); this.sessionKey = sessionKey; this.attachments = attachments; this.experimentIdentifierOrNull = experimentIdentifierOrNull; 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 e88a045cd5544f6bc86d35a53e10193e595e3e9a..3ca33f9828119d07403f060ed90f296abbc00d25 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 @@ -601,7 +601,8 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET { Session session = getSession(sessionToken); IExternalDataDAO externalDataDAO = getDAOFactory().getExternalDataDAO(); - ExternalDataPE dataSet = externalDataDAO.tryToFindFullDataSetByCode(dataSetCode, false, false); + ExternalDataPE dataSet = + externalDataDAO.tryToFindFullDataSetByCode(dataSetCode, false, false); if (dataSet != null) { DataSetTypePE dataSetType = dataSet.getDataSetType(); @@ -768,8 +769,8 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET String groupPrefix = container.getGroup() != null ? ("/" + container.getGroup().getCode() + "/") : "/"; - newSamples.add(new NewSample(groupPrefix + code, SampleTypeTranslator.translate( - sampleTypePE, null), null, container.getIdentifier())); + newSamples.add(NewSample.createWithParent(groupPrefix + code, SampleTypeTranslator + .translate(sampleTypePE, null), null, container.getIdentifier())); } getSampleTypeSlaveServerPlugin(sampleTypePE).registerSamples(session, newSamples); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java index f7f40c9d9d7a40638a5f2cc6d720e2eab2b8acac..d2797f354d9bf50680bbd1dc76d34ad72499b4c2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -45,6 +46,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; 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.IdentifierHelper; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; @@ -130,7 +132,23 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi samplePE.setDatabaseInstance(sampleOwner.tryGetDatabaseInstance()); defineSampleProperties(samplePE, newSample.getProperties()); String parentIdentifier = newSample.getParentIdentifier(); - setGeneratedFrom(sampleIdentifier, samplePE, parentIdentifier); + if (parentIdentifier != null) + { + setGeneratedFrom(sampleIdentifier, samplePE, parentIdentifier); + } else if (newSample.getParents() != null) + { + final String[] parents = newSample.getParents(); + final List<SampleIdentifier> parentIdentifiers = + IdentifierHelper.extractSampleIdentifiers(parents); + if (sampleIdentifier.isSpaceLevel()) + { + final String spaceCode = sampleIdentifier.getSpaceLevel().getSpaceCode(); + for (SampleIdentifier si : parentIdentifiers) + { + IdentifierHelper.fillAndCheckGroup(si, spaceCode); + } + } + } String containerIdentifier = newSample.getContainerIdentifier(); setContainer(sampleIdentifier, samplePE, containerIdentifier); samplePE.setPermId(getPermIdDAO().createPermId()); @@ -214,14 +232,19 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi private void removeParents(SamplePE child) { + List<SampleRelationshipPE> parents = new ArrayList<SampleRelationshipPE>(); for (SampleRelationshipPE r : child.getParentRelationships()) { if (r.getRelationship().getCode().equals( BasicConstant.PARENT_CHILD_INTERNAL_RELATIONSHIP)) { - child.removeParentRelationship(r); + parents.add(r); } } + for (SampleRelationshipPE r : parents) + { + child.removeParentRelationship(r); + } } // ineffective for adding a collection of parents @@ -244,7 +267,7 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi RelationshipTypePE relationshipType) { final SampleRelationshipPE relationship = - new SampleRelationshipPE(child, parent, relationshipType); + new SampleRelationshipPE(parent, child, relationshipType); child.addParentRelationship(relationship); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/BasicSampleUpdates.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/BasicSampleUpdates.java index 84552fab3aab068d739574ee6eaef2d47d94ad1d..4fff987b9ab3e12a3b55685d334ddabd5669a097 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/BasicSampleUpdates.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/BasicSampleUpdates.java @@ -76,13 +76,14 @@ public class BasicSampleUpdates implements IsSerializable, Serializable } public BasicSampleUpdates(TechId sampleId, List<IEntityProperty> properties, Date version, - String parentIdentifierOrNull, String containerIdentifierOrNull) + String containerIdentifierOrNull, String parentIdentifierOrNull, String[] parents) { this.sampleIdOrNull = sampleId; this.properties = properties; this.version = version; - this.parentIdentifierOrNull = parentIdentifierOrNull; this.containerIdentifierOrNull = containerIdentifierOrNull; + this.parentIdentifierOrNull = parentIdentifierOrNull; + this.modifiedParentCodesOrNull = parents; } public TechId getSampleIdOrNull() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java index 12d7cabf22c069492fbeb02d11e7e6fc30cddfd9..4fd95b58100507e36fdfa890e2d8b26ceb6fd621 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java @@ -46,8 +46,14 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa /** * The parent identifier. */ + // TODO 2010-08-09, Piotr Buczek: remove private String parentIdentifier; + // Set of parent sample codes or identifiers. It will be assumed that + // all the samples belong to the same group as the child sample. + // If equals to null then parentIdentifier should be used. + private String[] parentsOrNull; + /** * The container identifier. */ @@ -66,20 +72,36 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa { } - public NewSample(final String identifier, final SampleType sampleType, - final String parentIdentifier, final String containerIdentifier) + private NewSample(final String identifier, final SampleType sampleType, + final String containerIdentifier) { setIdentifier(identifier); setSampleType(sampleType); - setParentIdentifier(parentIdentifier); setContainerIdentifier(containerIdentifier); } - public NewSample(final String identifier, SampleType sampleType, String parentIdentifier, - String containerIdentifier, String experimentIdentifier, IEntityProperty[] properties, + public static NewSample createWithParent(final String identifier, final SampleType sampleType, + final String containerIdentifier, final String parentIdentifier) + { + NewSample result = new NewSample(identifier, sampleType, containerIdentifier); + result.setParentIdentifier(parentIdentifier); + return result; + } + + public static NewSample createWithParents(final String identifier, final SampleType sampleType, + final String containerIdentifier, final String[] parents) + { + NewSample result = new NewSample(identifier, sampleType, containerIdentifier); + result.setParents(parents); + return result; + } + + public NewSample(final String identifier, SampleType sampleType, String containerIdentifier, + String parentIdentifier, String experimentIdentifier, IEntityProperty[] properties, List<NewAttachment> attachments) { - this(identifier, sampleType, parentIdentifier, containerIdentifier); + this(identifier, sampleType, containerIdentifier); + this.parentIdentifier = parentIdentifier; this.experimentIdentifier = experimentIdentifier; this.properties = properties; this.attachments = attachments; @@ -105,6 +127,16 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa this.sampleType = sampleType; } + public String[] getParents() + { + return parentsOrNull; + } + + public void setParents(String[] parents) + { + this.parentsOrNull = parents; + } + public final String getParentIdentifier() { return parentIdentifier; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java index 7a2686fda1ce1f71dc46e2c07754c4990683660c..e1cfb3838d27db485e01bbab7eba5b4bd3235215 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java @@ -39,10 +39,9 @@ public final class UpdatedSample extends NewSample public UpdatedSample(NewSample newSample, SampleBatchUpdateDetails batchUpdateDetails) { - super(newSample.getIdentifier(), newSample.getSampleType(), - newSample.getParentIdentifier(), newSample.getContainerIdentifier(), newSample - .getExperimentIdentifier(), newSample.getProperties(), newSample - .getAttachments()); + super(newSample.getIdentifier(), newSample.getSampleType(), newSample + .getContainerIdentifier(), newSample.getParentIdentifier(), newSample + .getExperimentIdentifier(), newSample.getProperties(), newSample.getAttachments()); this.batchUpdateDetails = batchUpdateDetails; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleBatchUpdatesDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleBatchUpdatesDTO.java index 33e78a9789801fa33cb812865f7abe36251ba0ac..f366c194ba2a46aaa6ba2a454392a18ac2bc6277 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleBatchUpdatesDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleBatchUpdatesDTO.java @@ -41,7 +41,7 @@ public class SampleBatchUpdatesDTO extends SampleUpdatesDTO String containerIdentifierOrNull, SampleBatchUpdateDetails details) { super(null, properties, experimentIdentifierOrNull, null, null, sampleIdentifier, - parentIdentifierOrNull, containerIdentifierOrNull); + containerIdentifierOrNull, parentIdentifierOrNull, null); this.oldSampleIdentifierOrNull = oldSampleIdentifier; this.details = details; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleUpdatesDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleUpdatesDTO.java index 0a82f0e2d99019712e39cdb10be5d8d37a6c149c..1c0d740fe4bad17db5a71f7593a09c1d96781734 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleUpdatesDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleUpdatesDTO.java @@ -43,10 +43,11 @@ public class SampleUpdatesDTO extends BasicSampleUpdates public SampleUpdatesDTO(TechId sampleId, List<IEntityProperty> properties, ExperimentIdentifier experimentIdentifierOrNull, Collection<NewAttachment> attachments, - Date version, SampleIdentifier sampleIdentifier, String parentIdentifierOrNull, - String containerIdentifierOrNull) + Date version, SampleIdentifier sampleIdentifier, String containerIdentifierOrNull, + String parentIdentifierOrNull, String[] parentsOrNull) { - super(sampleId, properties, version, parentIdentifierOrNull, containerIdentifierOrNull); + super(sampleId, properties, version, containerIdentifierOrNull, parentIdentifierOrNull, + parentsOrNull); this.experimentIdentifierOrNull = experimentIdentifierOrNull; this.attachments = attachments; this.sampleIdentifier = sampleIdentifier; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java index 3a1504a4ad5a68de1ef4a4a69c137d58a391614d..e7ab575cc8eb88862a6d4b0a1e70b7bc3d678aa2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java @@ -270,7 +270,7 @@ abstract public class AbstractGenericSampleRegisterEditForm extends return sampleType.getCode(); } - protected String[] getSamples() + protected String[] getParents() { return parentsArea.tryGetSampleCodes(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java index dc62f5740f3649dd426ff70aaf80d0e9044fc62a..11cf3cf31431d3f856f3db147eac6d988aeda626 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java @@ -64,13 +64,15 @@ public final class GenericSampleEditForm extends AbstractGenericSampleRegisterEd { final List<IEntityProperty> properties = extractProperties(); final List<NewAttachment> attachments = attachmentsManager.extractAttachments(); - ExperimentIdentifier experimentIdent = + final ExperimentIdentifier experimentIdent = experimentField != null ? experimentField.tryToGetValue() : null; + final String containerOrNull = StringUtils.trimToNull(container.getValue()); + final String parentOrNull = StringUtils.trimToNull(parent.getValue()); + final String[] parents = getParents(); viewContext.getService().updateSample( new SampleUpdates(attachmentsSessionKey, techIdOrNull, properties, attachments, experimentIdent, originalSample.getModificationDate(), - createSampleIdentifier(), StringUtils.trimToNull(parent.getValue()), - StringUtils.trimToNull(container.getValue())), + createSampleIdentifier(), containerOrNull, parentOrNull, parents), new UpdateSampleCallback(viewContext)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java index 97d9f97694eecf48e98f83accca46edc269bdca0..29549e423d944456a07b6a37921ef9bc9579ca90 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java @@ -97,9 +97,22 @@ public final class GenericSampleRegistrationForm extends AbstractGenericSampleRe (experimentField != null && experimentField.tryToGetValue() != null) ? experimentField .tryToGetValue().getIdentifier() : null; - final NewSample newSample = - new NewSample(createSampleIdentifier(), sampleType, StringUtils.trimToNull(parent - .getValue()), StringUtils.trimToNull(container.getValue())); + + final String containerOrNull = StringUtils.trimToNull(container.getValue()); + final String parentOrNull = StringUtils.trimToNull(parent.getValue()); + final NewSample newSample; + if (parentOrNull == null) + { + final String[] parents = getParents(); + newSample = + NewSample.createWithParents(createSampleIdentifier(), sampleType, + containerOrNull, parents); + } else + { + newSample = + NewSample.createWithParent(createSampleIdentifier(), sampleType, + containerOrNull, parentOrNull); + } final List<IEntityProperty> properties = extractProperties(); newSample.setProperties(properties.toArray(IEntityProperty.EMPTY_ARRAY)); newSample.setAttachments(attachmentsManager.extractAttachments()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java index 7ccdaa4edc324044bb06e776e2e1f004c47533a3..5ac80ef2c05810ad2d2f33ea2b63583d600cc537 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java @@ -350,8 +350,9 @@ public class GenericClientService extends AbstractClientService implements IGene .getSampleIdOrNull(), updates.getProperties(), convExperimentIdentifierOrNull, attachments, updates .getVersion(), sampleOwner, updates + .getContainerIdentifierOrNull(), updates .getParentIdentifierOrNull(), updates - .getContainerIdentifierOrNull())); + .getModifiedParentCodesOrNull())); result.copyFrom(updateResult); } }.process(updates.getSessionKey(), getHttpSession(), updates.getAttachments()); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java index 5590b9218f5262c9043684107cfedf2e9743619d..9561416b7bfae8061a6715b131cf2f349a8b8245 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java @@ -409,7 +409,7 @@ public final class SampleBOTest extends AbstractBOTest }); createSampleBO().update( new SampleUpdatesDTO(SAMPLE_TECH_ID, null, experimentIdentifier, Collections - .<NewAttachment> emptyList(), now, null, null, null)); + .<NewAttachment> emptyList(), now, null, null, null, null)); assertEquals(experimentToAttach, sample.getExperiment()); context.assertIsSatisfied(); @@ -445,7 +445,7 @@ public final class SampleBOTest extends AbstractBOTest createSampleBO().update( new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections .<NewAttachment> emptyList(), now, SampleIdentifierFactory - .parse(newSampleIdentifierWithoutDb), null, null)); + .parse(newSampleIdentifierWithoutDb), null, null, null)); String newSampleIdentWithDb = EXAMPLE_DATABASE_INSTANCE.getCode() + ":" + newSampleIdentifierWithoutDb; assertEquals(newSampleIdentWithDb, sample.getSampleIdentifier().toString()); @@ -505,7 +505,7 @@ public final class SampleBOTest extends AbstractBOTest assertNull(sample.getGeneratedFrom()); createSampleBO().update( new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections - .<NewAttachment> emptyList(), now, null, parent.getSampleIdentifier() + .<NewAttachment> emptyList(), now, null, null, parent.getSampleIdentifier() .toString(), null)); SamplePE newParent = sample.getGeneratedFrom(); assertNotNull(newParent); @@ -557,8 +557,8 @@ public final class SampleBOTest extends AbstractBOTest assertNull(sample.getContainer()); createSampleBO().update( new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections - .<NewAttachment> emptyList(), now, null, null, container - .getSampleIdentifier().toString())); + .<NewAttachment> emptyList(), now, null, container.getSampleIdentifier() + .toString(), null, null)); assertNotNull(sample.getContainer()); assertEquals(container, sample.getContainer()); context.assertIsSatisfied(); @@ -611,8 +611,8 @@ public final class SampleBOTest extends AbstractBOTest assertNull(sample.getContainer()); SampleBO bo = createSampleBO(); bo.update(new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections - .<NewAttachment> emptyList(), now, null, null, container.getSampleIdentifier() - .toString())); + .<NewAttachment> emptyList(), now, null, + container.getSampleIdentifier().toString(), null, null)); bo.save(); context.assertIsSatisfied(); } @@ -643,7 +643,7 @@ public final class SampleBOTest extends AbstractBOTest { createSampleBO().update( new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections - .<NewAttachment> emptyList(), now, null, null, null)); + .<NewAttachment> emptyList(), now, null, null, null, null)); } catch (UserFailureException ex) { exceptionThrown = true; @@ -671,7 +671,7 @@ public final class SampleBOTest extends AbstractBOTest { SampleUpdatesDTO updates = new SampleUpdatesDTO(SAMPLE_TECH_ID, null, null, Collections - .<NewAttachment> emptyList(), now, null, null, null); + .<NewAttachment> emptyList(), now, null, null, null, null); createSampleBO().update(updates); } catch (UserFailureException e) { @@ -993,6 +993,6 @@ public final class SampleBOTest extends AbstractBOTest createSampleBO().update( new SampleUpdatesDTO(sampleId, null, experimentIdentifier, Collections .<NewAttachment> emptyList(), sample.getModificationDate(), null, null, - null)); + null, null)); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplePredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplePredicateTest.java index eca0a008ca2d99e4462dc2d9e6a2fd6f35b07876..808855c9bf11a1288c0b4cd8a3027125be2ab449 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplePredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplePredicateTest.java @@ -43,7 +43,8 @@ public class NewSamplePredicateTest extends AuthorizationTestCase SampleIdentifier sampleIdentifier = new SampleIdentifier(new DatabaseInstanceIdentifier(ANOTHER_INSTANCE_CODE), "s1"); NewSample sample = - new NewSample(sampleIdentifier.toString(), sampleType, "parent", "container"); + NewSample.createWithParent(sampleIdentifier.toString(), sampleType, "parent", + "container"); prepareProvider(ANOTHER_INSTANCE_CODE, createAnotherDatabaseInstance(), createGroups()); predicate.init(provider); @@ -61,7 +62,8 @@ public class NewSamplePredicateTest extends AuthorizationTestCase SampleIdentifier sampleIdentifier = new SampleIdentifier(new DatabaseInstanceIdentifier(INSTANCE_CODE), "s1"); NewSample sample = - new NewSample(sampleIdentifier.toString(), sampleType, "parent", "container"); + NewSample.createWithParent(sampleIdentifier.toString(), sampleType, "parent", + "container"); prepareProvider(INSTANCE_CODE, createDatabaseInstance(), createGroups()); predicate.init(provider); @@ -81,7 +83,8 @@ public class NewSamplePredicateTest extends AuthorizationTestCase SampleIdentifier sampleIdentifier = new SampleIdentifier(new GroupIdentifier(INSTANCE_CODE, SPACE_CODE), "s1"); NewSample sample = - new NewSample(sampleIdentifier.toString(), sampleType, "parent", "container"); + NewSample.createWithParent(sampleIdentifier.toString(), sampleType, "parent", + "container"); prepareProvider(INSTANCE_CODE, createDatabaseInstance(), createGroups()); predicate.init(provider); @@ -99,7 +102,8 @@ public class NewSamplePredicateTest extends AuthorizationTestCase GroupIdentifier groupIdentifier = new GroupIdentifier(INSTANCE_CODE, ANOTHER_GROUP_CODE); SampleIdentifier sampleIdentifier = new SampleIdentifier(groupIdentifier, "s1"); NewSample sample = - new NewSample(sampleIdentifier.toString(), sampleType, "parent", "container"); + NewSample.createWithParent(sampleIdentifier.toString(), sampleType, "parent", + "container"); List<GroupPE> groups = Arrays.asList(createGroup(groupIdentifier)); prepareProvider(INSTANCE_CODE, createDatabaseInstance(), groups); predicate.init(provider); @@ -107,7 +111,8 @@ public class NewSamplePredicateTest extends AuthorizationTestCase Status status = predicate.evaluate(createPerson(), createRoles(false), sample); assertEquals(true, status.isError()); - assertEquals("User 'megapixel' does not have enough privileges.", status.tryGetErrorMessage()); + assertEquals("User 'megapixel' does not have enough privileges.", status + .tryGetErrorMessage()); context.assertIsSatisfied(); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplesWithTypePredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplesWithTypePredicateTest.java index 18d60a6fb3b58ccbc8960a3c56fca8ddd67e6bc1..55c47a9d3b780de1767fa4b386c90c0b619ddc98 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplesWithTypePredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/NewSamplesWithTypePredicateTest.java @@ -88,8 +88,9 @@ public class NewSamplesWithTypePredicateTest extends AuthorizationTestCase predicate.init(provider); Status status = predicate.evaluate(person, roles, new NewSamplesWithTypes(new SampleType(), Arrays - .asList(new NewSample(sampleIdentifier1.toString(), null, null, null), - new NewSample(sampleIdentifier2.toString(), null, null, null)))); + .asList(NewSample.createWithParent(sampleIdentifier1.toString(), null, + null, null), NewSample.createWithParent(sampleIdentifier2 + .toString(), null, null, null)))); assertEquals(false, status.isError()); context.assertIsSatisfied(); } @@ -116,8 +117,9 @@ public class NewSamplesWithTypePredicateTest extends AuthorizationTestCase predicate.init(provider); Status status = predicate.evaluate(person, roles, new NewSamplesWithTypes(new SampleType(), Arrays - .asList(new NewSample(sampleIdentifier1.toString(), null, null, null), - new NewSample(sampleIdentifier2.toString(), null, null, null)))); + .asList(NewSample.createWithParent(sampleIdentifier1.toString(), null, + null, null), NewSample.createWithParent(sampleIdentifier2 + .toString(), null, null, null)))); assertEquals(true, status.isError()); context.assertIsSatisfied(); } @@ -146,8 +148,9 @@ public class NewSamplesWithTypePredicateTest extends AuthorizationTestCase predicate.init(provider); Status status = predicate.evaluate(person, roles, new NewSamplesWithTypes(new SampleType(), Arrays - .asList(new NewSample(sampleIdentifier1.toString(), null, null, null), - new NewSample(sampleIdentifier2.toString(), null, null, null)))); + .asList(NewSample.createWithParent(sampleIdentifier1.toString(), null, + null, null), NewSample.createWithParent(sampleIdentifier2 + .toString(), null, null, null)))); assertEquals(true, status.isError()); context.assertIsSatisfied(); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java index dc0ffee8f8592efab6fbd9e22b0efec6cdfe61d0..6e11b24efa16ba9a9ba49872e2b518612da09a67 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java @@ -437,7 +437,7 @@ public final class GenericServerTest extends AbstractServerTestCase sample.setModificationDate(newModificationDate); final SampleUpdatesDTO updates = new SampleUpdatesDTO(sampleId, properties, null, attachments, version, null, null, - null); + null, null); context.checking(new Expectations() { { diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/BundleDataSetHelperRpc.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/BundleDataSetHelperRpc.java index 67a81ba60c39479ef8fd7aa4bd4f99e1e44467a6..9223893e7049562eea1c26161ab5f211914a0af9 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/BundleDataSetHelperRpc.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/BundleDataSetHelperRpc.java @@ -130,7 +130,7 @@ class BundleDataSetHelperRpc extends BundleDataSetHelper Sample parentSample = getOpenbisService().tryGetSampleWithExperiment(parentIdOrNull); sampleId = new SampleIdentifier(parentIdOrNull.getSpaceLevel(), sampleCode); sample = - new NewSample(sampleId.toString(), replicaSampleType, + NewSample.createWithParent(sampleId.toString(), replicaSampleType, parentIdOrNull.toString(), null); sample.setExperimentIdentifier(parentSample.getExperiment().getIdentifier()); } else if (experimentIdOrNull != null) @@ -140,7 +140,7 @@ class BundleDataSetHelperRpc extends BundleDataSetHelper new SpaceIdentifier(experimentIdOrNull.getDatabaseInstanceCode(), experimentIdOrNull.getSpaceCode()); sampleId = new SampleIdentifier(spaceId, sampleCode); - sample = new NewSample(sampleId.toString(), replicaSampleType, null, null); + sample = NewSample.createWithParent(sampleId.toString(), replicaSampleType, null, null); sample.setExperimentIdentifier(experimentIdOrNull.toString()); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java index 873097a3060bed4bcbe496012b128501b3e8dd9f..9200822ad05685d479cbe593e985682a43e14d99 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java @@ -56,22 +56,27 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtractorWithService { static final String MS_INJECTION_PROPERTIES_FILE = "ms-injection.properties"; + static final String DATA_SET_PROPERTIES_FILE = "data-set.properties"; static final String PROJECT_CODE_KEY = "PROJECT_CODE"; + static final String EXPERIMENT_CODE_KEY = "EXPERIMENT_CODE"; + static final String SAMPLE_CODE_KEY = "SAMPLE_CODE"; + static final String USER_KEY = "USER"; - + static final String DATA_SET_TYPE_KEY = "DATA_SET_TYPE"; + static final String FILE_TYPE_KEY = "FILE_TYPE"; + static final String PARENT_TYPE_KEY = "PARENT_TYPE"; - + static final String EXPERIMENT_TYPE_CODE = "MS_INJECT"; static final String SAMPLE_TYPE_CODE = "MS_INJECTION"; - public DataSetInfoExtractorForMSInjection(Properties properties) { this(ServiceProvider.getOpenBISService()); @@ -95,11 +100,13 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra ExperimentIdentifier experimentIdentifier = getExperimentIdentifier(sampleProperties); getOrCreateExperiment(experimentIdentifier); info.setExperimentIdentifier(experimentIdentifier); - long sampleID = registerOrUpdateSample(sampleIdentifier, experimentIdentifier, sampleProperties); - + long sampleID = + registerOrUpdateSample(sampleIdentifier, experimentIdentifier, sampleProperties); + Properties dataSetProperties = Util.loadPropertiesFile(incomingDataSetPath, DATA_SET_PROPERTIES_FILE); - String dataSetTypeCode = PropertyUtils.getMandatoryProperty(dataSetProperties, DATA_SET_TYPE_KEY); + String dataSetTypeCode = + PropertyUtils.getMandatoryProperty(dataSetProperties, DATA_SET_TYPE_KEY); String parentTypeOrNull = dataSetProperties.getProperty(PARENT_TYPE_KEY); dataSetProperties.remove(DATA_SET_TYPE_KEY); dataSetProperties.remove(FILE_TYPE_KEY); @@ -150,7 +157,7 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra Set<NewAttachment> emptySet = Collections.<NewAttachment> emptySet(); Date version = sample.getModificationDate(); service.updateSample(new SampleUpdatesDTO(sampleID, propertiesList, - experimentIdentifier, emptySet, version, sampleIdentifier, null, null)); + experimentIdentifier, emptySet, version, sampleIdentifier, null, null, null)); return sample.getId(); } }