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