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"}); } |
Free forum by Nabble | Edit this page |