Thanks Scott for the suggestion, I have fixed into trunk rev. 1127651.

Marco

Il giorno 23/mag/2011, alle ore 23.21, Scott Gray ha scritto:

> Use the simple-map-processor for validation:
>        <call-map-processor in-map-name="context" out-map-name="context">
>            <simple-map-processor name="inputValidate">
>                <process field="startingDrawer"><convert 
> type="BigDecimal"><fail-message message="Insert a valid starting drawer 
> amount"/></convert></process>
>            </simple-map-processor>
>        </call-map-processor>
> 
> Regards
> Scott
> 
> HotWax Media
> http://www.hotwaxmedia.com
> 
> On 24/05/2011, at 7:05 AM, risali...@gmail.com wrote:
> 
>> Hi Scott,
>> 
>> I agree with you but when I did it (probably one year ago) I see that if I 
>> use the method simpleTypeConvert the exception is not recognized by 
>> call-class-method and then the exception is shown to the final user, 
>> something similar to:
>> 
>> ERROR: Could not complete the Open Terminal 
>> [file:/ofbiz_webpos2/specialpurpose/webpos/script/org/ofbiz/webpos/event/ManagerEvents.xml#openTerminal]
>>  process [Method to execute named simpleTypeConvert threw an exception: 
>> org.ofbiz.base.util.GeneralException: java.text.ParseException: Unparseable 
>> number: "a33ee" (java.text.ParseException: Unparseable number: "a33ee")]
>> 
>> instead using my method the user see this error:
>> 
>> Insert a valid starting drawer amount
>> 
>> I agree to use only one method for conversion (so the standard one 
>> simpleTypeConvert) but in this case I need to trap the exception in the 
>> simple method.
>> 
>> Any hint to solve this problem and then remove the method 
>> UtilNumber.stringToBigDecimal.
>> 
>> On markmail I found this old thread:
>> 
>> http://ofbiz.markmail.org/search/?q=exception%20in%20call-class-method#query:exception%20in%20call-class-method+page:1+mid:orxqauretvhwuznf+state:results
>> 
>> Thanks
>> Marco
>> 
>> 
>>> Hi Marco,
>>> 
>>> We have the conversion framework for converting Strings to BigDecimals so 
>>> there is no need to implement a new method for it:
>>> BigDecimal bigDecimal = (BigDecimal) ObjectType.simpleTypeConvert(object, 
>>> "BigDecimal", null, locale);
>>> 
>>> Regards
>>> Scott
>>> 
>>> On 23/05/2011, at 1:11 AM, mrisal...@apache.org wrote:
>>> 
>>>> Author: mrisaliti
>>>> Date: Sun May 22 13:11:17 2011
>>>> New Revision: 1125951
>>>> 
>>>> URL: http://svn.apache.org/viewvc?rev=1125951&view=rev
>>>> Log:
>>>> Webpos2 improved version (OFBIZ-4287)
>>>> 
>>> [snip]
>>>> 
>>>> 
>>>> Modified: 
>>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilNumber.java
>>>> URL: 
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilNumber.java?rev=1125951&r1=1125950&r2=1125951&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilNumber.java 
>>>> (original)
>>>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilNumber.java Sun 
>>>> May 22 13:11:17 2011
>>>> @@ -20,6 +20,8 @@
>>>> package org.ofbiz.base.util;
>>>> 
>>>> import java.math.BigDecimal;
>>>> +import java.text.NumberFormat;
>>>> +import java.text.ParseException;
>>>> import java.util.HashMap;
>>>> import java.util.Locale;
>>>> 
>>>> @@ -250,4 +252,27 @@ public class UtilNumber {
>>>> 
>>>>      return (bd.toString() + "%");
>>>>  }
>>>> +    
>>>> +    /**
>>>> +      * Method to convert a string into BigDecimal.
>>>> +      *
>>>> +      * @param stringToConvert String to convert to BigDecimal
>>>> +      * @return                The string converted to BigDecimal
>>>> +      */
>>>> +    public static BigDecimal stringToBigDecimal(String stringToConvert, 
>>>> Locale locale) {
>>>> +        if (stringToConvert != null && stringToConvert != "") {
>>>> +            Number numb = null;
>>>> +            NumberFormat nf = NumberFormat.getInstance(locale);
>>>> +            nf.setMaximumFractionDigits(10);
>>>> +            try {
>>>> +                numb = nf.parse(stringToConvert);
>>>> +                return (new BigDecimal(numb.toString()));
>>>> +            } catch (ParseException e) {
>>>> +                return null;
>>>> +            }
>>>> +        }
>>>> +        else {
>>>> +            return null;
>>>> +        }
>>>> +    }
>>>> }
>>>> 
>>> 
>> 
> 

Reply via email to