diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 7a88d9a33dc47143c2719c72da3d3ebacb7618d7..17eafa058b1b0f6c5d6f05603e29a8bada06b411 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -70,13 +70,11 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.dynamic_property.calc import ch.systemsx.cisd.openbis.generic.server.business.bo.dynamic_property.calculator.api.IEntityAdaptor; import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.server.business.search.DataSetSearchManager; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataStoreDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IEntityTypeDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IFileFormatTypeDAO; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IHibernateSearchDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.HibernateSearchDataProvider; import ch.systemsx.cisd.openbis.generic.server.plugin.IDataSetTypeSlaveServerPlugin; @@ -914,16 +912,10 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt public List<ExternalData> searchForDataSets(String sessionToken, DetailedSearchCriteria criteria) { - Session session = getSession(sessionToken); - try - { - IHibernateSearchDAO searchDAO = getDAOFactory().getHibernateSearchDAO(); - IDatasetLister dataSetLister = createDatasetLister(session); - return new DataSetSearchManager(searchDAO, dataSetLister).searchForDataSets(criteria); - } catch (DataAccessException ex) - { - throw createUserFailureException(ex); - } + final Session session = getSession(sessionToken); + SearchHelper searchHelper = + new SearchHelper(session, businessObjectFactory, getDAOFactory()); + return searchHelper.searchForDataSets(criteria); } public ExternalData getDataSetInfo(final String sessionToken, final TechId datasetId) 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 af1f540cc45529c76fd7e0db0b8c6f8152f7007c..5839dfba9144e44c3dd6600e7a15d522c610c7cf 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 @@ -1365,4 +1365,15 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET return searchHelper.searchForSamples(detailedSearchCriteria); } + public List<ExternalData> searchForDataSets(String sessionToken, SearchCriteria searchCriteria) + { + Session session = getSession(sessionToken); + DetailedSearchCriteria detailedSearchCriteria = + SearchCriteriaToDetailedSearchCriteriaTranslator.convert( + SearchableEntityKind.DATA_SET, searchCriteria); + SearchHelper searchHelper = + new SearchHelper(session, businessObjectFactory, getDAOFactory()); + return searchHelper.searchForDataSets(detailedSearchCriteria); + } + } 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 7c503106f226a8312146ad5b556b167e40676691..cb7bac3b0826cacfd46f2055946e507c286c4be6 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 @@ -482,4 +482,9 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic return null; } + public List<ExternalData> searchForDataSets(String sessionToken, SearchCriteria searchCriteria) + { + logAccess(sessionToken, "searchForDataSets", "%s", searchCriteria); + return null; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SearchHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SearchHelper.java index 8df2ff513f209b97606c55c67b1f1d6db909620a..ea6ef9b6dd1a3ed3c7f65f79e2ba46a28191c779 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SearchHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SearchHelper.java @@ -21,11 +21,14 @@ import java.util.List; import org.springframework.dao.DataAccessException; import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; +import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; +import ch.systemsx.cisd.openbis.generic.server.business.search.DataSetSearchManager; import ch.systemsx.cisd.openbis.generic.server.business.search.SampleSearchManager; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IHibernateSearchDAO; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; @@ -63,4 +66,18 @@ class SearchHelper throw CommonServer.createUserFailureException(ex); } } + + public List<ExternalData> searchForDataSets(DetailedSearchCriteria detailedSearchCriteria) + { + try + { + IHibernateSearchDAO searchDAO = daoFactory.getHibernateSearchDAO(); + IDatasetLister dataSetLister = businessObjectFactory.createDatasetLister(session); + return new DataSetSearchManager(searchDAO, dataSetLister) + .searchForDataSets(detailedSearchCriteria); + } catch (DataAccessException ex) + { + throw CommonServer.createUserFailureException(ex); + } + } } 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 f955a5d60f3ad38506dc0505b87d6c60ad51c6cd..89a7bbd697d59a7cbb4d7e0da47dcd2b72d05d09 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 @@ -692,4 +692,15 @@ public interface IETLLIMSService extends IServer, ISessionProvider @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public List<Sample> searchForSamples(String sessionToken, SearchCriteria searchCriteria); + + /** + * Search for data sets matching the provided criteria. + * + * @param sessionToken The user authentication token. Must not be <code>null</code>. + * @param searchCriteria The criteria for data sets. + * @return A collection of data sets matching the search criteria. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public List<ExternalData> searchForDataSets(String sessionToken, SearchCriteria searchCriteria); } 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 f955a5d60f3ad38506dc0505b87d6c60ad51c6cd..89a7bbd697d59a7cbb4d7e0da47dcd2b72d05d09 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 @@ -692,4 +692,15 @@ public interface IETLLIMSService extends IServer, ISessionProvider @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public List<Sample> searchForSamples(String sessionToken, SearchCriteria searchCriteria); + + /** + * Search for data sets matching the provided criteria. + * + * @param sessionToken The user authentication token. Must not be <code>null</code>. + * @param searchCriteria The criteria for data sets. + * @return A collection of data sets matching the search criteria. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public List<ExternalData> searchForDataSets(String sessionToken, SearchCriteria searchCriteria); }