diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java index c4144dbfbe7a2ec90278ef82fe1e5787cdcfd5bc..916924689540d6f86fbf9199df0caf7061379ee8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java @@ -832,6 +832,11 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD businessObjectFactory.createExperimentTable(session); experimentTable.load(EntityType.ALL_TYPES_CODE, projectIdentifier); final List<ExperimentPE> experiments = experimentTable.getExperiments(); + return translateExperimentsWithMetaprojectAssignments(session, experiments); + } + + private List<Experiment> translateExperimentsWithMetaprojectAssignments(final Session session, final List<ExperimentPE> experiments) + { final Collection<MetaprojectAssignmentPE> assignmentPEs = getDAOFactory().getMetaprojectDAO().listMetaprojectAssignmentsForEntities( session.tryGetPerson(), experiments, EntityKind.EXPERIMENT); @@ -1198,7 +1203,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD @Override @RolesAllowed( - { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) public void checkDataSetAccess(String sessionToken, @AuthorizationGuard(guardClass = DataSetCodePredicate.class) String dataSetCode) throws UserFailureException @@ -2612,6 +2617,18 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD return searchHelper.searchForDataSets(session.getUserName(), detailedSearchCriteria); } + @Override + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public List<Experiment> searchForExperiments(String sessionToken, SearchCriteria searchCriteria) + { + Session session = getSession(sessionToken); + DetailedSearchCriteria detailedSearchCriteria = + SearchCriteriaToDetailedSearchCriteriaTranslator.convert(getDAOFactory(), SearchableEntityKind.EXPERIMENT, searchCriteria); + SearchHelper searchHelper = new SearchHelper(session, businessObjectFactory, getDAOFactory()); + List<ExperimentPE> experiments = searchHelper.searchForExperiments(sessionToken, detailedSearchCriteria); + return translateExperimentsWithMetaprojectAssignments(session, experiments); + } + @Override @RolesAllowed(value = { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java index c195dbe8bbd19d567ca0bac5b89950e180afaf22..ff65baaf4dfcc478e638d2b07f51cc1b3b367525 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java @@ -653,6 +653,13 @@ public class ServiceForDataStoreServerLogger extends AbstractServerLogger implem return null; } + @Override + public List<Experiment> searchForExperiments(String sessionToken, SearchCriteria searchCriteria) + { + logAccess(sessionToken, "searchForExperiments", "%s", searchCriteria); + return null; + } + @Override public List<AbstractExternalData> searchForDataSets(String sessionToken, SearchCriteria searchCriteria) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java index 52b24c6d00876425e95d5f37d3f1e497a4710957..0d2fcba3ae28cc72dceeede9f3591c67cb4d53a8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java @@ -662,6 +662,16 @@ public interface IServiceForDataStoreServer extends IServer, ISessionProvider @Transactional(readOnly = true) public List<Sample> searchForSamples(String sessionToken, SearchCriteria searchCriteria); + /** + * Search for experiments matching the provided criteria. + * + * @param sessionToken The user authentication token. Must not be <code>null</code>. + * @param searchCriteria The criteria for experiments. + * @return A collection of experiments matching the search criteria. + */ + @Transactional(readOnly = true) + public List<Experiment> searchForExperiments(String sessionToken, SearchCriteria searchCriteria); + /** * Search for data sets matching the provided criteria. *