From d9ef3cf1f56aa6793335ac500842b35d26c4723c Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Tue, 26 Jun 2012 15:09:11 +0000 Subject: [PATCH] SP-169 BIS-90 propagate link data set information through some dss dataSet classes SVN: 25871 --- .../registrator/api/v1/IDataSetUpdatable.java | 5 +++ .../registrator/api/v1/impl/DataSet.java | 33 +++++++++++++++++-- .../api/v1/impl/DataSetImmutable.java | 22 +++++++++++++ .../api/v1/impl/DataSetUpdatable.java | 14 ++++++++ .../api/internal/v1/IDataSetImmutable.java | 9 +++-- .../shared/dto/DataSetInformation.java | 19 ++++++++++- 6 files changed, 97 insertions(+), 5 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetUpdatable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetUpdatable.java index ab51cd279c3..c06b321684f 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetUpdatable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetUpdatable.java @@ -20,6 +20,7 @@ import java.util.List; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; @@ -65,4 +66,8 @@ public interface IDataSetUpdatable extends IDataSetImmutable /** Set the codes for contained data sets. */ public void setContainedDataSetCodes(List<String> containedDataSetCodes); + + /** Set the external data management system */ + public void setExternalDataManagementSystem( + IExternalDataManagementSystemImmutable externalDataManagementSystem); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java index 1b41d0094bd..3a43eece4d5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType; @@ -44,7 +45,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifi * * @author Chandrasekhar Ramakrishnan */ -public class DataSet<T extends DataSetInformation> extends AbstractDataSetImmutable implements IDataSet +public class DataSet<T extends DataSetInformation> extends AbstractDataSetImmutable implements + IDataSet { private final DataSetRegistrationDetails<? extends T> registrationDetails; @@ -55,6 +57,8 @@ public class DataSet<T extends DataSetInformation> extends AbstractDataSetImmuta private ISampleImmutable sampleOrNull; + private IExternalDataManagementSystemImmutable externalDataManagementSystemOrNull; + public DataSet(DataSetRegistrationDetails<? extends T> registrationDetails, File dataSetFolder, IEncapsulatedOpenBISService service) { @@ -301,7 +305,7 @@ public class DataSet<T extends DataSetInformation> extends AbstractDataSetImmuta + "sets not existing prior the transaction start."); } - //the dataset cannot be contained before it is created + // the dataset cannot be contained before it is created @Override public boolean isContainedDataSet() { @@ -313,4 +317,29 @@ public class DataSet<T extends DataSetInformation> extends AbstractDataSetImmuta { return null; } + + @Override + public void setExternalDataManagementSystem( + IExternalDataManagementSystemImmutable externalDataManagementSystem) + { + this.externalDataManagementSystemOrNull = externalDataManagementSystem; + String codeToSet = + (externalDataManagementSystem != null) ? externalDataManagementSystem.getCode() + : null; + + this.registrationDetails.getDataSetInformation().setExternalDataManagementSystem(codeToSet); + } + + @Override + public boolean isLinkDataSet() + { + return this.externalDataManagementSystemOrNull != null; + } + + @Override + public IExternalDataManagementSystemImmutable getExternalDataManagementSystem() + { + return externalDataManagementSystemOrNull; + } + } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetImmutable.java index b6fdf509986..1569192b93e 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetImmutable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetImmutable.java @@ -23,11 +23,13 @@ import java.util.List; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; @@ -188,4 +190,24 @@ public class DataSetImmutable extends AbstractDataSetImmutable } return result; } + + @Override + public boolean isLinkDataSet() + { + return dataSet.tryGetAsLinkDataSet() != null; + } + + @Override + public IExternalDataManagementSystemImmutable getExternalDataManagementSystem() + { + ExternalDataManagementSystem externalDMS = + dataSet.tryGetAsLinkDataSet().getExternalDataManagementSystem(); + if (externalDMS != null) + { + return new ExternalDataManagementSystemImmutable(externalDMS); + } else + { + return null; + } + } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java index 8d7005b3d96..22fa2059c0b 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java @@ -25,10 +25,12 @@ import java.util.Set; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetBatchUpdateDetails; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PlaceholderDataSet; @@ -202,4 +204,16 @@ public class DataSetUpdatable extends DataSetImmutable implements IDataSetUpdata return updates; } + @Override + public void setExternalDataManagementSystem( + IExternalDataManagementSystemImmutable externalDataManagementSystem) + { + + ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem dummy = + new ExternalDataManagementSystem(); + dummy.setCode(externalDataManagementSystem.getCode()); + + dataSet.tryGetAsLinkDataSet().setExternalDataManagementSystem(dummy); + } + } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IDataSetImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IDataSetImmutable.java index cbab00ee1b3..8b17efb3d67 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IDataSetImmutable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IDataSetImmutable.java @@ -73,7 +73,7 @@ public interface IDataSetImmutable * data set. */ public String getDataSetType(); - + /** * Returns data set type with property types and vocabulary terms for all property types with * vocabulary data type. @@ -127,5 +127,10 @@ public interface IDataSetImmutable * Return the code of the container in which this data set is contained */ public String getContainerDataSet(); - + + /** @return true if this is a data set, that links to external data management system */ + public boolean isLinkDataSet(); + + /** Get the external data management system */ + public IExternalDataManagementSystemImmutable getExternalDataManagementSystem(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetInformation.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetInformation.java index 68d51bb95b5..2b2d28ae020 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetInformation.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetInformation.java @@ -78,7 +78,7 @@ public class DataSetInformation implements Serializable /** sample with properties, enriched with connected experiment with properties. */ private transient Sample sample; - + private transient boolean linkSample = true; private transient Experiment experiment; @@ -87,6 +87,8 @@ public class DataSetInformation implements Serializable private List<String> containedDataSetCodes = new ArrayList<String>(); + private String externalDataManagementSystem; + /** * A subset of {@link NewExternalData} which gets set by the code extractor. * <p> @@ -385,6 +387,21 @@ public class DataSetInformation implements Serializable return false == containedDataSetCodes.isEmpty(); } + public void setExternalDataManagementSystem(final String code) + { + this.externalDataManagementSystem = code; + } + + public String getExternalDataManagementSystem() + { + return this.externalDataManagementSystem; + } + + public boolean isLinkDataSet() + { + return this.externalDataManagementSystem != null; + } + public final String describe() { if (experimentIdentifier == null) -- GitLab