From 15acaad5d7a8b64c5204fbe2cdf619d8259859c5 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 24 Jun 2010 13:59:45 +0000
Subject: [PATCH] LMS-1588 extend ETLService by method
 tryToGetSampleIdentifier()

SVN: 16717
---
 .../openbis/generic/server/ETLService.java     |  8 ++++++++
 .../generic/server/ETLServiceLogger.java       |  7 +++++++
 .../generic/shared/IETLLIMSService.java        | 10 ++++++++++
 .../openbis/generic/server/ETLServiceTest.java | 18 ++++++++++++++++++
 .../shared/IETLLIMSService.java.expected       | 10 ++++++++++
 5 files changed, 53 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 bd46add69f1..6285970c71f 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
@@ -341,6 +341,14 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET
         return SampleTranslator.translate(sample, session.getBaseIndexURL());
     }
 
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException
+    {
+        assert sessionToken != null : "Unspecified session token.";
+        assert samplePermID != null : "Unspecified sample perm ID.";
+        return daoFactory.getSampleDAO().tryToFindByPermID(samplePermID).getSampleIdentifier();
+    }
+
     private ExperimentPE tryLoadExperimentBySampleIdentifier(final Session session,
             SampleIdentifier sampleIdentifier)
     {
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 9cce33786ab..a0cd9be82cb 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
@@ -152,6 +152,13 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic
         return null;
     }
 
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException
+    {
+        logAccess(sessionToken, "tryToGetSampleIdentifier", "SAMPLE(%s)", samplePermID);
+        return null;
+    }
+
     public ExperimentType getExperimentType(String sessionToken, String experimentTypeCode)
             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 40e11583f40..ba1157aa530 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
@@ -117,6 +117,16 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             final String sessionToken,
             @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier)
             throws UserFailureException;
+    
+    /**
+     * Tries to get the identifier of sample with specified permanent ID.
+     * 
+     * @return <code>null</code> if nothing found.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleSet.ETL_SERVER)
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException;
 
     /**
      * Returns the ExperimentType together with assigned property types for specified experiment
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 dfc55412cee..4bfb9cf3bb4 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
@@ -307,6 +307,24 @@ public class ETLServiceTest extends AbstractServerTestCase
         context.assertIsSatisfied();
     }
 
+    @Test
+    public void testTryToGetSampleIdentifier()
+    {
+        context.checking(new Expectations()
+            {
+                {
+                    one(sampleDAO).tryToFindByPermID("abc");
+                    SamplePE sample = new SamplePE();
+                    sample.setCode("s42");
+                    will(returnValue(sample));
+                }
+            });
+        
+        SampleIdentifier identifier = createService().tryToGetSampleIdentifier(SESSION_TOKEN, "abc");
+        
+        assertEquals("s42", identifier.toString());
+        context.assertIsSatisfied();
+    }
     @Test
     public void testGetSampleType()
     {
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 40e11583f40..ba1157aa530 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
@@ -117,6 +117,16 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             final String sessionToken,
             @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier)
             throws UserFailureException;
+    
+    /**
+     * Tries to get the identifier of sample with specified permanent ID.
+     * 
+     * @return <code>null</code> if nothing found.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleSet.ETL_SERVER)
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException;
 
     /**
      * Returns the ExperimentType together with assigned property types for specified experiment
-- 
GitLab