From 740a8ca6938744acdb43bd5bda99b893af24abe7 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 15 Nov 2010 08:21:11 +0000 Subject: [PATCH] SE-312 introducing processDataSets in Proteomics Data API. Changes in MsInjectionCopier: target file name is just data set code SVN: 18676 --- .../server/plugins/MsInjectionCopier.java | 16 ++-------------- .../client/api/v1/IProteomicsDataApiFacade.java | 9 +++++---- .../client/api/v1/ProteomicsDataApiFacade.java | 6 ++++++ .../server/ProteomicsDataServiceInternal.java | 7 +++++++ .../ProteomicsDataServiceInternalLogger.java | 8 ++++++++ .../server/api/v1/ProteomicsDataService.java | 14 ++++++++++++++ .../api/v1/ProteomicsDataServiceLogger.java | 8 ++++++++ .../shared/IProteomicsDataServiceInternal.java | 10 ++++++++++ .../shared/api/v1/IProteomicsDataService.java | 11 +++++++++++ .../server/plugins/MsInjectionCopierTest.java | 5 ++--- .../api/v1/ProteomicsDataApiFacadeTest.java | 14 +++++++------- .../ProteomicsDataServiceInternalTest.java | 10 +++------- .../{ => api/v1}/ProteomicsDataServiceTest.java | 13 ++++++------- 13 files changed, 89 insertions(+), 42 deletions(-) rename rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/{ => api/v1}/ProteomicsDataServiceTest.java (97%) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopier.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopier.java index a99b0f51f6c..5d369568c3e 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopier.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopier.java @@ -279,9 +279,7 @@ class MsInjectionCopier implements Serializable, IPostRegistrationDatasetHandler /** * Copies specified data file/folder to destination specified in constructor. The name of the - * file/folder at the destination is defined as - * <code><sample code>_<data set type code></code> where sample code is provided by - * the parameter bindings (key: data set code). + * file/folder at the destination is defined by the data set code. */ public Status handle(File originalData, DataSetInformation dataSetInformation, Map<String, String> parameterBindings) @@ -292,7 +290,7 @@ class MsInjectionCopier implements Serializable, IPostRegistrationDatasetHandler } try { - String target = createTargetFolderName(dataSetInformation, parameterBindings); + String target = dataSetInformation.getDataSetCode(); File targetFolder = new File(destination, target); deleteTargetFolder(targetFolder); executor.copyDataSet(originalData, destination); @@ -305,16 +303,6 @@ class MsInjectionCopier implements Serializable, IPostRegistrationDatasetHandler } } - private String createTargetFolderName(DataSetInformation dataSetInformation, - Map<String, String> parameterBindings) - { - String dataSetTypeCode = dataSetInformation.getDataSetType().getCode(); - String dataSetCode = dataSetInformation.getDataSetCode(); - String sampleCode = parameterBindings.get(dataSetCode); - return (sampleCode == null ? SAMPLE_UNKNOWN : sampleCode) + "_" + dataSetCode + "_" - + dataSetTypeCode; - } - private void deleteTargetFolder(File targetFolder) { BooleanStatus targetExists = executor.exists(targetFolder); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/IProteomicsDataApiFacade.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/IProteomicsDataApiFacade.java index 000e372ca7c..54f85e6c406 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/IProteomicsDataApiFacade.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/IProteomicsDataApiFacade.java @@ -28,10 +28,7 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.MsInjection * * @author Franz-Josef Elmer */ - -// This interfaces replaces the IRawDataApiFacade. -@SuppressWarnings("deprecation") -public interface IProteomicsDataApiFacade extends IRawDataApiFacade +public interface IProteomicsDataApiFacade { /** * Return the session token for the logged-in user. @@ -53,8 +50,11 @@ public interface IProteomicsDataApiFacade extends IRawDataApiFacade * Processes the data sets of specified samples by the DSS processing plug-in of specified key * for the specified user. Only the most recent data sets of specified type are processed. */ + @Deprecated public void processingRawData(String userID, String dataSetProcessingKey, long[] rawDataSampleIDs, String dataSetType); + + public void processDataSets(String userID, String dataSetProcessingKey, List<String> dataSetCodes); /** * Returns all projects where the specified user has USER access rights. @@ -74,6 +74,7 @@ public interface IProteomicsDataApiFacade extends IRawDataApiFacade */ public void processSearchData(String userID, String dataSetProcessingKey, long[] searchExperimentIDs); + /** * Logs current user out. diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacade.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacade.java index a416d909f2e..0c830ef54e3 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacade.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacade.java @@ -71,6 +71,12 @@ class ProteomicsDataApiFacade implements IProteomicsDataApiFacade dataSetType); } + public void processDataSets(String userID, String dataSetProcessingKey, + List<String> dataSetCodes) + { + service.processDataSets(sessionToken, userID, dataSetProcessingKey, dataSetCodes); + } + public List<Project> listProjects(String userID) { Map<String, Set<Role>> namedRoleSets = generalInfoService.listNamedRoleSets(sessionToken); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternal.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternal.java index 588908834ee..c35d976d3ea 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternal.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternal.java @@ -146,6 +146,13 @@ public class ProteomicsDataServiceInternal extends AbstractServer<IProteomicsDat processDataSets(session, dataSetProcessingKey, dataSetCodes, parameterBindings); } + public void processDataSets(String sessionToken, String dataSetProcessingKey, + List<String> dataSetCodes) + { + Session session = getSession(sessionToken); + processDataSets(session, dataSetProcessingKey, dataSetCodes, new HashMap<String, String>()); + } + public List<Experiment> listSearchExperiments(String sessionToken) { checkSession(sessionToken); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalLogger.java index 62acc184618..e3461beb8e7 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalLogger.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalLogger.java @@ -55,6 +55,14 @@ class ProteomicsDataServiceInternalLogger extends AbstractServerLogger implement numberOfDataSets, dataSetType); } + public void processDataSets(String sessionToken, String dataSetProcessingKey, + List<String> dataSetCodes) + { + logAccess(sessionToken, "process_data_sets", + "DSS_PROCESSING_PLUGIN(%s) NUMBER_OF_DATA_SETS(%s)", dataSetProcessingKey, + dataSetCodes.size()); + } + public List<Experiment> listSearchExperiments(String sessionToken) { logAccess(sessionToken, "list_search_experiments"); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataService.java index 3f9451803c2..ada3557605b 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataService.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataService.java @@ -212,6 +212,20 @@ public class ProteomicsDataService extends AbstractServer<IProteomicsDataService } } + public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, + List<String> dataSetCodes) + { + checkSession(sessionToken); + SessionContextDTO session = login(userID); + try + { + service.processDataSets(session.getSessionToken(), dataSetProcessingKey, dataSetCodes); + } finally + { + service.logout(session.getSessionToken()); + } + } + public List<ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment> listSearchExperiments( String sessionToken, String userID) { diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceLogger.java index aa5c525fea4..9233d86fae9 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceLogger.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceLogger.java @@ -65,6 +65,14 @@ class ProteomicsDataServiceLogger extends AbstractServerLogger implements IProte userID, dataSetProcessingKey, numberOfDataSets, dataSetType); } + public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, + List<String> dataSetCodes) + { + logAccess(sessionToken, "process_data_sets", + "USER_ID(%s) DSS_PROCESSING_PLUGIN(%s) DATA_SETS(%s)", userID, + dataSetProcessingKey, dataSetCodes); + } + public List<Experiment> listSearchExperiments(String sessionToken, String userID) { logAccess(sessionToken, "list_search_experiments"); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IProteomicsDataServiceInternal.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IProteomicsDataServiceInternal.java index b707130cdc5..8cf0e0dfd8a 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IProteomicsDataServiceInternal.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/IProteomicsDataServiceInternal.java @@ -21,8 +21,10 @@ import java.util.List; import org.springframework.transaction.annotation.Transactional; import ch.systemsx.cisd.openbis.generic.shared.IServer; +import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.AuthorizationGuard; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.ReturnValueFilter; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.DataSetCodeCollectionPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.validator.ExperimentValidator; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; @@ -45,11 +47,19 @@ public interface IProteomicsDataServiceInternal extends IServer @ReturnValueFilter(validatorClass = RawDataSampleValidator.class) public List<MsInjectionSample> listRawDataSamples(String sessionToken); + @Deprecated @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_USER) public void processRawData(String sessionToken, String dataSetProcessingKey, long[] rawDataSampleIDs, String dataSetType); + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.SPACE_USER) + public void processDataSets( + String sessionToken, + String dataSetProcessingKey, + @AuthorizationGuard(guardClass = DataSetCodeCollectionPredicate.class) List<String> dataSetCodes); + @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_USER) @ReturnValueFilter(validatorClass = ExperimentValidator.class) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/api/v1/IProteomicsDataService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/api/v1/IProteomicsDataService.java index 65442c24b7e..036179253b7 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/api/v1/IProteomicsDataService.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/api/v1/IProteomicsDataService.java @@ -80,10 +80,21 @@ public interface IProteomicsDataService extends IRpcService * for the specified user. Implementations should check that the specified user is allowed to * read specified samples. */ + @Deprecated @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) public void processingRawData(String sessionToken, String userID, String dataSetProcessingKey, long[] rawDataSampleIDs, String dataSetType); + + /** + * Processes the specified data sets by the DSS processing plug-in of specified key for the + * specified user. Implementations should check that the specified user is allowed to read + * specified data sets. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) + public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, + List<String> dataSetCodes); /** * Returns all experiments of type <tt>MS_SEARCH</tt> which the specified user is allowed to diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopierTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopierTest.java index f2e977f2f66..b61e31f853c 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopierTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/phosphonetx/server/plugins/MsInjectionCopierTest.java @@ -56,7 +56,7 @@ public class MsInjectionCopierTest extends AbstractFileSystemTestCase private static final String SAMPLE_CODE = "my-sample"; private static final DataSetType DATA_SET_TYPE = new DataSetType("MY"); private static final String DATA_SET_CODE = "my-dataset-123"; - private static final String FOLDER_NAME = SAMPLE_CODE + "_" + DATA_SET_CODE + "_" + DATA_SET_TYPE.getCode(); + private static final String FOLDER_NAME = DATA_SET_CODE; private static final String DATA = "hello test"; private Mockery context; @@ -139,8 +139,7 @@ public class MsInjectionCopierTest extends AbstractFileSystemTestCase assertEquals(Status.OK, status); File copiedDataSet = - new File(destination, MsInjectionCopier.SAMPLE_UNKNOWN + "_" + DATA_SET_CODE + "_" - + DATA_SET_TYPE.getCode()); + new File(destination, DATA_SET_CODE); assertEquals(true, copiedDataSet.isDirectory()); context.assertIsSatisfied(); diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacadeTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacadeTest.java index 331053b5ece..bdfb5fd6551 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacadeTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/api/v1/ProteomicsDataApiFacadeTest.java @@ -122,23 +122,23 @@ public class ProteomicsDataApiFacadeTest extends AssertJUnit assertSame(result, facade.listRawDataSamples("user1")); context.assertIsSatisfied(); } - + @Test - public void testProcessingRawData() + public void testProcessDataSets() { context.checking(new Expectations() { { - one(proteomicsDataService).processingRawData(SESSION_TOKEN, "user1", "key", - new long[42], "type"); + one(proteomicsDataService).processDataSets(SESSION_TOKEN, "user1", "key", + Arrays.asList("ds1", "ds2")); } }); - facade.processingRawData("user1", "key", new long[42], "type"); - + facade.processDataSets("user1", "key", Arrays.asList("ds1", "ds2")); + context.assertIsSatisfied(); } - + @Test public void testListProjectsButNoUserRoles() { diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalTest.java index 56c4dae0fc6..3d17dccd4e3 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceInternalTest.java @@ -126,17 +126,13 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase } @Test - public void testCopyRawData() + public void testProcessDataSets() { prepareGetSession(); - prepareListRawDataSamples(1L, 2L, 3L, 42L); - final long[] ids = new long[] - { 2 }; HashMap<String, String> parameterBindings = new HashMap<String, String>(); - parameterBindings.put("ds-21-child", "s-2"); - prepareProcessDataSets(SESSION, parameterBindings, "ds-21-child"); + prepareProcessDataSets(SESSION, parameterBindings, "ds1", "ds2"); - service.processRawData(SESSION_TOKEN, COPY_PROCESSING_KEY, ids, "dt-0"); + service.processDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, Arrays.asList("ds1", "ds2")); context.assertIsSatisfied(); } diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java similarity index 97% rename from rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceTest.java rename to rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java index be6e67f4404..6b87f9e1460 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/ProteomicsDataServiceTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package ch.systemsx.cisd.openbis.plugin.phosphonetx.server; +package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.api.v1; import java.io.Serializable; import java.util.ArrayList; @@ -261,14 +261,14 @@ public class ProteomicsDataServiceTest extends AbstractServerTestCase } @Test - public void testCopyRawDataForUnknownUser() + public void testProcessDataSetsForUnknownUser() { prepareGetSession(); prepareLoginLogout(null); try { - service.processingRawData(SESSION_TOKEN, "abc", null, new long[0], null); + service.processDataSets(SESSION_TOKEN, "abc", null, Arrays.asList("ds1")); fail("UserFailureException expected"); } catch (UserFailureException ex) { @@ -279,19 +279,18 @@ public class ProteomicsDataServiceTest extends AbstractServerTestCase } @Test - public void testCopyRawData() + public void testProcessDataSets() { prepareGetSession(); prepareLoginLogout(session2); - final long[] ids = new long[] {42}; context.checking(new Expectations() { { - one(internalService).processRawData(session2.getSessionToken(), "dsp1", ids, "my-type"); + one(internalService).processDataSets(session2.getSessionToken(), "dsp1", Arrays.asList("ds1")); } }); - service.processingRawData(SESSION_TOKEN, "abc", "dsp1", ids, "my-type"); + service.processDataSets(SESSION_TOKEN, "abc", "dsp1", Arrays.asList("ds1")); context.assertIsSatisfied(); } -- GitLab