From e34aa703c36d8efb53a81d9c0434a870243dc6a7 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 16 May 2011 13:33:53 +0000 Subject: [PATCH] LMS-2250 extending IDatasetLister, using data set lister for listing share IDs and data sets. SVN: 21320 --- .../path/PathInfoDatabaseFeedingTask.java | 1 - .../openbis/generic/server/ETLService.java | 27 +++++---- .../bo/datasetlister/DatasetLister.java | 16 +++-- .../bo/datasetlister/IDatasetLister.java | 5 ++ .../datasetlister/IDatasetListingQuery.java | 3 + .../generic/shared/basic/dto/DataSet.java | 12 ++++ .../dto/SimpleDataSetInformationDTO.java | 13 ---- .../translator/SimpleDataSetHelper.java | 33 ++++------- .../translator/SimpleDataSetHelperTest.java | 59 +++++++++---------- 9 files changed, 88 insertions(+), 81 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java index 06084e7ee2e..71f648a36a7 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java @@ -111,7 +111,6 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis public void execute() { - // TODO don't load virtual data sets here or filter them out List<SimpleDataSetInformationDTO> dataSets = service.listDataSets(); for (SimpleDataSetInformationDTO dataSet : dataSets) { 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 9051857dde9..4afaad4d9b7 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 @@ -37,7 +37,6 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObject import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExternalDataBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IExternalDataTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IRoleAssignmentTable; @@ -57,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; import ch.systemsx.cisd.openbis.generic.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ArchiverDataSetCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypeWithVocabularyTerms; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; @@ -800,14 +800,18 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET public List<DataSetShareId> listShareIds(String sessionToken, String dataStore) throws UserFailureException { - List<ExternalDataPE> dataSets = loadDataSets(sessionToken, dataStore); + List<ExternalData> dataSets = loadDataSets(sessionToken, dataStore); ArrayList<DataSetShareId> shareIds = new ArrayList<DataSetShareId>(); - for (ExternalDataPE dataSet : dataSets) + for (ExternalData dataSet : dataSets) { - DataSetShareId dataSetShareId = new DataSetShareId(); - dataSetShareId.setDataSetCode(dataSet.getCode()); - dataSetShareId.setShareId(dataSet.getShareId()); - shareIds.add(dataSetShareId); + if (dataSet instanceof DataSet) + { + DataSet ds = (DataSet) dataSet; + DataSetShareId dataSetShareId = new DataSetShareId(); + dataSetShareId.setDataSetCode(ds.getCode()); + dataSetShareId.setShareId(ds.getShareId()); + shareIds.add(dataSetShareId); + } } return shareIds; } @@ -815,7 +819,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET public List<SimpleDataSetInformationDTO> listDataSets(String sessionToken, String dataStoreCode) throws UserFailureException { - List<ExternalDataPE> dataSets = loadDataSets(sessionToken, dataStoreCode); + List<ExternalData> dataSets = loadDataSets(sessionToken, dataStoreCode); return SimpleDataSetHelper.translate(dataSets); } @@ -851,18 +855,17 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET return result; } - private List<ExternalDataPE> loadDataSets(String sessionToken, String dataStoreCode) + private List<ExternalData> loadDataSets(String sessionToken, String dataStoreCode) { Session session = getSession(sessionToken); + IDatasetLister datasetLister = businessObjectFactory.createDatasetLister(session); DataStorePE dataStore = getDAOFactory().getDataStoreDAO().tryToFindDataStoreByCode(dataStoreCode); if (dataStore == null) { throw new UserFailureException(String.format("Unknown data store '%s'", dataStoreCode)); } - IExternalDataTable dataSetTable = businessObjectFactory.createExternalDataTable(session); - dataSetTable.loadByDataStore(dataStore); - return dataSetTable.getExternalData(); + return datasetLister.listByDataStore(dataStore.getId()); } public List<DeletedDataSet> listDeletedDataSets(String sessionToken, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java index 137c09868e9..562a285f0fd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java @@ -343,6 +343,11 @@ public class DatasetLister extends AbstractLister implements IDatasetLister return asList(createPrimaryDatasets(asList(datasets))); } + public List<ExternalData> listByDataStore(long dataStoreID) + { + return enrichDatasets(query.getDatasetsByDataStoreId(dataStoreID)); + } + public List<ExternalData> listByTrackingCriteria(TrackingDataSetCriteria criteria) { DataIterator<DatasetRecord> dataSets; @@ -645,7 +650,7 @@ public class DatasetLister extends AbstractLister implements IDatasetLister for (DatasetRecord record : records) { DataSetType dsType = dataSetTypes.get(record.dsty_id); - if (record.is_placeholder) + if (record.is_placeholder || record.location == null) { // placeholder data sets are filtered out } else if (dsType.isContainerType()) @@ -665,13 +670,16 @@ public class DatasetLister extends AbstractLister implements IDatasetLister convertStandardProperties(dataSet, record); dataSet.setComplete(resolve(record.is_complete)); - dataSet.setStatus(DataSetArchivingStatus.valueOf(record.status)); + dataSet.setStatus(record.status == null ? null : DataSetArchivingStatus + .valueOf(record.status)); dataSet.setSpeedHint(record.speed_hint == null ? Constants.DEFAULT_SPEED_HINT : record.speed_hint); - dataSet.setFileFormatType(fileFormatTypes.get(record.ffty_id)); + dataSet.setShareId(record.share_id); + dataSet.setFileFormatType(record.ffty_id == null ? null : fileFormatTypes + .get(record.ffty_id)); dataSet.setLocation(record.location); dataSet.setSize(record.size); - dataSet.setLocatorType(locatorTypes.get(record.loty_id)); + dataSet.setLocatorType(record.loty_id == null ? null : locatorTypes.get(record.loty_id)); return dataSet; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java index 3ef3183b414..c22dde3e489 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java @@ -76,6 +76,11 @@ public interface IDatasetLister * Lists all data sets with specified codes. Unenriched data sets will be returned. */ List<ExternalData> listByDatasetCode(Collection<String> datasetCodes); + + /** + * Lists all data sets of specified data store. Unenriched data sets will be returned. + */ + List<ExternalData> listByDataStore(long dataStoreID); /** @return datasets with given ids */ List<ExternalData> listByDatasetIds(Collection<Long> datasetIds); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java index 62319fb0fb6..e7816b22d05 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java @@ -195,6 +195,9 @@ public interface IDatasetListingQuery extends TransactionQuery, IPropertyListing { StringArrayMapper.class }, fetchSize = FETCH_SIZE) public DataIterator<DatasetRecord> getDatasets(String[] datasetCodes); + @Select(sql = SELECT_ALL + " where data.dast_id = ?{1}", fetchSize = FETCH_SIZE) + public DataIterator<DatasetRecord> getDatasetsByDataStoreId(long dataStoreId); + /** * Returns the children dataset ids of the specified datasets. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java index 6201dff3dea..d690ac0cfbe 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java @@ -28,6 +28,8 @@ public class DataSet extends ExternalData implements IDatasetLocation private static final long serialVersionUID = ServiceVersionHolder.VERSION; private Boolean complete; + + private String shareId; private String location; @@ -51,6 +53,16 @@ public class DataSet extends ExternalData implements IDatasetLocation this.complete = complete; } + public void setShareId(String shareId) + { + this.shareId = shareId; + } + + public String getShareId() + { + return shareId; + } + @Override public String getLocation() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java index 151f99b3386..5da76b66351 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.io.Serializable; -import java.util.Collection; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; @@ -55,8 +54,6 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati private String databaseInstanceCode; - private Collection<String> parentDataSetCodes; - public void setDataStoreCode(String dataStoreCode) { this.dataStoreCode = dataStoreCode; @@ -178,14 +175,4 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati this.databaseInstanceCode = dbInstanceCode; } - public Collection<String> getParentDataSetCodes() - { - return parentDataSetCodes; - } - - public void setParentDataSetCodes(Collection<String> parentDataSetCodes) - { - this.parentDataSetCodes = parentDataSetCodes; - } - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java index 9cfc5f5545b..9300849d6d3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java @@ -17,13 +17,11 @@ package ch.systemsx.cisd.openbis.generic.shared.translator; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; /** @@ -33,23 +31,25 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; */ public class SimpleDataSetHelper { - public static final List<SimpleDataSetInformationDTO> translate( - List<ExternalDataPE> externalData) + public static final List<SimpleDataSetInformationDTO> translate(List<ExternalData> externalData) { if (externalData == null) { return null; } List<SimpleDataSetInformationDTO> result = new ArrayList<SimpleDataSetInformationDTO>(); - for (ExternalDataPE ed : externalData) + for (ExternalData ed : externalData) { - result.add(translate(ed)); + if (ed instanceof DataSet) + { + DataSet dataSet = (DataSet) ed; + result.add(translate(dataSet)); + } } return result; } - // TODO KE: use DataPE ? - private static SimpleDataSetInformationDTO translate(ExternalDataPE data) + private static SimpleDataSetInformationDTO translate(DataSet data) { SimpleDataSetInformationDTO result = new SimpleDataSetInformationDTO(); result.setDataStoreCode(data.getDataStore().getCode()); @@ -59,22 +59,13 @@ public class SimpleDataSetHelper result.setDataSetLocation(data.getLocation()); result.setDataSetSize(data.getSize()); result.setDatabaseInstanceCode(data.getExperiment().getProject().getSpace() - .getDatabaseInstance().getCode()); + .getInstance().getCode()); result.setExperimentCode(data.getExperiment().getCode()); result.setProjectCode(data.getExperiment().getProject().getCode()); result.setGroupCode(data.getExperiment().getProject().getSpace().getCode()); - SamplePE sampleOrNull = data.tryGetSample(); - result.setSampleCode(sampleOrNull == null ? null : sampleOrNull.getCode()); + result.setSampleCode(data.getSampleCode()); result.setDataSetType(data.getDataSetType().getCode()); - HashSet<String> parentCodes = new HashSet<String>(); - for (DataPE parent : data.getParents()) - { - parentCodes.add(parent.getCode()); - } - - result.setParentDataSetCodes(parentCodes); - return result; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelperTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelperTest.java index 56e837cf447..2f17ab45700 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelperTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelperTest.java @@ -22,21 +22,21 @@ import java.util.List; import org.testng.AssertJUnit; import org.testng.annotations.Test; -import ch.systemsx.cisd.common.types.BooleanOrUnknown; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.FileFormatTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; /** * @@ -48,10 +48,11 @@ public class SimpleDataSetHelperTest extends AssertJUnit @Test public void testTranslateList() { - ExternalDataPE ds1 = create(1); - ExternalDataPE ds2 = create(2); + ExternalData ds1 = create(1); + ExternalData ds2 = create(2); + ExternalData ds3 = new ContainerDataSet(); - List<SimpleDataSetInformationDTO> list = SimpleDataSetHelper.translate(Arrays.asList(ds1, ds2)); + List<SimpleDataSetInformationDTO> list = SimpleDataSetHelper.translate(Arrays.asList(ds1, ds2, ds3)); check(1, list.get(0)); check(2, list.get(1)); @@ -62,49 +63,47 @@ public class SimpleDataSetHelperTest extends AssertJUnit @Test public void testTranslateDescription() { - ExternalData ds = ExternalDataTranslator.translate(create(1), "", false); - DatasetDescription description = ExternalDataTranslator.translateToDescription(ds); + DatasetDescription description = ExternalDataTranslator.translateToDescription(create(1)); SimpleDataSetInformationDTO result = SimpleDataSetHelper.translate(description); check(1, result); } - private ExternalDataPE create(long id) + private ExternalData create(long id) { - ExternalDataPE dataSet = new ExternalDataPE(); + DataSet dataSet = new DataSet(); dataSet.setId(id); dataSet.setCode("ds-" + id); - dataSet.setComplete(BooleanOrUnknown.T); + dataSet.setComplete(true); dataSet.setDataProducerCode("producer"); - DataSetTypePE dataSetType = new DataSetTypePE(); + DataSetType dataSetType = new DataSetType(); dataSetType.setCode("MY-TYPE"); dataSet.setDataSetType(dataSetType); - DataStorePE store = new DataStorePE(); + DataStore store = new DataStore(); store.setCode("MY-STORE"); dataSet.setDataStore(store); dataSet.setDerived(true); - ExperimentPE experiment = new ExperimentPE(); + Experiment experiment = new Experiment(); experiment.setCode("MY-EXPERIMENT"); - ExperimentTypePE experimentType = new ExperimentTypePE(); + ExperimentType experimentType = new ExperimentType(); experimentType.setCode("MY-EXPERIMENT-TYPE"); experiment.setExperimentType(experimentType); - ProjectPE project = new ProjectPE(); + Project project = new Project(); project.setCode("MY-PROJECT"); - SpacePE space = new SpacePE(); + Space space = new Space(); space.setCode("MY-SPACE"); - DatabaseInstancePE databaseInstance = new DatabaseInstancePE(); + DatabaseInstance databaseInstance = new DatabaseInstance(); databaseInstance.setCode("MY-DB"); - space.setDatabaseInstance(databaseInstance); + space.setInstance(databaseInstance); project.setSpace(space); experiment.setProject(project); dataSet.setExperiment(experiment); - FileFormatTypePE fileFormatType = new FileFormatTypePE(); + FileFormatType fileFormatType = new FileFormatType(); fileFormatType.setCode("MY_FILE_FORMAT"); dataSet.setFileFormatType(fileFormatType); dataSet.setLocation("my-location"); - dataSet.setPresentInArchive(true); - SamplePE sample = new SamplePE(); + Sample sample = new Sample(); sample.setCode("MY-SAMPLE"); dataSet.setSample(sample); dataSet.setShareId("42"); -- GitLab