From 975af74f9ddcd4fafee1f371a48b69d5c9ba3f88 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Thu, 17 Feb 2011 20:50:50 +0000 Subject: [PATCH] minor: added a method IETLLIMSService.createPermId to be used when generating permanent IDs for new Samples/Experiments etc. Up until now we have exploited the method "createNewDataSetCode" for this purpose. SVN: 20058 --- .../api/v1/impl/AbstractTransactionState.java | 10 ++------- .../server/EncapsulatedOpenBISService.java | 5 +++++ .../shared/IEncapsulatedOpenBISService.java | 6 +++++ .../JythonTopLevelDataSetRegistratorTest.java | 6 ++--- .../openbis/generic/server/ETLService.java | 5 +++++ .../generic/server/ETLServiceLogger.java | 6 +++++ .../generic/shared/IETLLIMSService.java | 7 ++++++ .../generic/server/ETLServiceTest.java | 22 +++++++++++++++++++ .../shared/IETLLIMSService.java.expected | 7 ++++++ 9 files changed, 63 insertions(+), 11 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java index f6e4b15f00e..80eb7ed1f12 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java @@ -180,7 +180,7 @@ abstract class AbstractTransactionState<T extends DataSetInformation> public ISample createNewSample(String sampleIdentifierString, String sampleTypeCode) { - String permId = createPermId(); + String permId = openBisService.createPermId(); Sample sample = new Sample(sampleIdentifierString, permId); sample.setSampleType(sampleTypeCode); samplesToBeRegistered.add(sample); @@ -195,7 +195,7 @@ abstract class AbstractTransactionState<T extends DataSetInformation> public IExperiment createNewExperiment(String experimentIdentifierString, String experimentTypeCode) { - String permId = createPermId(); + String permId = openBisService.createPermId(); Experiment experiment = new Experiment(experimentIdentifierString, permId); experiment.setExperimentType(experimentTypeCode); experimentsToBeRegistered.add(experiment); @@ -306,12 +306,6 @@ abstract class AbstractTransactionState<T extends DataSetInformation> registeredDataSets.clear(); } - private String createPermId() - { - String permId = openBisService.createDataSetCode(); - return permId; - } - /** * Execute the command and add it to the list of commands that have been executed. */ diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java index 224f34e18f2..db9521ba1b5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java @@ -330,6 +330,11 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer return service.createDataSetCode(session.getToken()); } + public final String createPermId() + { + return service.createPermId(session.getToken()); + } + public long drawANewUniqueID() { return service.drawANewUniqueID(session.getToken()); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java index 1888a019106..eaba07eab1d 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java @@ -253,6 +253,12 @@ public interface IEncapsulatedOpenBISService @ManagedAuthentication public String createDataSetCode(); + /** + * Creates and returns a new permanent ID that can be used to identify experiments, samples etc. + */ + @ManagedAuthentication + public String createPermId(); + /** * Creates a new unique ID which can be used to create codes which are guaranteed to be unique. */ diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java index 50adb2a9bd3..ff95ec5178a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java @@ -441,7 +441,7 @@ public class JythonTopLevelDataSetRegistratorTest extends AbstractFileSystemTest one(openBisService).createDataSetCode(); will(returnValue(DATA_SET_CODE)); - one(openBisService).createDataSetCode(); + one(openBisService).createPermId(); will(returnValue(EXPERIMENT_PERM_ID)); one(dataSetValidator).assertValidDataSet(DATA_SET_TYPE, @@ -499,10 +499,10 @@ public class JythonTopLevelDataSetRegistratorTest extends AbstractFileSystemTest one(openBisService).createDataSetCode(); will(returnValue(DATA_SET_CODE)); - one(openBisService).createDataSetCode(); + one(openBisService).createPermId(); will(returnValue(EXPERIMENT_PERM_ID)); - one(openBisService).createDataSetCode(); + one(openBisService).createPermId(); will(returnValue(SAMPLE_PERM_ID)); one(dataSetValidator).assertValidDataSet(DATA_SET_TYPE, 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 dec95125372..b4e820c8508 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 @@ -310,6 +310,11 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET } public String createDataSetCode(String sessionToken) throws UserFailureException + { + return createPermId(sessionToken); + } + + public String createPermId(String sessionToken) throws UserFailureException { checkSession(sessionToken); // throws exception if invalid sessionToken return daoFactory.getPermIdDAO().createPermId(); 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 eae0f6ce402..3966cde76fe 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 @@ -76,6 +76,12 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic return null; } + public String createPermId(String sessionToken) throws UserFailureException + { + logTracking(sessionToken, "createPermId", ""); + return null; + } + public long drawANewUniqueID(String sessionToken) throws UserFailureException { logTracking(sessionToken, "drawANewUniqueID", ""); 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 39b5a6c455a..70522d379a2 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 @@ -380,6 +380,13 @@ public interface IETLLIMSService extends IServer, ISessionProvider @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public String createDataSetCode(final String sessionToken) throws UserFailureException; + /** + * Create and return a new permanent id that can be used to identify samples, experiments etc. + */ + @Transactional + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public String createPermId(final String sessionToken) throws UserFailureException; + /** * Draw a new unique ID. The returned value can be used as a part of a code for samples, * experiments etc. which is guaranteed to be unique. 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 06a17b55e5e..4a122cb81ff 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 @@ -332,6 +332,28 @@ public class ETLServiceTest extends AbstractServerTestCase context.assertIsSatisfied(); } + @Test + public void testPermId() + { + context.checking(new Expectations() + { + { + one(sessionManager).getSession(SESSION_TOKEN); + + one(daoFactory).getPermIdDAO(); + will(returnValue(permIdDAO)); + + one(permIdDAO).createPermId(); + will(returnValue("permId")); + } + }); + + String dataSetCode = createService().createPermId(SESSION_TOKEN); + + assertEquals("permId", dataSetCode); + context.assertIsSatisfied(); + } + @Test public void testTryGetSampleWithExperimentForAnUnknownSample() { 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 39b5a6c455a..70522d379a2 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 @@ -380,6 +380,13 @@ public interface IETLLIMSService extends IServer, ISessionProvider @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public String createDataSetCode(final String sessionToken) throws UserFailureException; + /** + * Create and return a new permanent id that can be used to identify samples, experiments etc. + */ + @Transactional + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public String createPermId(final String sessionToken) throws UserFailureException; + /** * Draw a new unique ID. The returned value can be used as a part of a code for samples, * experiments etc. which is guaranteed to be unique. -- GitLab