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 06084e7ee2e3bd62b810bf25be781842a727fcc9..71f648a36a737f4a27a80adf167306fe188186fe 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 9051857dde95861f7e3776937786ed4f04da0095..4afaad4d9b72383374dc99faeb774286c9d66899 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 137c09868e93b7fd502cf2159710bc9091076987..562a285f0fdcbce1910abd52929875e1c542fb06 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 3ef3183b414e095df800c94fedf0fea8bacd324e..c22dde3e489c5ae4b2a4fe072a571f5546bbab4c 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 62319fb0fb67ac341ebe6a19db838e58dae62abb..e7816b22d05d5cca0dbdd03ccf9ca6c8194dee79 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 6201dff3dea67071ab9593b4e0d1da1094eb51ab..d690ac0cfbed2f1cb67d7081a440ebd62df1cca9 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 151f99b3386fd0de0931af680a3a72c01b9fe3e2..5da76b66351ab338d4974d46fd02c3c097832679 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 9cfc5f5545b16a515d0c85602a7ce8601fd20ca0..9300849d6d3dcdb5df1b5c8f730587ce07972680 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 56e837cf4477d464e080c03441d8f265333b8f0f..2f17ab457003eb51f451b82ec815f2179d341290 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");