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 ab51cd279c3a8a6e65427c7a39e4e5e6ac63343b..c06b321684f9f379942b311c71b53e9cc7838e99 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 1b41d0094bd562588d68a16c474f1fd45f79c78d..3a43eece4d568d6c6ec259ec450f836e6dd22832 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 b6fdf50998638d1241da0dd890fe2fb2063e5a6e..1569192b93ed8bd72b0fb4c78072c662328e8825 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 8d7005b3d96d0047ffdaa36fc0a9ae72d9d56876..22fa2059c0b40c3e93088ffbe1e0cfbb1ccbce53 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 cbab00ee1b35773a1fb084ee7d6a005914f8995b..8b17efb3d678a2cf6f3441308414769f29e2e8eb 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 68d51bb95b59033d3a20a26ddf4b7448fbf112ca..2b2d28ae020537b74b9f7c2e105b6d208cc2d115 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)