From d41fe39f1950253669ba3c5be2aba3598a0045b2 Mon Sep 17 00:00:00 2001
From: izabel <izabel>
Date: Tue, 25 Nov 2008 12:18:47 +0000
Subject: [PATCH] [LMS-651] allow to register sample with properties of type
 different than string

SVN: 9095
---
 .../client/application/GenericConstants.java  |  2 ++
 .../application/renderer/DateRenderer.java    |  5 ++++-
 .../util/SampleToRegisterTranslator.java      |  8 +++++---
 .../sample/GenericSampleRegistrationForm.java | 19 ++++++++++++++++++-
 4 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
index 55154a14b30..a4c80dc8741 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
@@ -43,4 +43,6 @@ public class GenericConstants
     }
 
     public final static String CODE_PATTERN = "^[A-Z0-9_\\-]+$";
+
+    public static final String DEFAULT_DATE_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss zzz";
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/DateRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/DateRenderer.java
index d340dd85428..984eef1fa91 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/DateRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/DateRenderer.java
@@ -20,6 +20,8 @@ import java.util.Date;
 
 import com.google.gwt.i18n.client.DateTimeFormat;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
+
 /**
  * A <i>static</i> class to render {@link java.util.Date}.
  * 
@@ -30,7 +32,8 @@ public final class DateRenderer
     /**
      * Default date format.
      */
-    private static final String DEFAULT_DATE_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss zzz";
+    private static final String DEFAULT_DATE_FORMAT_PATTERN =
+            GenericConstants.DEFAULT_DATE_FORMAT_PATTERN;
 
     /**
      * Default {@link DateTimeFormat}.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleToRegisterTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleToRegisterTranslator.java
index 42280c583bc..18f1c2f5250 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleToRegisterTranslator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleToRegisterTranslator.java
@@ -28,6 +28,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureE
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleToRegisterDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
+import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityDataType;
+import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityPropertyValue;
 
 /**
  * @author Izabela Adamczyk
@@ -57,9 +59,9 @@ public class SampleToRegisterTranslator
         for (SampleProperty property : properties)
         {
             PropertyType propertyType = property.getEntityTypePropertyType().getPropertyType();
-            simpleProperties.add(new SimpleEntityProperty(propertyType.getCode(), propertyType
-                    .getLabel(), DataTypeTranslator.translate(propertyType.getDataType()), property
-                    .getValue()));
+            EntityDataType dataType = DataTypeTranslator.translate(propertyType.getDataType());
+            simpleProperties.add(EntityPropertyValue.createFromUntyped(property.getValue(),
+                    dataType).createSimple(propertyType.getCode(), propertyType.getLabel()));
         }
         result.setProperties(simpleProperties.toArray(new SimpleEntityProperty[0]));
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java
index 19a6a2a4500..3b485adaf4b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import com.extjs.gxt.ui.client.Events;
@@ -36,6 +37,7 @@ import com.extjs.gxt.ui.client.widget.form.LabelField;
 import com.extjs.gxt.ui.client.widget.form.MultiField;
 import com.extjs.gxt.ui.client.widget.form.TextField;
 import com.extjs.gxt.ui.client.widget.form.Validator;
+import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.ListBox;
 
@@ -225,6 +227,21 @@ public final class GenericSampleRegistrationForm extends FormPanel
         }
     }
 
+    String valueToString(Object value)
+    {
+        if (value == null)
+        {
+            return null;
+        } else if (value instanceof Date)
+        {
+            return DateTimeFormat.getFormat(GenericConstants.DEFAULT_DATE_FORMAT_PATTERN).format(
+                    (Date) value);
+        } else
+        {
+            return value.toString();
+        }
+    }
+
     private void submitForm()
     {
         if (isValid())
@@ -238,7 +255,7 @@ public final class GenericSampleRegistrationForm extends FormPanel
                 {
                     SampleTypePropertyType stpt = field.getData(ETPT);
                     SampleProperty sp = new SampleProperty();
-                    sp.setValue(field.getValue().toString());
+                    sp.setValue(valueToString(field.getValue()));
                     sp.setEntityTypePropertyType(stpt);
                     sampleToRegister.addProperty(sp);
                 }
-- 
GitLab