You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Adrian Crum <ad...@hlmksw.com> on 2009/07/08 17:07:45 UTC

Re: svn commit: r792113 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java

Anil,

There are a number of UI helper methods like this already in 
ExpressionUIHelper.java.

-Adrian

apatel@apache.org wrote:
> Author: apatel
> Date: Wed Jul  8 12:33:16 2009
> New Revision: 792113
> 
> URL: http://svn.apache.org/viewvc?rev=792113&view=rev
> Log:
> Added method to return List of month number and month name entries for the year. Will be useful for building dropdown lists.
> 
> Modified:
>     ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
> 
> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=792113&r1=792112&r2=792113&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java (original)
> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java Wed Jul  8 12:33:16 2009
> @@ -33,6 +33,8 @@
>  import java.util.Map;
>  import java.util.TimeZone;
>  
> +import javolution.util.FastMap;
> +
>  /**
>   * Utility class for handling java.util.Date, the java.sql data/time classes and related
>   */
> @@ -955,6 +957,27 @@
>      }
>  
>      /**
> +     * Returns a List of Maps of month number and name entries - suitable for select inputs.
> +     *
> +     * @param locale
> +     * @return List of month number, name
> +     */
> +    public static List<Map<String,Object>> getMonths(Locale locale) {
> +        Calendar tempCal = Calendar.getInstance(locale);
> +        tempCal.set(Calendar.MONTH, Calendar.JANUARY);
> +        SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM", locale);
> +        List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();
> +        for (int i = Calendar.JANUARY; i <= tempCal.getActualMaximum(Calendar.MONTH); i++) {
> +            Map<String,Object> monthEntry = new FastMap<String,Object>();
> +            monthEntry.put("monthNumber",tempCal.get(Calendar.MONTH));
> +            monthEntry.put("monthName",dateFormat.format(tempCal.getTime()));
> +            resultList.add(monthEntry);
> +            tempCal.roll(Calendar.MONTH, 1);
> +        }
> +        return resultList;
> +    }
> +
> +    /**
>       * Returns an initialized DateFormat object.
>       *
>       * @param dateFormat
> 
> 
> 

Re: svn commit: r792113 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java

Posted by Adrian Crum <ad...@hlmksw.com>.
The problem is in line 1647 of ModelFormField.java (which assumes the 
key is a String). Any fixes should be done there.

-Adrian

Anil Patel wrote:
> Adrian,
> 
> I started to use ExpressionUIHelper.getMonthValueList() for populating 
> months in form dropdown elements. We are facing problem when value 
> returned by ExpressionUIHelper.getMonthValueList is given to Form widget 
> dropdown element,
> 
> {code}
> +    <form name="MonthlyTrialBalance" type="single" 
> target="MonthlyTrialBalance" title="Find list of monthly transaction 
> totals"
> +          header-row-style="header-row" default-table-style="basic-table">
> +
> +        <field name="organizationPartyId"><hidden/></field>
> +        <field name="trialBalanceMonth" required-field="true">
> +            <drop-down>
> +                <list-options list-name="monthList" key-name="value" 
> description="${description}"/>
> +            </drop-down>
> +        </field>
> +        <field name="isPosted">
> +            <drop-down>
> +                <option description="${uiLabelMap.CommonYes}" key="Y"/>
> +                <option description="${uiLabelMap.CommonNo}" key="N"/>
> +                <option description="${uiLabelMap.CommonAll}" key="All"/>
> +            </drop-down>
> +        </field>
> +        <field name="submitButton" widget-style="smallSubmit"><submit 
> button-type="button"/></field>
> +    </form>
> {code}
> 
> we get following error
> 
> {error}
> 
> [component://common/widget/CommonScreens.xml#GlobalDecorator]: 
> java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> java.lang.Stringjava.lang.ClassCastException: java.lang.Integer cannot 
> be cast to java.lang.String (java.lang.Integer cannot be cast to 
> java.lang.String)
> ---- cause 
> ---------------------------------------------------------------------
> Exception: java.lang.ClassCastException
> Message: java.lang.Integer cannot be cast to java.lang.String
> ---- stack trace 
> ---------------------------------------------------------------
> java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> java.lang.String
> org.ofbiz.widget.form.ModelFormField$ListOptions.addOptionValues(ModelFormField.java:1647) 
> 
> org.ofbiz.widget.form.ModelFormField$FieldInfoWithOptions.getAllOptionValues(ModelFormField.java:1525) 
> 
> org.ofbiz.widget.form.MacroFormRenderer.renderDropDownField(MacroFormRenderer.java:652) 
> 
> org.ofbiz.widget.form.ModelFormField$DropDownField.renderFieldString(ModelFormField.java:2954) 
> 
> org.ofbiz.widget.form.ModelFormField.renderFieldString(ModelFormField.java:592) 
> 
> org.ofbiz.widget.form.ModelForm.renderSingleFormString(ModelForm.java:1028)
> org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:811)
> org.ofbiz.widget.screen.ModelScreenWidget$Form.renderWidgetString(ModelScreenWidget.java:828) 
> 
> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:138) 
> 
> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:691) 
> 
> 
> {error}
> 
> We can resolve this error if we modify ExpressionUiHelper.java file at 
> line 99 to following statement.
> 
> {code}
> result.add(UtilMisc.toMap("description", 
> dateFormat.format(tempCal.getTime()), "value", String.valueOf(i)));
> {code}
> 
> If you don't mind I'll make this modification and then replace ftl 
> (committed in r794667 ) with form widget code.
> 
> Regards
> Anil Patel
> 
> On Jul 8, 2009, at 8:37 PM, Adrian Crum wrote:
> 
>> Anil,
>>
>> There are a number of UI helper methods like this already in 
>> ExpressionUIHelper.java.
>>
>> -Adrian
>>
>> apatel@apache.org wrote:
>>> Author: apatel
>>> Date: Wed Jul  8 12:33:16 2009
>>> New Revision: 792113
>>> URL: http://svn.apache.org/viewvc?rev=792113&view=rev
>>> Log:
>>> Added method to return List of month number and month name entries 
>>> for the year. Will be useful for building dropdown lists.
>>> Modified:
>>>    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
>>> Modified: 
>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
>>> URL: 
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=792113&r1=792112&r2=792113&view=diff 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java 
>>> (original)
>>> +++ 
>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java 
>>> Wed Jul  8 12:33:16 2009
>>> @@ -33,6 +33,8 @@
>>> import java.util.Map;
>>> import java.util.TimeZone;
>>> +import javolution.util.FastMap;
>>> +
>>> /**
>>>  * Utility class for handling java.util.Date, the java.sql data/time 
>>> classes and related
>>>  */
>>> @@ -955,6 +957,27 @@
>>>     }
>>>      /**
>>> +     * Returns a List of Maps of month number and name entries - 
>>> suitable for select inputs.
>>> +     *
>>> +     * @param locale
>>> +     * @return List of month number, name
>>> +     */
>>> +    public static List<Map<String,Object>> getMonths(Locale locale) {
>>> +        Calendar tempCal = Calendar.getInstance(locale);
>>> +        tempCal.set(Calendar.MONTH, Calendar.JANUARY);
>>> +        SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM", 
>>> locale);
>>> +        List<Map<String,Object>> resultList = new 
>>> ArrayList<Map<String,Object>>();
>>> +        for (int i = Calendar.JANUARY; i <= 
>>> tempCal.getActualMaximum(Calendar.MONTH); i++) {
>>> +            Map<String,Object> monthEntry = new 
>>> FastMap<String,Object>();
>>> +            monthEntry.put("monthNumber",tempCal.get(Calendar.MONTH));
>>> +            
>>> monthEntry.put("monthName",dateFormat.format(tempCal.getTime()));
>>> +            resultList.add(monthEntry);
>>> +            tempCal.roll(Calendar.MONTH, 1);
>>> +        }
>>> +        return resultList;
>>> +    }
>>> +
>>> +    /**
>>>      * Returns an initialized DateFormat object.
>>>      *
>>>      * @param dateFormat
> 
> 

Re: svn commit: r792113 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java

Posted by Anil Patel <an...@hotwaxmedia.com>.
Adrian,

I started to use ExpressionUIHelper.getMonthValueList() for populating  
months in form dropdown elements. We are facing problem when value  
returned by ExpressionUIHelper.getMonthValueList is given to Form  
widget dropdown element,

{code}
+    <form name="MonthlyTrialBalance" type="single"  
target="MonthlyTrialBalance" title="Find list of monthly transaction  
totals"
+          header-row-style="header-row" default-table-style="basic- 
table">
+
+        <field name="organizationPartyId"><hidden/></field>
+        <field name="trialBalanceMonth" required-field="true">
+            <drop-down>
+                <list-options list-name="monthList" key-name="value"  
description="${description}"/>
+            </drop-down>
+        </field>
+        <field name="isPosted">
+            <drop-down>
+                <option description="${uiLabelMap.CommonYes}" key="Y"/>
+                <option description="${uiLabelMap.CommonNo}" key="N"/>
+                <option description="${uiLabelMap.CommonAll}"  
key="All"/>
+            </drop-down>
+        </field>
+        <field name="submitButton" widget-style="smallSubmit"><submit  
button-type="button"/></field>
+    </form>
{code}

we get following error

{error}

[component://common/widget/CommonScreens.xml#GlobalDecorator]:  
java.lang.ClassCastException: java.lang.Integer cannot be cast to  
java.lang.Stringjava.lang.ClassCastException: java.lang.Integer cannot  
be cast to java.lang.String (java.lang.Integer cannot be cast to  
java.lang.String)
---- cause  
---------------------------------------------------------------------
Exception: java.lang.ClassCastException
Message: java.lang.Integer cannot be cast to java.lang.String
---- stack trace  
---------------------------------------------------------------
java.lang.ClassCastException: java.lang.Integer cannot be cast to  
java.lang.String
org.ofbiz.widget.form.ModelFormField 
$ListOptions.addOptionValues(ModelFormField.java:1647)
org.ofbiz.widget.form.ModelFormField 
$FieldInfoWithOptions.getAllOptionValues(ModelFormField.java:1525)
org 
.ofbiz 
.widget 
.form.MacroFormRenderer.renderDropDownField(MacroFormRenderer.java:652)
org.ofbiz.widget.form.ModelFormField 
$DropDownField.renderFieldString(ModelFormField.java:2954)
org 
.ofbiz 
.widget.form.ModelFormField.renderFieldString(ModelFormField.java:592)
org.ofbiz.widget.form.ModelForm.renderSingleFormString(ModelForm.java: 
1028)
org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:811)
org.ofbiz.widget.screen.ModelScreenWidget 
$Form.renderWidgetString(ModelScreenWidget.java:828)
org 
.ofbiz 
.widget 
.screen 
.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:138)
org.ofbiz.widget.screen.ModelScreenWidget 
$DecoratorSection.renderWidgetString(ModelScreenWidget.java:691)

{error}

We can resolve this error if we modify ExpressionUiHelper.java file at  
line 99 to following statement.

{code}
result.add(UtilMisc.toMap("description",  
dateFormat.format(tempCal.getTime()), "value", String.valueOf(i)));
{code}

If you don't mind I'll make this modification and then replace ftl  
(committed in r794667 ) with form widget code.

Regards
Anil Patel

On Jul 8, 2009, at 8:37 PM, Adrian Crum wrote:

> Anil,
>
> There are a number of UI helper methods like this already in  
> ExpressionUIHelper.java.
>
> -Adrian
>
> apatel@apache.org wrote:
>> Author: apatel
>> Date: Wed Jul  8 12:33:16 2009
>> New Revision: 792113
>> URL: http://svn.apache.org/viewvc?rev=792113&view=rev
>> Log:
>> Added method to return List of month number and month name entries  
>> for the year. Will be useful for building dropdown lists.
>> Modified:
>>    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ 
>> UtilDateTime.java
>> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ 
>> UtilDateTime.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=792113&r1=792112&r2=792113&view=diff
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ 
>> UtilDateTime.java (original)
>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ 
>> UtilDateTime.java Wed Jul  8 12:33:16 2009
>> @@ -33,6 +33,8 @@
>> import java.util.Map;
>> import java.util.TimeZone;
>> +import javolution.util.FastMap;
>> +
>> /**
>>  * Utility class for handling java.util.Date, the java.sql data/ 
>> time classes and related
>>  */
>> @@ -955,6 +957,27 @@
>>     }
>>      /**
>> +     * Returns a List of Maps of month number and name entries -  
>> suitable for select inputs.
>> +     *
>> +     * @param locale
>> +     * @return List of month number, name
>> +     */
>> +    public static List<Map<String,Object>> getMonths(Locale  
>> locale) {
>> +        Calendar tempCal = Calendar.getInstance(locale);
>> +        tempCal.set(Calendar.MONTH, Calendar.JANUARY);
>> +        SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM",  
>> locale);
>> +        List<Map<String,Object>> resultList = new  
>> ArrayList<Map<String,Object>>();
>> +        for (int i = Calendar.JANUARY; i <=  
>> tempCal.getActualMaximum(Calendar.MONTH); i++) {
>> +            Map<String,Object> monthEntry = new  
>> FastMap<String,Object>();
>> +             
>> monthEntry.put("monthNumber",tempCal.get(Calendar.MONTH));
>> +             
>> monthEntry.put("monthName",dateFormat.format(tempCal.getTime()));
>> +            resultList.add(monthEntry);
>> +            tempCal.roll(Calendar.MONTH, 1);
>> +        }
>> +        return resultList;
>> +    }
>> +
>> +    /**
>>      * Returns an initialized DateFormat object.
>>      *
>>      * @param dateFormat