From 52adf9929b0c6b1462da4a42cf0c23daf3bd72c0 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 12 Oct 2009 08:24:09 +0000 Subject: [PATCH] SE-447 New method: IETLLIMSService.registerSample() implemented and unit tested. SVN: 12900 --- .../openbis/generic/server/ETLService.java | 13 +++++++++++ .../generic/server/ETLServiceLogger.java | 8 +++++++ .../generic/shared/IETLLIMSService.java | 11 +++++++++ .../generic/server/ETLServiceTest.java | 23 +++++++++++++++++++ .../shared/IETLLIMSService.java.expected | 11 +++++++++ 5 files changed, 66 insertions(+) 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 427b0b0f791..3d6a8257353 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 @@ -48,6 +48,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SourceType; @@ -349,6 +350,18 @@ public class ETLService extends AbstractServer<IETLService> implements IETLServi new SamplePropertyPE[0]), new HashMap<PropertyTypePE, PropertyType>()); } + public void registerSample(String sessionToken, NewSample newSample) + throws UserFailureException + { + assert sessionToken != null : "Unspecified session token."; + assert newSample != null : "Unspecified new sample."; + + final Session session = getSession(sessionToken); + final ISampleBO sampleBO = boFactory.createSampleBO(session); + sampleBO.define(newSample); + sampleBO.save(); + } + public void registerDataSet(String sessionToken, SampleIdentifier sampleIdentifier, NewExternalData externalData) throws UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java index 4dc3a1127f6..9d461eeef2d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java @@ -26,6 +26,7 @@ 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.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.DatastoreServiceDescriptions; @@ -77,6 +78,13 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic .getProcessingServiceDescriptions()); } + public void registerSample(String sessionToken, NewSample newSample) + throws UserFailureException + { + logTracking(sessionToken, "register_sample", "SAMPLE_TYPE(%s) SAMPLE(%S)", newSample + .getSampleType(), newSample.getIdentifier()); + } + public void registerDataSet(String sessionToken, SampleIdentifier sampleIdentifier, NewExternalData externalData) throws UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java index e3806085f6e..f85a570cc33 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAll import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.GroupIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.ListSampleCriteriaPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.ListSamplesByPropertyPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletedDataSet; @@ -35,6 +36,7 @@ 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.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; @@ -119,6 +121,15 @@ public interface IETLLIMSService extends IServer, ISessionProvider @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier) throws UserFailureException; + /** + * Registers a new sample. + */ + @Transactional + @RolesAllowed(RoleSet.ETL_SERVER) + public void registerSample(final String sessionToken, + @AuthorizationGuard(guardClass = NewSamplePredicate.class) final NewSample newSample) + throws UserFailureException; + /** * Registers the specified data connected to a sample. * 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 aed47e26945..28efd45934d 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 @@ -40,6 +40,7 @@ import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; 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.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SourceType; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; @@ -406,6 +407,28 @@ public class ETLServiceTest extends AbstractServerTestCase return propertyPE; } + @Test + public void testRegisterSample() + { + prepareGetSession(); + final NewSample sample = new NewSample(); + context.checking(new Expectations() + { + { + one(boFactory).createSampleBO(SESSION); + will(returnValue(sampleBO)); + + one(sampleBO).define(sample); + one(sampleBO).save(); + + } + }); + + createService().registerSample(SESSION_TOKEN, sample); + + context.assertIsSatisfied(); + } + @Test public void testRegisterDataSetForUnknownExperiment() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected index e3806085f6e..f85a570cc33 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAll import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.GroupIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.ListSampleCriteriaPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.ListSamplesByPropertyPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletedDataSet; @@ -35,6 +36,7 @@ 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.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; @@ -119,6 +121,15 @@ public interface IETLLIMSService extends IServer, ISessionProvider @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier) throws UserFailureException; + /** + * Registers a new sample. + */ + @Transactional + @RolesAllowed(RoleSet.ETL_SERVER) + public void registerSample(final String sessionToken, + @AuthorizationGuard(guardClass = NewSamplePredicate.class) final NewSample newSample) + throws UserFailureException; + /** * Registers the specified data connected to a sample. * -- GitLab