svn commit: r917367 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base: conversion/DateTimeConverters.java util/test/ObjectTypeTests.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r917367 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base: conversion/DateTimeConverters.java util/test/ObjectTypeTests.java

doogie-3
Author: doogie
Date: Mon Mar  1 03:14:59 2010
New Revision: 917367

URL: http://svn.apache.org/viewvc?rev=917367&view=rev
Log:
BUG FIX: in StringToDuration converter, handle the case where there is
no : in the string, and it's just a plain number.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java?rev=917367&r1=917366&r2=917367&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java Mon Mar  1 03:14:59 2010
@@ -19,6 +19,7 @@
 package org.ofbiz.base.conversion;
 
 import java.text.DateFormat;
+import java.text.NumberFormat;
 import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
@@ -409,13 +410,32 @@
         }
     }
 
-    public static class StringToDuration extends AbstractConverter<String, TimeDuration> {
+    public static class StringToDuration extends AbstractLocalizedConverter<String, TimeDuration> {
         public StringToDuration() {
             super(String.class, TimeDuration.class);
         }
 
+        public TimeDuration convert(String obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException {
+            return convert(obj, locale, timeZone);
+        }
+
+        public TimeDuration convert(String obj, Locale locale, TimeZone timeZone) throws ConversionException {
+            if (!obj.contains(":")) {
+                // Encoded duration
+                try {
+                    NumberFormat nf = NumberFormat.getNumberInstance(locale);
+                    nf.setMaximumFractionDigits(0);
+                    Number number = nf.parse(obj);
+                    return TimeDuration.fromNumber(number);
+                } catch (ParseException e) {
+                    throw new ConversionException(e);
+                }
+            }
+            return convert(obj);
+        }
+
         public TimeDuration convert(String obj) throws ConversionException {
-             return TimeDuration.parseDuration(obj);
+            return TimeDuration.parseDuration(obj);
         }
     }
 

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java?rev=917367&r1=917366&r2=917367&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java Mon Mar  1 03:14:59 2010
@@ -240,7 +240,7 @@
         simpleTypeConvertTestSingleMulti("String->Map", "{one=1, two=2, three=3}", new String[] {"Map", "java.util.Map"}, map);
         simpleTypeConvertTestError("String->Map(error-1)", "{one=1, two=2, three=3", new String[] {"Map", "java.util.Map"});
         simpleTypeConvertTestError("String->Map(error-2)", "one=1, two=2, three=3}", new String[] {"Map", "java.util.Map"});
-        //BUG simpleTypeConvertTestSingleMulti("String->TimeDuration(number)", "3,661,001", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, null, localeData, duration);
+        simpleTypeConvertTestSingleMulti("String->TimeDuration(number)", "3,661,001", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, null, localeData, duration);
         simpleTypeConvertTestMultiMulti("String->TimeDuration(string)", new String[] {"1:1:1:1"}, new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
         //BUG simpleTypeConvertTestError("String->error-TimeDuration", "o", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"});
     }