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 a99b0f51f6cf10277aac14cfb3798230589ba0c8..5d369568c3ef4f7129f7b225e4ed7d3a7b649b8d 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 000e372ca7cdd5d87c401c9273e2b642b1872081..54f85e6c40608a16ccdaf8963ddbb9b4bb114a32 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 a416d909f2ec9992c3067d598b84418ac5937aad..0c830ef54e3d11effb7d9aaa81a4789dc0f2ab95 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 588908834eec33ec4efff0f1eea0f5d6ff86083d..c35d976d3ea9ed5aed690bf4ec658590786ae752 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 62acc184618a619fd889db3cb78417b45957f4b5..e3461beb8e77dfa59e1f92558cfbe6f9ffb1fbd9 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 3f9451803c2e6959ca74894c421bab56556d4ef6..ada3557605b9e7d5b3ded0ca1d36432808d7d1a4 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 aa5c525fea42e24db2c7ba95481af7d949e3169d..9233d86fae9432a1709790c87e1e9e549b0cad39 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 b707130cdc5549e0a9669c507132bbd7972b08e2..8cf0e0dfd8a2f1bffa98ea7877bdb407c49c0e18 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 65442c24b7e9b5239ce6d77b3cc06e7d5117d700..036179253b711a1f2102f320c3d9c2f894a6ed98 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 f2e977f2f6642d570c64ddf9723a483fbd02c9f3..b61e31f853c101e60ee33eaa48ed473b1360c12b 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 331053b5ece56f61eaf448cf79e25bcbaf1a3bd3..bdfb5fd6551bf0ddb72d3d0dbf99e3e1e66a5f5d 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 56c4dae0fc611df2e195d8e6aae3197d9fea3656..3d17dccd4e36f19511d40080ecd7263958681d44 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 be6e67f4404cac7c2b6c9eb2307971e69806f55b..6b87f9e14609b1982050c330fba6997583ee76a2 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(); }