From a78570d135415f1b601895d3aaff2466a6409be3 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 23 Nov 2010 16:25:14 +0000
Subject: [PATCH] SE-316 extend API with new method and deprecate old ones.

SVN: 18888
---
 .../api/v1/IProteomicsDataApiFacade.java      | 20 ++++++-
 .../api/v1/ProteomicsDataApiFacade.java       | 12 +++++
 .../server/ProteomicsDataServiceInternal.java | 53 +++++++++----------
 .../ProteomicsDataServiceInternalLogger.java  | 14 ++---
 .../server/api/v1/ProteomicsDataService.java  | 22 ++++++--
 .../api/v1/ProteomicsDataServiceLogger.java   | 16 ++++++
 .../IProteomicsDataServiceInternal.java       |  6 +--
 .../shared/api/v1/IProteomicsDataService.java | 19 +++++++
 .../ProteomicsDataServiceInternalTest.java    | 37 +++++++------
 .../api/v1/ProteomicsDataServiceTest.java     |  5 +-
 10 files changed, 146 insertions(+), 58 deletions(-)

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 5b0c46c2cde..c3317ebb5bd 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
@@ -18,7 +18,11 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.api.v1;
 
 import java.util.List;
 
+import org.springframework.transaction.annotation.Transactional;
+
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project;
+import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
 import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.DataStoreServerProcessingPluginInfo;
 import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment;
 import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.MsInjectionDataInfo;
@@ -70,17 +74,31 @@ public interface IProteomicsDataApiFacade
      * Returns all experiments of type <tt>MS_SEARCH</tt> which the specified user is allowed to
      * read.
      */
+    @Deprecated
     public List<Experiment> listSearchExperiments(String userID);
 
+    /**
+     * Returns all experiments of specified type which the specified user is allowed to read.
+     */
+    public List<Experiment> listSearchExperiments(String sessionToken, String userID, String experimentTypeCode);
+    
     /**
      * Processes the data sets of specified experiments of type <tt>MS_SEARCH</tt> by the DSS
      * processing plug-in of specified key for the specified user. It will be checked if the
      * experiments are of search experiments and if the user has USER access rights.
      */
+    @Deprecated
     public void processSearchData(String userID, String dataSetProcessingKey,
             long[] searchExperimentIDs);
     
-
+    /**
+     * Processes the data sets of specified experiments by the DSS
+     * processing plug-in of specified key for the specified user. It will be checked if the
+     * experiments are of specified type and if the user has USER access rights.
+     */
+    public void processProteinResultDataSets(String sessionToken, String userID,
+            String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs);
+    
     /**
      * 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 0c830ef54e3..f3b2a30ce23 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
@@ -110,12 +110,24 @@ class ProteomicsDataApiFacade implements IProteomicsDataApiFacade
         return service.listSearchExperiments(sessionToken, userID);
     }
 
+    public List<Experiment> listSearchExperiments(String sessionToken, String userID,
+            String experimentTypeCode)
+    {
+        return service.listSearchExperiments(sessionToken, userID, experimentTypeCode);
+    }
+
     public void processSearchData(String userID, String dataSetProcessingKey,
             long[] searchExperimentIDs)
     {
         service.processSearchData(sessionToken, userID, dataSetProcessingKey, searchExperimentIDs);
     }
 
+    public void processProteinResultDataSets(String sessionToken, String userID,
+            String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs)
+    {
+        service.processProteinResultDataSets(sessionToken, userID, dataSetProcessingKey, experimentTypeCode, experimentIDs);
+    }
+
     public void logout()
     {
         generalInfoService.logout(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 c35d976d3ea..2627bf740c0 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
@@ -27,6 +27,7 @@ import java.util.Set;
 import ch.rinn.restrictions.Private;
 import ch.systemsx.cisd.authentication.ISessionManager;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
+import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.spring.IInvocationLoggerContext;
 import ch.systemsx.cisd.openbis.generic.server.AbstractServer;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory;
@@ -65,8 +66,6 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample;
 public class ProteomicsDataServiceInternal extends AbstractServer<IProteomicsDataServiceInternal> implements
         IProteomicsDataServiceInternal
 {
-    @Private static final String SEARCH_EXPERIMENT_TYPE = "MS_SEARCH";
-
     @Private
     static final String SPACE_CODE = "MS_DATA";
 
@@ -153,31 +152,43 @@ public class ProteomicsDataServiceInternal extends AbstractServer<IProteomicsDat
         processDataSets(session, dataSetProcessingKey, dataSetCodes, new HashMap<String, String>());
     }
 
-    public List<Experiment> listSearchExperiments(String sessionToken)
+    public List<Experiment> listSearchExperiments(String sessionToken, String experimentTypeCode)
     {
         checkSession(sessionToken);
         
-        return listSearchExperiments();
+        IDAOFactory daoFactory = getDAOFactory();
+        IEntityTypeDAO entityTypeDAO = daoFactory.getEntityTypeDAO(EntityKind.EXPERIMENT);
+        ExperimentTypePE type =
+                (ExperimentTypePE) entityTypeDAO.tryToFindEntityTypeByCode(experimentTypeCode);
+        List<ExperimentPE> experiments =
+                daoFactory.getExperimentDAO().listExperimentsWithProperties(type, null);
+        return ExperimentTranslator.translate(experiments, "",
+                ExperimentTranslator.LoadableFields.PROPERTIES);
     }
 
-    public void processSearchData(String sessionToken, String dataSetProcessingKey,
-            long[] searchExperimentIDs)
+    public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey,
+            String experimentType, long[] searchExperimentIDs)
     {
         Session session = getSession(sessionToken);
         PersonPE person = session.tryGetPerson();
-
-        Set<Long> ids = asSet(searchExperimentIDs);
+        
         List<String> dataSetCodes = new ArrayList<String>();
-        List<Experiment> experiments = listSearchExperiments();
-        IExternalDataDAO dataSetDAO = getDAOFactory().getExternalDataDAO();
         IExperimentDAO experimentDAO = getDAOFactory().getExperimentDAO();
-        for (Experiment experiment : experiments)
+        IExternalDataDAO dataSetDAO = getDAOFactory().getExternalDataDAO();
+        for (long experimentID : searchExperimentIDs)
         {
-            if (EXPERIMENT_VALIDATOR.isValid(person, experiment)
-                    && ids.contains(experiment.getId()))
+            ExperimentPE experiment = experimentDAO.tryGetByTechId(new TechId(experimentID));
+            String actualExperimentTypeCode = experiment.getExperimentType().getCode();
+            if (actualExperimentTypeCode.equals(experimentType) == false)
             {
-                ExperimentPE exp = experimentDAO.tryGetByTechId(new TechId(experiment.getId()));
-                List<ExternalDataPE> dataSets = dataSetDAO.listExternalData(exp);
+                throw new UserFailureException("Experiment with technical id " + experimentID
+                        + " [" + experiment.getIdentifier() + "] is not of type " + experimentType
+                        + " but of type " + actualExperimentTypeCode + ".");
+            }
+            Experiment translatedExperiment = ExperimentTranslator.translate(experiment, "");
+            if (EXPERIMENT_VALIDATOR.isValid(person, translatedExperiment))
+            {
+                List<ExternalDataPE> dataSets = dataSetDAO.listExternalData(experiment);
                 for (ExternalDataPE dataSet : dataSets)
                 {
                     dataSetCodes.add(dataSet.getCode());
@@ -188,18 +199,6 @@ public class ProteomicsDataServiceInternal extends AbstractServer<IProteomicsDat
         processDataSets(session, dataSetProcessingKey, dataSetCodes, new HashMap<String, String>());
     }
 
-    private List<Experiment> listSearchExperiments()
-    {
-        IDAOFactory daoFactory = getDAOFactory();
-        IEntityTypeDAO entityTypeDAO = daoFactory.getEntityTypeDAO(EntityKind.EXPERIMENT);
-        ExperimentTypePE type =
-                (ExperimentTypePE) entityTypeDAO.tryToFindEntityTypeByCode(SEARCH_EXPERIMENT_TYPE);
-        List<ExperimentPE> experiments =
-                daoFactory.getExperimentDAO().listExperimentsWithProperties(type, null);
-        return ExperimentTranslator.translate(experiments, "",
-                ExperimentTranslator.LoadableFields.PROPERTIES);
-    }
-
     private List<MsInjectionSample> loadAllRawDataSamples(Session session)
     {
         List<Sample> samples = loadAccessableSamples(session);
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 914157c4985..80fcc8c6c32 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
@@ -63,17 +63,19 @@ class ProteomicsDataServiceInternalLogger extends AbstractServerLogger implement
                 dataSetCodes.size());
     }
 
-    public List<Experiment> listSearchExperiments(String sessionToken)
+    public List<Experiment> listSearchExperiments(String sessionToken, String experimentTypeCode)
     {
-        logAccess(sessionToken, "list_search_experiments");
+        logAccess(sessionToken, "list_search_experiments", "EXPERIMENT_TYPE(%s)", experimentTypeCode);
         return null;
     }
 
-    public void processSearchData(String sessionToken, String dataSetProcessingKey,
-            long[] searchExperimentIDs)
+    public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey,
+            String experimentTypeCode, long[] searchExperimentIDs)
     {
-        int numberOfDataSets = searchExperimentIDs == null ? 0 : searchExperimentIDs.length;
-        logAccess(sessionToken, "copy_search_data", "NUMBER_OF_DATA_SETS(%s)", numberOfDataSets);
+        int experimentCount = searchExperimentIDs == null ? 0 : searchExperimentIDs.length;
+        logAccess(sessionToken, "process_protein_result_data_sets",
+                "DSS_PROCESSING_PLUGIN(%s) EXPERIMENT_TYPE(%s) NUMBER_OF_EXPERIMENTS(%s)",
+                dataSetProcessingKey, experimentTypeCode, experimentCount);
     }
 
 }
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 ada3557605b..e01051d6a90 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
@@ -23,8 +23,8 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import javax.annotation.Resource;
 
@@ -64,6 +64,7 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample;
 @Component(Constants.PROTEOMICS_DATA_SERVICE)
 public class ProteomicsDataService extends AbstractServer<IProteomicsDataService> implements IProteomicsDataService
 {
+    private static final String MS_SEARCH = "MS_SEARCH";
     @Resource(name = Constants.PROTEOMICS_DATA_SERVICE_INTERNAL)
     private IProteomicsDataServiceInternal service;
 
@@ -228,12 +229,18 @@ public class ProteomicsDataService extends AbstractServer<IProteomicsDataService
 
     public List<ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment> listSearchExperiments(
             String sessionToken, String userID)
+    {
+        return listSearchExperiments(sessionToken, userID, MS_SEARCH);
+    }
+
+    public List<ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment> listSearchExperiments(
+            String sessionToken, String userID, String experimentTypeCode)
     {
         checkSession(sessionToken);
         SessionContextDTO session = login(userID);
         try
         {
-            List<Experiment> experiments = service.listSearchExperiments(session.getSessionToken());
+            List<Experiment> experiments = service.listSearchExperiments(session.getSessionToken(), experimentTypeCode);
             List<ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment> result =
                     new ArrayList<ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.api.v1.dto.Experiment>();
             for (Experiment experiment : experiments)
@@ -265,13 +272,20 @@ public class ProteomicsDataService extends AbstractServer<IProteomicsDataService
 
     public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey,
             long[] searchExperimentIDs)
+    {
+        processProteinResultDataSets(sessionToken, userID, dataSetProcessingKey, MS_SEARCH,
+                searchExperimentIDs);
+    }
+    
+    public void processProteinResultDataSets(String sessionToken, String userID,
+            String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs)
     {
         checkSession(sessionToken);
         SessionContextDTO session = login(userID);
         try
         {
-            service.processSearchData(session.getSessionToken(), dataSetProcessingKey,
-                    searchExperimentIDs);
+            service.processProteinResultDataSets(session.getSessionToken(), dataSetProcessingKey, experimentTypeCode,
+                    experimentIDs);
         } finally
         {
             service.logout(session.getSessionToken());
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 eb6ef432557..bb22a28bf97 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
@@ -79,6 +79,13 @@ class ProteomicsDataServiceLogger extends AbstractServerLogger implements IProte
         return null;
     }
 
+    public List<Experiment> listSearchExperiments(String sessionToken, String userID,
+            String experimentTypeCode)
+    {
+        logAccess(sessionToken, "list_search_experiments", "EXPERIMENT_TYPE(%s)", experimentTypeCode);
+        return null;
+    }
+
     public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey,
             long[] searchExperimentIDs)
     {
@@ -86,6 +93,15 @@ class ProteomicsDataServiceLogger extends AbstractServerLogger implements IProte
         logAccess(sessionToken, "copy_search_data", "NUMBER_OF_DATA_SETS(%s)", numberOfDataSets);
     }
 
+    public void processProteinResultDataSets(String sessionToken, String userID,
+            String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs)
+    {
+        int experimentCount = experimentIDs == null ? 0 : experimentIDs.length;
+        logAccess(sessionToken, "process_protein_result_data_sets",
+                "DSS_PROCESSING_PLUGIN(%s) EXPERIMENT_TYPE(%s) NUMBER_OF_EXPERIMENTS(%s)",
+                dataSetProcessingKey, experimentTypeCode, experimentCount);
+    }
+
     public int getMajorVersion()
     {
         return 1;
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 8cf0e0dfd8a..e9917e1a3ba 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
@@ -63,11 +63,11 @@ public interface IProteomicsDataServiceInternal extends IServer
     @Transactional(readOnly = true)
     @RolesAllowed(RoleWithHierarchy.SPACE_USER)
     @ReturnValueFilter(validatorClass = ExperimentValidator.class)
-    public List<Experiment> listSearchExperiments(String sessionToken);
+    public List<Experiment> listSearchExperiments(String sessionToken, String experimentTypeCode);
     
     @Transactional(readOnly = true)
     @RolesAllowed(RoleWithHierarchy.SPACE_USER)
-    public void processSearchData(String sessionToken, String dataSetProcessingKey,
-            long[] searchExperimentIDs);
+    public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey,
+            String experimentTypeCode, long[] searchExperimentIDs);
     
 }
\ No newline at end of file
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 036179253b7..1197b137e3c 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
@@ -100,18 +100,37 @@ public interface IProteomicsDataService extends IRpcService
      * Returns all experiments of type <tt>MS_SEARCH</tt> which the specified user is allowed to
      * read.
      */
+    @Deprecated
     @Transactional(readOnly = true)
     @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
     public List<Experiment> listSearchExperiments(String sessionToken, String userID);
+
+    /**
+     * Returns all experiments of specified type which the specified user is allowed to read.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
+    public List<Experiment> listSearchExperiments(String sessionToken, String userID, String experimentTypeCode);
     
     /**
      * Processes the data sets of specified experiments of type <tt>MS_SEARCH</tt> by the DSS
      * processing plug-in of specified key for the specified user. It will be checked if the
      * experiments are of search experiments and if the user is allowed to read them.
      */
+    @Deprecated
     @Transactional(readOnly = true)
     @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
     public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey,
             long[] searchExperimentIDs);
+    
+    /**
+     * Processes the data sets of specified experiments by the DSS
+     * processing plug-in of specified key for the specified user. It will be checked if the
+     * experiments are of specified type and if the user is allowed to read them.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
+    public void processProteinResultDataSets(String sessionToken, String userID,
+            String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs);
 
 }
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 3d17dccd4e3..71bec3a662c 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
@@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server;
 import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind.PROCESSING;
 import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind.QUERIES;
 import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.ProteomicsDataServiceInternal.RAW_DATA_SAMPLE_TYPE;
-import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.ProteomicsDataServiceInternal.SEARCH_EXPERIMENT_TYPE;
 import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.ProteomicsDataServiceInternal.SPACE_CODE;
 
 import java.util.ArrayList;
@@ -74,8 +73,8 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample;
 public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
 {
     private static final String GROUP_CODE = "g";
-
     private static final String COPY_PROCESSING_KEY = "copy-data-sets";
+    private static final String EXPERIMENT_TYPE = "EXPE";
 
     private IProteomicsDataServiceInternal service;
 
@@ -97,7 +96,7 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
         sampleLoader = context.mock(ISampleLoader.class);
         service = new ProteomicsDataServiceInternal(sessionManager, daoFactory, commonBoFactory, boFactory);
         experimentType = new ExperimentTypePE();
-        experimentType.setCode(SEARCH_EXPERIMENT_TYPE);
+        experimentType.setCode(EXPERIMENT_TYPE);
         experimentType.setDatabaseInstance(CommonTestUtils.createHomeDatabaseInstance());
         PersonPE person = new PersonPE();
         RoleAssignmentPE roleAssignment = new RoleAssignmentPE();
@@ -145,7 +144,7 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
         final ExperimentPE e2 = experiment(2, "a");
         prepareListSearchExperiments(e1, e2);
         
-        List<Experiment> list = service.listSearchExperiments(SESSION_TOKEN);
+        List<Experiment> list = service.listSearchExperiments(SESSION_TOKEN, EXPERIMENT_TYPE);
         
         assertEquals("HOME_DATABASE:/G/P/e1", list.get(0).getIdentifier());
         assertEquals(1, list.get(0).getRegistrationDate().getTime());
@@ -165,7 +164,6 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
         final Session session = createSessionAndPrepareGetSession(GROUP_CODE);
         final ExperimentPE e1 = experiment(1);
         final ExperimentPE e2 = experiment(2, "a");
-        prepareListSearchExperiments(e1, e2);
         context.checking(new Expectations()
             {
                 {
@@ -188,7 +186,8 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
             });
         prepareProcessDataSets(session, new HashMap<String, String>(), "ds1", "ds2");
         
-        service.processSearchData(SESSION_TOKEN, COPY_PROCESSING_KEY, new long[] {e1.getId(), e2.getId()});
+        service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE,
+                new long[] { e1.getId(), e2.getId() });
         
         context.assertIsSatisfied();
     }
@@ -199,10 +198,20 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
         Session session = createSessionAndPrepareGetSession(GROUP_CODE + 2);
         final ExperimentPE e1 = experiment(1);
         final ExperimentPE e2 = experiment(2, "a");
-        prepareListSearchExperiments(e1, e2);
+        context.checking(new Expectations()
+            {
+                {
+                    one(experimentDAO).tryGetByTechId(new TechId(e1.getId()));
+                    will(returnValue(e1));
+
+                    one(experimentDAO).tryGetByTechId(new TechId(e2.getId()));
+                    will(returnValue(e2));
+                }
+            });
         prepareProcessDataSets(session, new HashMap<String, String>());
         
-        service.processSearchData(SESSION_TOKEN, COPY_PROCESSING_KEY, new long[] {e1.getId(), e2.getId()});
+        service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE,
+                new long[] {e1.getId(), e2.getId()});
         
         context.assertIsSatisfied();
     }
@@ -212,8 +221,6 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
     {
         Session session = createSessionAndPrepareGetSession(GROUP_CODE);
         final ExperimentPE e1 = experiment(1);
-        final ExperimentPE e2 = experiment(2, "a");
-        prepareListSearchExperiments(e1, e2);
         context.checking(new Expectations()
             {
                 {
@@ -228,7 +235,8 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
             });
         prepareProcessDataSets(session, new HashMap<String, String>(), "ds1");
 
-        service.processSearchData(SESSION_TOKEN, COPY_PROCESSING_KEY, new long[] {e1.getId()});
+        service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE,
+                new long[] {e1.getId()});
         
         context.assertIsSatisfied();
     }
@@ -264,7 +272,7 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
                     one(daoFactory).getEntityTypeDAO(EntityKind.EXPERIMENT);
                     will(returnValue(entityTypeDAO));
 
-                    one(entityTypeDAO).tryToFindEntityTypeByCode(SEARCH_EXPERIMENT_TYPE);
+                    one(entityTypeDAO).tryToFindEntityTypeByCode(EXPERIMENT_TYPE);
                     will(returnValue(experimentType));
 
                     one(experimentDAO).listExperimentsWithProperties(experimentType, null);
@@ -401,9 +409,8 @@ public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase
             LinkedHashSet<EntityPropertyPE> props = new LinkedHashSet<EntityPropertyPE>();
             for (String property : properties)
             {
-                props.add(CommonTestUtils.createExperimentPropertyPE(property,
-                        ProteomicsDataServiceInternal.SEARCH_EXPERIMENT_TYPE, DataTypeCode.VARCHAR,
-                        property + "-value"));
+                props.add(CommonTestUtils.createExperimentPropertyPE(property, EXPERIMENT_TYPE,
+                        DataTypeCode.VARCHAR, property + "-value"));
             }
             experiment.setProperties(props);
         }
diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java
index 6b87f9e1460..7081ab7b7ee 100644
--- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java
+++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/api/v1/ProteomicsDataServiceTest.java
@@ -66,6 +66,7 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample;
  */
 public class ProteomicsDataServiceTest extends AbstractServerTestCase
 {
+    private static final String MS_SEARCH = "MS_SEARCH";
     private static final String RAW_DATA = "RAW_DATA";
     private static final String MZXML_DATA = "MZXML_DATA";
     
@@ -321,7 +322,7 @@ public class ProteomicsDataServiceTest extends AbstractServerTestCase
         context.checking(new Expectations()
             {
                 {
-                    one(internalService).listSearchExperiments(session2.getSessionToken());
+                    one(internalService).listSearchExperiments(session2.getSessionToken(), MS_SEARCH);
                     will(returnValue(Arrays.asList(e)));
                 }
             });
@@ -356,7 +357,7 @@ public class ProteomicsDataServiceTest extends AbstractServerTestCase
         context.checking(new Expectations()
             {
                 {
-                    one(internalService).processSearchData(session2.getSessionToken(), "dsp1", ids);
+                    one(internalService).processProteinResultDataSets(session2.getSessionToken(), "dsp1", MS_SEARCH, ids);
                 }
             });
 
-- 
GitLab