You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Scott Gray <sc...@hotwaxmedia.com> on 2011/05/23 05:30:32 UTC

Re: svn commit: r1125951 [1/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

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, mrisaliti@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;
> +        }
> +    }
> }
> 


Re: svn commit: r1125951 [1/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

Posted by "risalitim@gmail.com" <ri...@gmail.com>.
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, risalitim@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, mrisaliti@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;
>>>> +        }
>>>> +    }
>>>> }
>>>> 
>>> 
>> 
> 


Re: svn commit: r1125951 [1/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

Posted by Scott Gray <sc...@hotwaxmedia.com>.
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, risalitim@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, mrisaliti@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;
>>> +        }
>>> +    }
>>> }
>>> 
>> 
> 


Re: svn commit: r1125951 [1/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

Posted by "risalitim@gmail.com" <ri...@gmail.com>.
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, mrisaliti@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;
>> +        }
>> +    }
>> }
>> 
>