From 05975cd0360e893169fa443c3c6efb807c509584 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 20 Aug 2012 08:33:20 +0000
Subject: [PATCH] SP-242, BIS-154: Creating/editing sample types with new flag
 'show parent metadata'. New column in sample types grid.

SVN: 26395
---
 .../client/web/client/application/Dict.java   |  2 +
 .../application/ui/sample/SampleTypeGrid.java | 46 ++++++++++++++-----
 .../client/dto/SampleTypeGridColumnIDs.java   |  9 +++-
 .../server/resultset/SampleTypeProvider.java  | 15 ++++--
 .../openbis/generic/server/CommonServer.java  |  1 +
 .../server/business/bo/EntityTypeBO.java      |  1 +
 .../cisd/openbis/public/common-dictionary.js  |  2 +
 .../generic/server/ETLServiceTest.java        |  3 ++
 .../generic/shared/CommonTestUtils.java       |  2 +
 .../authorization/AuthorizationTestCase.java  |  1 +
 .../dto/builders/SampleTypePEBuilder.java     | 11 +++--
 11 files changed, 71 insertions(+), 22 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
index f71f163be0a..86d44510461 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
@@ -355,6 +355,8 @@ public abstract class Dict
 
     public static final String AUTO_GENERATE_CODES_LABEL = "auto_generate_codes_label";
 
+    public static final String SHOW_PARENT_METADATA_LABEL = "show_parent_metadata_label";
+
     public static final String GENERATED_CODE_PREFIX = "generated_code_prefix";
 
     public static final String LISTABLE = "listable";
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
index 0e40afdd667..48782103c68 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
@@ -59,6 +59,8 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
 
     private static final Boolean DEFAULT_AUTO_GENERATE_CODES_VALUE = false;
 
+    private static final Boolean DEFAULT_SHOW_PARENT_METADATA_VALUE = false;
+
     private static final Boolean DEFAULT_UNIQUE_SUBCODES_VALUE = false;
 
     private static final String DEFAULT_GENERATED_CODE_PREFIX_VALUE = "S";
@@ -135,6 +137,8 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
 
                 private final CheckBoxField autoGeneratedCodeField;
 
+                private final CheckBoxField showParentMetadataField;
+
                 private final TextField<String> generatedCodePrefixField;
 
                 {
@@ -167,6 +171,11 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                                     sampleType.isAutoGeneratedCode());
                     addField(autoGeneratedCodeField);
 
+                    showParentMetadataField =
+                            SampleTypeDialogFieldHelper.createShowParentMetadataField(viewContext,
+                                    sampleType.isShowParentMetadata());
+                    addField(showParentMetadataField);
+
                     generatedCodePrefixField =
                             SampleTypeDialogFieldHelper.createGeneratedCodePrefixField(viewContext,
                                     sampleType.getGeneratedCodePrefix());
@@ -183,6 +192,7 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                     sampleType.setListable(listableField.getValue());
                     sampleType.setSubcodeUnique(subcodeUniqueField.getValue());
                     sampleType.setAutoGeneratedCode(autoGeneratedCodeField.getValue());
+                    sampleType.setShowParentMetadata(showParentMetadataField.getValue());
                     sampleType.setGeneratedCodePrefix(generatedCodePrefixField.getValue());
                     sampleType.setShowParents(showParentsField.getValue());
                     sampleType.setShowContainer(showContainerField.getValue());
@@ -215,6 +225,8 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
 
                 private CheckBoxField autoGenerateCodesField;
 
+                private CheckBoxField showParentMetadataField;
+
                 private TextField<String> generatedCodePrefixField;
 
                 {
@@ -243,6 +255,11 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                                     DEFAULT_AUTO_GENERATE_CODES_VALUE);
                     addField(autoGenerateCodesField);
 
+                    showParentMetadataField =
+                            SampleTypeDialogFieldHelper.createShowParentMetadataField(viewContext,
+                                    DEFAULT_SHOW_PARENT_METADATA_VALUE);
+                    addField(showParentMetadataField);
+
                     generatedCodePrefixField =
                             SampleTypeDialogFieldHelper.createGeneratedCodePrefixField(viewContext,
                                     DEFAULT_GENERATED_CODE_PREFIX_VALUE);
@@ -260,6 +277,7 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                     sampleType.setShowContainer(showContainerField.getValue());
                     sampleType.setListable(listableField.getValue());
                     sampleType.setAutoGeneratedCode(autoGenerateCodesField.getValue());
+                    sampleType.setShowParentMetadata(showParentMetadataField.getValue());
                     sampleType.setSubcodeUnique(subcodeUniqueField.getValue());
                     sampleType.setGeneratedCodePrefix(generatedCodePrefixField.getValue());
                     SampleTypeGrid.this.register(sampleType, registrationCallback);
@@ -283,24 +301,32 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                 final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
         {
             final String title = viewContext.getMessage(Dict.LISTABLE);
-            final CheckBoxField field = new CheckBoxField(title, false);
-            field.setValue(value);
-            return field;
+            return createCheckBoxField(title, value);
         }
 
         public static CheckBoxField createUniqueSubcodesField(
                 final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
         {
             final String title = viewContext.getMessage(Dict.SUBCODE_UNIQUE_LABEL);
-            final CheckBoxField field = new CheckBoxField(title, false);
-            field.setValue(value);
-            return field;
+            return createCheckBoxField(title, value);
         }
 
         public static CheckBoxField createAutoGeneratedCodeField(
                 final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
         {
             final String title = viewContext.getMessage(Dict.AUTO_GENERATE_CODES_LABEL);
+            return createCheckBoxField(title, value);
+        }
+
+        public static CheckBoxField createShowParentMetadataField(
+                final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
+        {
+            final String title = viewContext.getMessage(Dict.SHOW_PARENT_METADATA_LABEL);
+            return createCheckBoxField(title, value);
+        }
+
+        private static CheckBoxField createCheckBoxField(final String title, Boolean value)
+        {
             final CheckBoxField field = new CheckBoxField(title, false);
             field.setValue(value);
             return field;
@@ -320,18 +346,14 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
                 final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
         {
             final String title = viewContext.getMessage(Dict.SHOW_PARENTS);
-            final CheckBoxField field = new CheckBoxField(title, false);
-            field.setValue(value);
-            return field;
+            return createCheckBoxField(title, value);
         }
 
         public static CheckBoxField createShowContainerField(
                 final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value)
         {
             final String title = viewContext.getMessage(Dict.SHOW_CONTAINER);
-            final CheckBoxField field = new CheckBoxField(title, false);
-            field.setValue(value);
-            return field;
+            return createCheckBoxField(title, value);
         }
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleTypeGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleTypeGridColumnIDs.java
index e0aeb399dc9..67c660cbb43 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleTypeGridColumnIDs.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleTypeGridColumnIDs.java
@@ -18,16 +18,23 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.dto;
 
 /**
  * Column IDs for sample type grid.
- *
+ * 
  * @author Franz-Josef Elmer
  */
 public class SampleTypeGridColumnIDs extends EntityTypeGridColumnIDs
 {
     public static final String IS_LISTABLE = "IS_LISTABLE";
+
     public static final String IS_SHOW_CONTAINER = "IS_SHOW_CONTAINER";
+
     public static final String IS_SHOW_PARENTS = "IS_SHOW_PARENTS";
+
     public static final String SUBCODE_UNIQUE_LABEL = "SUBCODE_UNIQUE_LABEL";
+
     public static final String AUTO_GENERATE_CODES_LABEL = "AUTO_GENERATE_CODES_LABEL";
+
+    public static final String SHOW_PARENT_METADATA_LABEL = "IS_SHOW_PARENT_METADATA";
+
     public static final String GENERATED_CODE_PREFIX = "GENERATED_CODE_PREFIX";
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleTypeProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleTypeProvider.java
index f630a38b7b0..3d518b8af99 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleTypeProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleTypeProvider.java
@@ -21,6 +21,7 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeG
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeGridColumnIDs.IS_LISTABLE;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeGridColumnIDs.IS_SHOW_CONTAINER;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeGridColumnIDs.IS_SHOW_PARENTS;
+import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeGridColumnIDs.SHOW_PARENT_METADATA_LABEL;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleTypeGridColumnIDs.SUBCODE_UNIQUE_LABEL;
 
 import java.util.List;
@@ -33,7 +34,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder;
 
 /**
  * Provider of {@link DataSetType} instances.
- *
+ * 
  * @author Franz-Josef Elmer
  */
 public class SampleTypeProvider extends EntityTypeProvider<SampleType>
@@ -57,6 +58,7 @@ public class SampleTypeProvider extends EntityTypeProvider<SampleType>
         builder.addColumn(IS_SHOW_PARENTS).withDefaultWidth(200).hideByDefault();
         builder.addColumn(SUBCODE_UNIQUE_LABEL).hideByDefault();
         builder.addColumn(AUTO_GENERATE_CODES_LABEL).hideByDefault();
+        builder.addColumn(SHOW_PARENT_METADATA_LABEL).hideByDefault();
         builder.addColumn(GENERATED_CODE_PREFIX).hideByDefault();
     }
 
@@ -64,10 +66,15 @@ public class SampleTypeProvider extends EntityTypeProvider<SampleType>
     protected void addMoreCells(TypedTableModelBuilder<SampleType> builder, SampleType type)
     {
         builder.column(IS_LISTABLE).addString(SimpleYesNoRenderer.render(type.isListable()));
-        builder.column(IS_SHOW_CONTAINER).addString(SimpleYesNoRenderer.render(type.isShowContainer()));
+        builder.column(IS_SHOW_CONTAINER).addString(
+                SimpleYesNoRenderer.render(type.isShowContainer()));
         builder.column(IS_SHOW_PARENTS).addString(SimpleYesNoRenderer.render(type.isShowParents()));
-        builder.column(SUBCODE_UNIQUE_LABEL).addString(SimpleYesNoRenderer.render(type.isSubcodeUnique()));
-        builder.column(AUTO_GENERATE_CODES_LABEL).addString(SimpleYesNoRenderer.render(type.isAutoGeneratedCode()));
+        builder.column(SUBCODE_UNIQUE_LABEL).addString(
+                SimpleYesNoRenderer.render(type.isSubcodeUnique()));
+        builder.column(AUTO_GENERATE_CODES_LABEL).addString(
+                SimpleYesNoRenderer.render(type.isAutoGeneratedCode()));
+        builder.column(SHOW_PARENT_METADATA_LABEL).addString(
+                SimpleYesNoRenderer.render(type.isShowParentMetadata()));
         builder.column(GENERATED_CODE_PREFIX).addString(type.getGeneratedCodePrefix());
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
index 127d0dc3a15..b00cef8d425 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
@@ -1274,6 +1274,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
             SampleType sampleType = (SampleType) entityType;
             sampleTypePE.setListable(sampleType.isListable());
             sampleTypePE.setAutoGeneratedCode(sampleType.isAutoGeneratedCode());
+            sampleTypePE.setShowParentMetadata(sampleType.isShowParentMetadata());
             sampleTypePE.setGeneratedCodePrefix(sampleType.getGeneratedCodePrefix());
             sampleTypePE.setSubcodeUnique(sampleType.isSubcodeUnique());
             sampleTypePE.setContainerHierarchyDepth(sampleType.getContainerHierarchyDepth());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java
index 6ee68e14797..2d5ec176983 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java
@@ -105,6 +105,7 @@ public final class EntityTypeBO extends AbstractBusinessObject implements IEntit
         sampleTypePE.setListable(entityType.isListable());
         sampleTypePE.setSubcodeUnique(entityType.isSubcodeUnique());
         sampleTypePE.setAutoGeneratedCode(entityType.isAutoGeneratedCode());
+        sampleTypePE.setShowParentMetadata(entityType.isShowParentMetadata());
         sampleTypePE.setGeneratedCodePrefix(entityType.getGeneratedCodePrefix());
         sampleTypePE.setDatabaseInstance(getHomeDatabaseInstance());
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
index 8b14863a247..a2c8285d5b4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
@@ -323,6 +323,7 @@ var common = {
   
   subcode_unique_label: "Unique Subcodes",
   auto_generate_codes_label: "Generate Codes Automatically",
+  show_parent_metadata_label: "Show Parent Metadata",
   generated_code_prefix: "Generated Code Prefix",
   listable: "Listable",
   is_listable: "Listable?",
@@ -330,6 +331,7 @@ var common = {
   show_parents: "Show Parents",
   is_show_container: "Show Container?",
   is_show_parents: "Show Parents?",
+  is_show_parent_metadata: "Show Parent Metadata?",
    
   //
   // Property Type Browser
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
index 374b9bcbfbc..d395812df69 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
@@ -577,6 +577,7 @@ public class ETLServiceTest extends AbstractServerTestCase
                     sampleTypePE.setGeneratedFromHierarchyDepth(new Integer(1));
                     sampleTypePE.setContainerHierarchyDepth(new Integer(1));
                     sampleTypePE.setAutoGeneratedCode(Boolean.FALSE);
+                    sampleTypePE.setShowParentMetadata(Boolean.FALSE);
                     sampleTypePE.setSubcodeUnique(Boolean.FALSE);
                     will(returnValue(sampleTypePE));
                     allowing(daoFactory).getPersistencyResources();
@@ -706,6 +707,7 @@ public class ETLServiceTest extends AbstractServerTestCase
         sampleTypePE.setListable(true);
         sampleTypePE.setAutoGeneratedCode(false);
         sampleTypePE.setSubcodeUnique(false);
+        sampleTypePE.setShowParentMetadata(false);
         sampleTypePE.setGeneratedFromHierarchyDepth(0);
         sampleTypePE.setContainerHierarchyDepth(0);
         final PropertyTypePE propertyTypePE = new PropertyTypePE();
@@ -1378,6 +1380,7 @@ public class ETLServiceTest extends AbstractServerTestCase
         sampleType.setGeneratedFromHierarchyDepth(1);
         sampleType.setListable(false);
         sampleType.setAutoGeneratedCode(false);
+        sampleType.setShowParentMetadata(false);
         sampleType.setSubcodeUnique(false);
         sample.setSampleType(sampleType);
         return sample;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java
index aa5cc59f261..eb411e6add9 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java
@@ -295,6 +295,7 @@ public class CommonTestUtils
         sampleTypePE.setContainerHierarchyDepth(0);
         sampleTypePE.setListable(true);
         sampleTypePE.setAutoGeneratedCode(false);
+        sampleTypePE.setShowParentMetadata(false);
         sampleTypePE.setSubcodeUnique(false);
         return sampleTypePE;
     }
@@ -389,6 +390,7 @@ public class CommonTestUtils
         sampleTypePE.setListable(true);
         sampleTypePE.setAutoGeneratedCode(false);
         sampleTypePE.setSubcodeUnique(false);
+        sampleTypePE.setShowParentMetadata(false);
         sampleTypePE.setGeneratedFromHierarchyDepth(0);
         sampleTypePE.setContainerHierarchyDepth(0);
         connectAndFill(code, code + "ST", dataType, value, propertyPE, entityTypePropertyTypePE,
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/AuthorizationTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/AuthorizationTestCase.java
index a84cf1f5743..0cc544a9136 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/AuthorizationTestCase.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/authorization/AuthorizationTestCase.java
@@ -292,6 +292,7 @@ public class AuthorizationTestCase extends AssertJUnit
         type.setGeneratedFromHierarchyDepth(0);
         type.setListable(true);
         type.setAutoGeneratedCode(false);
+        type.setShowParentMetadata(false);
         type.setSubcodeUnique(false);
         return type;
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/builders/SampleTypePEBuilder.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/builders/SampleTypePEBuilder.java
index 539c62bcefb..e56fea05049 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/builders/SampleTypePEBuilder.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/builders/SampleTypePEBuilder.java
@@ -22,13 +22,13 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePropertyTypePE;
 
 /**
  * Builder for {@link SampleTypePE} instances.
- *
+ * 
  * @author felmer
  */
 public class SampleTypePEBuilder extends AbstractEntityTypePEBuilder
 {
     private final SampleTypePE sampleType = new SampleTypePE();
-    
+
     public SampleTypePEBuilder()
     {
         sampleType.setListable(true);
@@ -36,6 +36,7 @@ public class SampleTypePEBuilder extends AbstractEntityTypePEBuilder
         sampleType.setContainerHierarchyDepth(0);
         sampleType.setSubcodeUnique(true);
         sampleType.setAutoGeneratedCode(false);
+        sampleType.setShowParentMetadata(false);
     }
 
     public SampleTypePE getSampleType()
@@ -51,17 +52,17 @@ public class SampleTypePEBuilder extends AbstractEntityTypePEBuilder
         sampleType.addSampleTypePropertyType(etpt);
         return new EntityTypePropertyTypePEBuilder(etpt, propertyType);
     }
-    
+
     public SampleTypePEBuilder id(long id)
     {
         sampleType.setId(id);
         return this;
     }
-    
+
     public SampleTypePEBuilder code(String code)
     {
         sampleType.setCode(code);
         return this;
     }
-    
+
 }
-- 
GitLab