diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java index 4f4040fd3941b003b6256851667bc036b2ff1f0e..2cccbbd992f5933f9242f90e3f2bbe934d9352b4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java @@ -55,7 +55,8 @@ public final class GenericSampleEditForm { private final Sample originalSample; - private final ExperimentChooserFieldAdaptor experimentField; + // null if sample cannot be attached to an experiment + private final ExperimentChooserFieldAdaptor experimentFieldOrNull; private final PropertyGrid specificFieldsGrid; @@ -67,7 +68,8 @@ public final class GenericSampleEditForm super(viewContext, entity, editMode); this.viewContext = viewContext; this.originalSample = entity.getSample(); - this.experimentField = createExperimentField(); + this.experimentFieldOrNull = + canAttachToExperiment(originalSample) ? createExperimentField() : null; this.specificFieldsGrid = new PropertyGrid(viewContext, 1); super.initializeComponents(viewContext); } @@ -86,8 +88,10 @@ public final class GenericSampleEditForm public final void submitValidForm() { final List<SampleProperty> properties = extractProperties(); + ExperimentIdentifier experimentIdent = + experimentFieldOrNull != null ? experimentFieldOrNull.getValue() : null; viewContext.getCommonService().updateSample(entity.getIdentifier(), properties, - experimentField.getValue(), entity.getModificationDate(), + experimentIdent, entity.getModificationDate(), new RegisterSampleCallback(viewContext)); } @@ -124,15 +128,21 @@ public final class GenericSampleEditForm protected List<Field<?>> getEntitySpecificFormFields() { ArrayList<Field<?>> fields = new ArrayList<Field<?>>(); - fields.add(experimentField.getField()); + if (experimentFieldOrNull != null) + { + fields.add(experimentFieldOrNull.getField()); + } return fields; } @Override protected void updateCheckPageWidgets() { - experimentField.updateOriginalValue(); - updateSpecificPropertiesGrid(); + if (experimentFieldOrNull != null) + { + experimentFieldOrNull.updateOriginalValue(); + updateSpecificPropertiesGrid(); + } } private ExperimentIdentifier tryGetOriginalExperiment() @@ -149,8 +159,11 @@ public final class GenericSampleEditForm protected List<Widget> getEntitySpecificCheckPageWidgets() { ArrayList<Widget> result = new ArrayList<Widget>(); - updateSpecificPropertiesGrid(); - result.add(specificFieldsGrid); + if (experimentFieldOrNull != null) + { + updateSpecificPropertiesGrid(); + result.add(specificFieldsGrid); + } return result; } @@ -163,7 +176,11 @@ public final class GenericSampleEditForm private String tryPrintSelectedExperiment() { - ExperimentIdentifier value = experimentField.getValue(); + if (experimentFieldOrNull == null) + { + return null; + } + ExperimentIdentifier value = experimentFieldOrNull.getValue(); if (value == null) { return null; @@ -172,4 +189,9 @@ public final class GenericSampleEditForm return value.print(); } } + + private static boolean canAttachToExperiment(Sample sample) + { + return sample.getGroup() != null; + } }