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"});
     }


Reply via email to