KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > myfaces > taglib > core > ConvertNumberTag


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.myfaces.taglib.core;
17
18 import java.util.Locale JavaDoc;
19 import javax.faces.context.FacesContext;
20 import javax.faces.convert.Converter;
21 import javax.faces.convert.NumberConverter;
22 import javax.faces.el.ValueBinding;
23 import javax.faces.webapp.ConverterTag;
24 import javax.faces.webapp.UIComponentTag;
25 import javax.servlet.jsp.JspException JavaDoc;
26 import javax.servlet.jsp.PageContext JavaDoc;
27
28 /**
29  * $Log: ConvertNumberTag.java,v $
30  * Revision 1.7 2004/11/22 16:13:08 bdudney
31  * added code to make sure the converterId is set in WebLogic8.1sp3.
32  *
33  * Revision 1.6 2004/10/13 11:51:00 matze
34  * renamed packages to org.apache
35  *
36  * Revision 1.5 2004/07/01 22:05:03 mwessendorf
37  * ASF switch
38  *
39  * Revision 1.4 2004/06/27 19:26:18 mwessendorf
40  * added default value, needed by jsf-spec
41  *
42  * Revision 1.3 2004/06/26 00:34:23 o_rossmueller
43  * fix #979039: default type = number for convertNumber
44  *
45  * Revision 1.2 2004/03/26 11:47:10 manolito
46  * NPE fixed
47  *
48  * @author Manfred Geiler (latest modification by $Author: bdudney $)
49  * @version $Revision: 1.7 $ $Date: 2004/11/22 16:13:08 $
50  */

51 public class ConvertNumberTag
52         extends ConverterTag
53 {
54     private String JavaDoc _currencyCode = null;
55     private String JavaDoc _currencySymbol = null;
56     private String JavaDoc _groupingUsed = "true"; // default value as required by the spec
57
private String JavaDoc _integerOnly = "false"; // default value as required by the spec
58
private String JavaDoc _locale = null;
59     private String JavaDoc _maxFractionDigits = null;
60     private String JavaDoc _maxIntegerDigits = null;
61     private String JavaDoc _minFractionDigits = null;
62     private String JavaDoc _minIntegerDigits = null;
63     private String JavaDoc _pattern = null;
64     private String JavaDoc _type = "number"; // default value as required by the spec
65

66     public ConvertNumberTag()
67     {
68         setConverterId(NumberConverter.CONVERTER_ID);
69     }
70
71     public void setCurrencyCode(String JavaDoc currencyCode)
72     {
73         _currencyCode = currencyCode;
74     }
75
76     public void setCurrencySymbol(String JavaDoc currencySymbol)
77     {
78         _currencySymbol = currencySymbol;
79     }
80
81     public void setGroupingUsed(String JavaDoc groupingUsed)
82     {
83         _groupingUsed = groupingUsed;
84     }
85
86     public void setIntegerOnly(String JavaDoc integerOnly)
87     {
88         _integerOnly = integerOnly;
89     }
90
91     public void setLocale(String JavaDoc locale)
92     {
93         _locale = locale;
94     }
95
96     public void setMaxFractionDigits(String JavaDoc maxFractionDigits)
97     {
98         _maxFractionDigits = maxFractionDigits;
99     }
100
101     public void setMaxIntegerDigits(String JavaDoc maxIntegerDigits)
102     {
103         _maxIntegerDigits = maxIntegerDigits;
104     }
105
106     public void setMinFractionDigits(String JavaDoc minFractionDigits)
107     {
108         _minFractionDigits = minFractionDigits;
109     }
110
111     public void setMinIntegerDigits(String JavaDoc minIntegerDigits)
112     {
113         _minIntegerDigits = minIntegerDigits;
114     }
115
116     public void setPattern(String JavaDoc pattern)
117     {
118         _pattern = pattern;
119     }
120
121     public void setType(String JavaDoc type)
122     {
123         _type = type;
124     }
125
126     public void setPageContext(PageContext JavaDoc context)
127     {
128         super.setPageContext(context);
129         setConverterId(NumberConverter.CONVERTER_ID);
130     }
131
132     protected Converter createConverter() throws JspException JavaDoc
133     {
134         NumberConverter converter = (NumberConverter)super.createConverter();
135
136         FacesContext facesContext = FacesContext.getCurrentInstance();
137         setConverterCurrencyCode(facesContext, converter, _currencyCode);
138         setConverterCurrencySymbol(facesContext, converter, _currencySymbol);
139         setConverterGroupingUsed(facesContext, converter, _groupingUsed);
140         setConverterIntegerOnly(facesContext, converter, _integerOnly);
141         setConverterLocale(facesContext, converter, _locale);
142         setConverterMaxFractionDigits(facesContext, converter, _maxFractionDigits);
143         setConverterMaxIntegerDigits(facesContext, converter, _maxIntegerDigits);
144         setConverterMinFractionDigits(facesContext, converter, _minFractionDigits);
145         setConverterMinIntegerDigits(facesContext, converter, _minIntegerDigits);
146         setConverterPattern(facesContext, converter, _pattern);
147         setConverterType(facesContext, converter, _type);
148
149         return converter;
150     }
151
152
153     private static void setConverterCurrencyCode(FacesContext facesContext,
154                                               NumberConverter converter,
155                                               String JavaDoc value)
156     {
157         if (value == null) return;
158         if (UIComponentTag.isValueReference(value))
159         {
160             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
161             converter.setCurrencyCode((String JavaDoc)vb.getValue(facesContext));
162         }
163         else
164         {
165             converter.setCurrencyCode(value);
166         }
167     }
168
169     private static void setConverterCurrencySymbol(FacesContext facesContext,
170                                               NumberConverter converter,
171                                               String JavaDoc value)
172     {
173         if (value == null) return;
174         if (UIComponentTag.isValueReference(value))
175         {
176             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
177             converter.setCurrencySymbol((String JavaDoc)vb.getValue(facesContext));
178         }
179         else
180         {
181             converter.setCurrencySymbol(value);
182         }
183     }
184
185     private static void setConverterGroupingUsed(FacesContext facesContext,
186                                               NumberConverter converter,
187                                               String JavaDoc value)
188     {
189         if (value == null) return;
190         if (UIComponentTag.isValueReference(value))
191         {
192             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
193             Boolean JavaDoc b = (Boolean JavaDoc)vb.getValue(facesContext);
194             if (b != null)
195             {
196                 converter.setGroupingUsed(b.booleanValue());
197             }
198         }
199         else
200         {
201             converter.setGroupingUsed(Boolean.valueOf(value).booleanValue());
202         }
203     }
204
205     private static void setConverterIntegerOnly(FacesContext facesContext,
206                                               NumberConverter converter,
207                                               String JavaDoc value)
208     {
209         if (value == null) return;
210         if (UIComponentTag.isValueReference(value))
211         {
212             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
213             Boolean JavaDoc b = (Boolean JavaDoc)vb.getValue(facesContext);
214             if (b != null)
215             {
216                 converter.setIntegerOnly(b.booleanValue());
217             }
218         }
219         else
220         {
221             converter.setIntegerOnly(Boolean.valueOf(value).booleanValue());
222         }
223     }
224
225     private static void setConverterLocale(FacesContext facesContext,
226                                               NumberConverter converter,
227                                               String JavaDoc value)
228     {
229         if (value == null) return;
230         if (UIComponentTag.isValueReference(value))
231         {
232             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
233             converter.setLocale((Locale JavaDoc)vb.getValue(facesContext));
234         }
235         else
236         {
237             throw new IllegalArgumentException JavaDoc("Attribute locale of type String not supported");
238         }
239     }
240
241     private static void setConverterMaxFractionDigits(FacesContext facesContext,
242                                               NumberConverter converter,
243                                               String JavaDoc value)
244     {
245         if (value == null) return;
246         if (UIComponentTag.isValueReference(value))
247         {
248             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
249             Integer JavaDoc i = (Integer JavaDoc)vb.getValue(facesContext);
250             if (i != null)
251             {
252                 converter.setMaxFractionDigits(i.intValue());
253             }
254         }
255         else
256         {
257             converter.setMaxFractionDigits(Integer.parseInt(value));
258         }
259     }
260
261     private static void setConverterMaxIntegerDigits(FacesContext facesContext,
262                                               NumberConverter converter,
263                                               String JavaDoc value)
264     {
265         if (value == null) return;
266         if (UIComponentTag.isValueReference(value))
267         {
268             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
269             Integer JavaDoc i = (Integer JavaDoc)vb.getValue(facesContext);
270             if (i != null)
271             {
272                 converter.setMaxIntegerDigits(i.intValue());
273             }
274         }
275         else
276         {
277             converter.setMaxIntegerDigits(Integer.parseInt(value));
278         }
279     }
280
281     private static void setConverterMinFractionDigits(FacesContext facesContext,
282                                               NumberConverter converter,
283                                               String JavaDoc value)
284     {
285         if (value == null) return;
286         if (UIComponentTag.isValueReference(value))
287         {
288             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
289             Integer JavaDoc i = (Integer JavaDoc)vb.getValue(facesContext);
290             if (i != null)
291             {
292                 converter.setMinFractionDigits(i.intValue());
293             }
294         }
295         else
296         {
297             converter.setMinFractionDigits(Integer.parseInt(value));
298         }
299     }
300
301     private static void setConverterMinIntegerDigits(FacesContext facesContext,
302                                               NumberConverter converter,
303                                               String JavaDoc value)
304     {
305         if (value == null) return;
306         if (UIComponentTag.isValueReference(value))
307         {
308             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
309             Integer JavaDoc i = (Integer JavaDoc)vb.getValue(facesContext);
310             if (i != null)
311             {
312                 converter.setMinIntegerDigits(i.intValue());
313             }
314         }
315         else
316         {
317             converter.setMinIntegerDigits(Integer.parseInt(value));
318         }
319     }
320
321     private static void setConverterPattern(FacesContext facesContext,
322                                               NumberConverter converter,
323                                               String JavaDoc value)
324     {
325         if (value == null) return;
326         if (UIComponentTag.isValueReference(value))
327         {
328             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
329             converter.setPattern((String JavaDoc)vb.getValue(facesContext));
330         }
331         else
332         {
333             converter.setPattern(value);
334         }
335     }
336
337     private static void setConverterType(FacesContext facesContext,
338                                               NumberConverter converter,
339                                               String JavaDoc value)
340     {
341         if (value == null) return;
342         if (UIComponentTag.isValueReference(value))
343         {
344             ValueBinding vb = facesContext.getApplication().createValueBinding(value);
345             converter.setType((String JavaDoc)vb.getValue(facesContext));
346         }
347         else
348         {
349             converter.setType(value);
350         }
351     }
352
353
354 }
355
Popular Tags