details:   /erp/devel/pi/rev/13dce580f8f1
changeset: 12262:13dce580f8f1
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Thu May 19 12:45:15 2011 -0700
summary:   Fixes issue 17264: When exporting a dataset in OB3, date fields are 
not correct.

diffstat:

 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateTimeUIDefinition.java
 |  21 ++++++++++
 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateUIDefinition.java
     |  17 ++++++-
 src/org/openbravo/base/model/domaintype/DateDomainType.java                    
                         |   2 +-
 3 files changed, 35 insertions(+), 5 deletions(-)

diffs (108 lines):

diff -r b0e385d74031 -r 13dce580f8f1 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateTimeUIDefinition.java
--- 
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateTimeUIDefinition.java
   Thu May 19 12:44:18 2011 -0700
+++ 
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateTimeUIDefinition.java
   Thu May 19 12:45:15 2011 -0700
@@ -18,6 +18,11 @@
  */
 package org.openbravo.client.kernel.reference;
 
+import java.util.Date;
+
+import org.openbravo.base.exception.OBException;
+import org.openbravo.base.model.domaintype.PrimitiveDomainType;
+
 /**
  * Implementation of the date time ui definition.
  * 
@@ -35,4 +40,20 @@
     return "OBDateTimeItem";
   }
 
+  @Override
+  public synchronized Object createFromClassicString(String value) {
+    try {
+      if (value == null || value.length() == 0 || value.equals("null")) {
+        return null;
+      }
+      if (value.contains("T")) {
+        return value;
+      }
+      final Date date = getClassicFormat().parse(value);
+      return ((PrimitiveDomainType) getDomainType()).convertToString(date);
+    } catch (Exception e) {
+      throw new OBException(e);
+    }
+  }
+
 }
diff -r b0e385d74031 -r 13dce580f8f1 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateUIDefinition.java
--- 
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateUIDefinition.java
       Thu May 19 12:44:18 2011 -0700
+++ 
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/DateUIDefinition.java
       Thu May 19 12:45:15 2011 -0700
@@ -23,7 +23,6 @@
 
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.base.exception.OBException;
-import org.openbravo.base.model.domaintype.PrimitiveDomainType;
 import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.model.ad.ui.Field;
 
@@ -34,10 +33,12 @@
  */
 public class DateUIDefinition extends UIDefinition {
   private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss";
+  private static final String UIPATTERN = "yyyy-MM-dd";
 
   private SimpleDateFormat format = null;
   private String lastUsedPattern = null;
   private SimpleDateFormat dateFormat = null;
+  private SimpleDateFormat uiDateFormat = null;
 
   public SimpleDateFormat getFormat() {
     if (format == null) {
@@ -79,7 +80,7 @@
     }
   }
 
-  private SimpleDateFormat getClassicFormat() {
+  protected SimpleDateFormat getClassicFormat() {
     String pattern = 
RequestContext.get().getSessionAttribute("#AD_JAVADATEFORMAT").toString();
     if (dateFormat == null || !pattern.equals(lastUsedPattern)) {
       dateFormat = new SimpleDateFormat(pattern);
@@ -89,8 +90,16 @@
     return dateFormat;
   }
 
+  private SimpleDateFormat getUIFormat() {
+    if (uiDateFormat == null) {
+      uiDateFormat = new SimpleDateFormat(UIPATTERN);
+      uiDateFormat.setLenient(true);
+    }
+    return uiDateFormat;
+  }
+
   @Override
-  public String convertToClassicString(Object value) {
+  public synchronized String convertToClassicString(Object value) {
     if (value == null) {
       return "";
     }
@@ -107,7 +116,7 @@
         return value;
       }
       final Date date = getClassicFormat().parse(value);
-      return ((PrimitiveDomainType) getDomainType()).convertToString(date);
+      return getUIFormat().format(date);
     } catch (Exception e) {
       throw new OBException(e);
     }
diff -r b0e385d74031 -r 13dce580f8f1 
src/org/openbravo/base/model/domaintype/DateDomainType.java
--- a/src/org/openbravo/base/model/domaintype/DateDomainType.java       Thu May 
19 12:44:18 2011 -0700
+++ b/src/org/openbravo/base/model/domaintype/DateDomainType.java       Thu May 
19 12:45:15 2011 -0700
@@ -31,7 +31,7 @@
 
 public class DateDomainType extends BasePrimitiveDomainType {
 
-  private final SimpleDateFormat xmlDateFormat = new 
SimpleDateFormat("yyyy-MM-dd");
+  private final SimpleDateFormat xmlDateFormat = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'");
 
   public DateDomainType() {
     xmlDateFormat.setLenient(true);

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to