diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java index 67051d73648120ac76d4a70c2824b513cf85a467..2457bb9a6900fdf73925bbae35a8c222bda3ed0b 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java @@ -111,6 +111,9 @@ public class Experiment implements Serializable, IAttachmentsHolder, ICodeHolder @JsonProperty private Map<String, Material> materialProperties; + @JsonProperty + private Map<String, Sample> sampleProperties; + @JsonProperty private Set<Tag> tags; @@ -377,6 +380,23 @@ public class Experiment implements Serializable, IAttachmentsHolder, ICodeHolder this.materialProperties = materialProperties; } + @JsonIgnore + public Map<String, Sample> getSampleProperties() + { + if (getFetchOptions() != null && getFetchOptions().hasSampleProperties()) + { + return sampleProperties; + } else + { + throw new NotFetchedException("Sample Properties have not been fetched."); + } + } + + public void setSampleProperties(Map<String, Sample> sampleProperties) + { + this.sampleProperties = sampleProperties; + } + // Method automatically generated with DtoGenerator @JsonIgnore @Override diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java index bd1ab132d947af0d1f60e3eed885dd576705f443..6e0c022e9bb50badb9d76b6dcb00c28369b60c3f 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java @@ -27,8 +27,10 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.create.IObjectCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICreationIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISamplePropertiesHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -36,7 +38,7 @@ import ch.systemsx.cisd.base.annotation.JsonObject; * @author pkupczyk */ @JsonObject("as.dto.experiment.create.ExperimentCreation") -public class ExperimentCreation implements ICreation, IObjectCreation, ICreationIdHolder, IPropertiesHolder +public class ExperimentCreation implements ICreation, IObjectCreation, ICreationIdHolder, IPropertiesHolder, ISamplePropertiesHolder { private static final long serialVersionUID = 1L; @@ -50,6 +52,8 @@ public class ExperimentCreation implements ICreation, IObjectCreation, ICreation private Map<String, String> properties = new HashMap<String, String>(); + private Map<String, ISampleId> sampleProperties = new HashMap<String, ISampleId>(); + private List<AttachmentCreation> attachments; private CreationId creationId; @@ -118,6 +122,16 @@ public class ExperimentCreation implements ICreation, IObjectCreation, ICreation return properties; } + public void setSampleProperty(String propertyName, ISampleId sampleId) + { + sampleProperties.put(propertyName, sampleId); + } + + public Map<String, ISampleId> getSampleProperties() + { + return sampleProperties; + } + public List<AttachmentCreation> getAttachments() { return attachments; diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/fetchoptions/ExperimentFetchOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/fetchoptions/ExperimentFetchOptions.java index 2cc919e80a69647002ac6e2bcca8d7ef5a5b7687..3423e9cd7389a2fd117ddaa23aeac85be4a72426 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/fetchoptions/ExperimentFetchOptions.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/fetchoptions/ExperimentFetchOptions.java @@ -61,6 +61,9 @@ public class ExperimentFetchOptions extends FetchOptions<Experiment> implements @JsonProperty private MaterialFetchOptions materialProperties; + @JsonProperty + private SampleFetchOptions sampleProperties; + @JsonProperty private TagFetchOptions tags; @@ -230,6 +233,25 @@ public class ExperimentFetchOptions extends FetchOptions<Experiment> implements return materialProperties != null; } + public SampleFetchOptions withSampleProperties() + { + if (sampleProperties == null) + { + sampleProperties = new SampleFetchOptions(); + } + return sampleProperties; + } + + public SampleFetchOptions withSamplePropertiesUsing(SampleFetchOptions fetchOptions) + { + return sampleProperties = fetchOptions; + } + + public boolean hasSampleProperties() + { + return sampleProperties != null; + } + // Method automatically generated with DtoGenerator public TagFetchOptions withTags() { @@ -346,6 +368,7 @@ public class ExperimentFetchOptions extends FetchOptions<Experiment> implements f.addFetchOption("History", history); f.addFetchOption("Properties", properties); f.addFetchOption("MaterialProperties", materialProperties); + f.addFetchOption("SampleProperties", sampleProperties); f.addFetchOption("Tags", tags); f.addFetchOption("Registrator", registrator); f.addFetchOption("Modifier", modifier); diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java index c5dbf86ac364260d0c3d07f50fd81096f0aa1c9b..83da18d31422c8c703717e90e066febd7bfaf367 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import ch.ethz.sis.openbis.generic.asapi.v3.dto.attachment.update.AttachmentListUpdateValue; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISamplePropertiesHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.FieldUpdateValue; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.IObjectUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.IUpdate; @@ -33,6 +34,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.IdListUpdateValue; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.ListUpdateValue.ListUpdateAction; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -40,7 +42,7 @@ import ch.systemsx.cisd.base.annotation.JsonObject; * @author pkupczyk */ @JsonObject("as.dto.experiment.update.ExperimentUpdate") -public class ExperimentUpdate implements IUpdate, IObjectUpdate<IExperimentId>, IPropertiesHolder +public class ExperimentUpdate implements IUpdate, IObjectUpdate<IExperimentId>, IPropertiesHolder, ISamplePropertiesHolder { private static final long serialVersionUID = 1L; @@ -60,6 +62,9 @@ public class ExperimentUpdate implements IUpdate, IObjectUpdate<IExperimentId>, @JsonProperty private Map<String, String> properties = new HashMap<String, String>(); + @JsonProperty + private Map<String, ISampleId> sampleProperties = new HashMap<String, ISampleId>(); + @JsonProperty private FieldUpdateValue<IProjectId> projectId = new FieldUpdateValue<IProjectId>(); @@ -151,6 +156,19 @@ public class ExperimentUpdate implements IUpdate, IObjectUpdate<IExperimentId>, return properties; } + @JsonIgnore + public void setSampleProperty(String propertyName, ISampleId sampleId) + { + sampleProperties.put(propertyName, sampleId); + } + + @Override + @JsonIgnore + public Map<String, ISampleId> getSampleProperties() + { + return sampleProperties; + } + @JsonIgnore public void setProjectId(IProjectId projectId) {