diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java index f4a8cdde3ec963d1c38b3374d64fe6cc192ff2ec..deaba0aa3ac6827c88203178545e9aee03f24d25 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java @@ -281,6 +281,15 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements dataSets.addAll(getDataDAO().listDataSets(sample)); } + @Override + public final void loadBySampleTechIdWithoutRelationships(final TechId sampleId) + { + assert sampleId != null : "Unspecified sample id"; + final SamplePE sample = getSampleDAO().getByTechId(sampleId); + dataSets = new ArrayList<DataPE>(); + dataSets.addAll(getDataDAO().listDataSetsWithoutRelationships(sample)); + } + @Override public void loadByExperimentTechId(final TechId experimentId) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java index d42922fcc8af7341004a13a063e3f8ec89e35140..f61470a941a75951beb9b252e1526faa322e9830 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java @@ -53,6 +53,12 @@ public interface IDataSetTable */ void loadBySampleTechId(final TechId sampleId); + /** + * Loads data sets which are linked to the sample with given <var>sampleId</var>. Datasets + * doesn't include relationships or properties. + */ + void loadBySampleTechIdWithoutRelationships(final TechId sampleId); + /** * Loads data sets which are linked to the experiment with given <var>experimentId</var>. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java index 6f44ba178c80918917be98bf21f39d93c9cf9115..cce2e548b360364aeb8f44531d50ca73adedea21 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java @@ -63,6 +63,15 @@ public interface IDataDAO extends IGenericDAO<DataPE> */ public List<DataPE> listDataSets(final SamplePE sample) throws DataAccessException; + /** + * List the {@link DataPE} for given <var>sample</var>. The datasets are fetched without the + * additional relationships or properties. + * + * @returns list of {@link DataPE}s that are related to given {@link SamplePE}. + */ + public List<DataPE> listDataSetsWithoutRelationships(final SamplePE sample) + throws DataAccessException; + /** * List the {@link DataPE} for given <var>experiment</var>. * diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java index 0869b8fc13dc257dd28c1b806ee7f71cd50661c5..b646075da824efb101f8c3193c64c511c916c40f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java @@ -181,6 +181,25 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple return results; } + @Override + public final List<DataPE> listDataSetsWithoutRelationships(final SamplePE sample) + throws DataAccessException + { + assert sample != null : "Unspecified sample."; + + final String query = String.format("from %s e where e.sampleInternal = ?", TABLE_NAME); + final List<DataPE> list = cast(getHibernateTemplate().find(query, toArray(sample))); + + // distinct does not work properly in HQL for left joins + distinct(list); + if (operationLog.isDebugEnabled()) + { + operationLog.debug(String.format("%d external data have been found for [sample=%s].", + list.size(), sample)); + } + return list; + } + @Override public final List<DataPE> listDataSets(final SamplePE sample) throws DataAccessException {