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 bd46add69f1a533a6a5c49f30d9d1a64bbf7a585..6285970c71ffbe0b577bbea4dd8a453145f07ac8 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 9cce33786abef4b251784bd99209683c4de27fdf..a0cd9be82cbe452db9305ec52649b87f02fc8667 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 40e11583f407b801c88fa03c4665917563ef52b0..ba1157aa5308f1abcec0f882e10ffe3df9c4c66e 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 dfc55412ceed547c5ac38095b4dd92ec100d8b37..4bfb9cf3bb44e58e88f847892cd563dc4baadc5a 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 40e11583f407b801c88fa03c4665917563ef52b0..ba1157aa5308f1abcec0f882e10ffe3df9c4c66e 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