1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.shared_orchestra.taglib.core;
20
21 import java.util.Locale;
22 import java.util.TimeZone;
23
24 import javax.faces.context.FacesContext;
25 import javax.faces.convert.Converter;
26 import javax.faces.convert.DateTimeConverter;
27 import javax.faces.el.ValueBinding;
28 import javax.faces.webapp.ConverterTag;
29 import javax.faces.webapp.UIComponentTag;
30 import javax.servlet.jsp.JspException;
31
32 import org.apache.myfaces.shared_orchestra.util.LocaleUtils;
33
34
35
36
37
38 public class ConvertDateTimeTagBase
39 extends ConverterTag
40 {
41 private static final long serialVersionUID = -757757296071312897L;
42 private String _dateStyle = "default";
43 private String _locale = null;
44 private String _pattern = null;
45 private String _timeStyle = "default";
46 private String _timeZone = null;
47 private String _type = null;
48
49 public void setDateStyle(String dateStyle)
50 {
51 _dateStyle = dateStyle;
52 }
53
54 public void setLocale(String locale)
55 {
56 _locale = locale;
57 }
58
59 public void setPattern(String pattern)
60 {
61 _pattern = pattern;
62 }
63
64 public void setTimeStyle(String timeStyle)
65 {
66 _timeStyle = timeStyle;
67 }
68
69 public void setTimeZone(String timeZone)
70 {
71 _timeZone = timeZone;
72 }
73
74 public void setType(String type)
75 {
76 _type = type;
77 }
78
79 protected Converter createConverter() throws JspException
80 {
81 DateTimeConverter converter = (DateTimeConverter)super.createConverter();
82
83 FacesContext facesContext = FacesContext.getCurrentInstance();
84 setConverterDateStyle(facesContext, converter, _dateStyle);
85 setConverterLocale(facesContext, converter, _locale);
86 setConverterPattern(facesContext, converter, _pattern);
87 setConverterTimeStyle(facesContext, converter, _timeStyle);
88 setConverterTimeZone(facesContext, converter, _timeZone);
89 setConverterType(facesContext, converter, _type);
90
91 return converter;
92 }
93
94 protected static void setConverterLocale(FacesContext facesContext,
95 DateTimeConverter converter,
96 String value)
97 {
98 Locale locale = null;
99 Object _value = null;
100
101 if (value == null) return;
102 if (UIComponentTag.isValueReference(value))
103 {
104 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
105 _value = vb.getValue(facesContext);
106 if(_value instanceof Locale)
107 {
108 locale = (Locale) _value;
109 }
110 else
111 {
112 locale = LocaleUtils.converterTagLocaleFromString(_value.toString());
113 }
114 }
115 else
116 {
117 locale = LocaleUtils.converterTagLocaleFromString( value);
118 }
119 converter.setLocale(locale);
120 }
121
122
123 private static void setConverterDateStyle(FacesContext facesContext,
124 DateTimeConverter converter,
125 String value)
126 {
127 if (value == null) return;
128 if (UIComponentTag.isValueReference(value))
129 {
130 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
131 converter.setDateStyle((String)vb.getValue(facesContext));
132 }
133 else
134 {
135 converter.setDateStyle(value);
136 }
137 }
138
139 private static void setConverterPattern(FacesContext facesContext,
140 DateTimeConverter converter,
141 String value)
142 {
143 if (value == null) return;
144 if (UIComponentTag.isValueReference(value))
145 {
146 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
147 converter.setPattern((String)vb.getValue(facesContext));
148 }
149 else
150 {
151 converter.setPattern(value);
152 }
153 }
154
155 private static void setConverterTimeStyle(FacesContext facesContext,
156 DateTimeConverter converter,
157 String value)
158 {
159 if (value == null) return;
160 if (UIComponentTag.isValueReference(value))
161 {
162 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
163 converter.setTimeStyle((String)vb.getValue(facesContext));
164 }
165 else
166 {
167 converter.setTimeStyle(value);
168 }
169 }
170
171 private static void setConverterTimeZone(FacesContext facesContext,
172 DateTimeConverter converter,
173 String value)
174 {
175 if (value == null) return;
176 if (UIComponentTag.isValueReference(value))
177 {
178 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
179 TimeZone timeZone = null;
180 Object _value = vb.getValue(facesContext);
181 if (_value instanceof TimeZone)
182 {
183 timeZone = (TimeZone) _value;
184 }
185 else
186 {
187 timeZone = TimeZone.getTimeZone(_value.toString());
188 }
189 converter.setTimeZone(timeZone);
190 }
191 else
192 {
193 converter.setTimeZone(TimeZone.getTimeZone(value));
194 }
195 }
196
197 private static void setConverterType(FacesContext facesContext,
198 DateTimeConverter converter,
199 String value)
200 {
201 if (value == null) return;
202 if (UIComponentTag.isValueReference(value))
203 {
204 ValueBinding vb = facesContext.getApplication().createValueBinding(value);
205 converter.setType((String)vb.getValue(facesContext));
206 }
207 else
208 {
209 converter.setType(value);
210 }
211 }
212
213 }