001: /*
002: * Copyright 2006 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.apache.myfaces.taglib.core;
017:
018: import org.apache.myfaces.shared_impl.taglib.UIComponentELTagUtils;
019:
020: import javax.el.ELContext;
021: import javax.el.ValueExpression;
022: import javax.faces.context.FacesContext;
023: import javax.faces.convert.Converter;
024: import javax.faces.convert.NumberConverter;
025: import javax.servlet.jsp.JspException;
026: import javax.servlet.jsp.PageContext;
027: import java.util.Locale;
028:
029: /**
030: * @author Manfred Geiler (latest modification by $Author: baranda $)
031: * @version $Revision: 467978 $ $Date: 2006-10-26 14:12:51 +0200 (Do, 26 Okt 2006) $
032: */
033: public class ConvertNumberTag extends ConverterTag {
034: private static final long serialVersionUID = -8365745569697171573L;
035: private ValueExpression _currencyCode = null;
036: private ValueExpression _currencySymbol = null;
037: private ValueExpression _groupingUsed = null;
038: private ValueExpression _integerOnly = null;
039: private ValueExpression _locale = null;
040: private ValueExpression _maxFractionDigits = null;
041: private ValueExpression _maxIntegerDigits = null;
042: private ValueExpression _minFractionDigits = null;
043: private ValueExpression _minIntegerDigits = null;
044: private ValueExpression _pattern = null;
045: private ValueExpression _type = null;
046:
047: public ConvertNumberTag() {
048: setConverterIdString(NumberConverter.CONVERTER_ID);
049: }
050:
051: public void setCurrencyCode(ValueExpression currencyCode) {
052: _currencyCode = currencyCode;
053: }
054:
055: public void setCurrencySymbol(ValueExpression currencySymbol) {
056: _currencySymbol = currencySymbol;
057: }
058:
059: public void setGroupingUsed(ValueExpression groupingUsed) {
060: _groupingUsed = groupingUsed;
061: }
062:
063: public void setIntegerOnly(ValueExpression integerOnly) {
064: _integerOnly = integerOnly;
065: }
066:
067: public void setLocale(ValueExpression locale) {
068: _locale = locale;
069: }
070:
071: public void setMaxFractionDigits(ValueExpression maxFractionDigits) {
072: _maxFractionDigits = maxFractionDigits;
073: }
074:
075: public void setMaxIntegerDigits(ValueExpression maxIntegerDigits) {
076: _maxIntegerDigits = maxIntegerDigits;
077: }
078:
079: public void setMinFractionDigits(ValueExpression minFractionDigits) {
080: _minFractionDigits = minFractionDigits;
081: }
082:
083: public void setMinIntegerDigits(ValueExpression minIntegerDigits) {
084: _minIntegerDigits = minIntegerDigits;
085: }
086:
087: public void setPattern(ValueExpression pattern) {
088: _pattern = pattern;
089: }
090:
091: public void setType(ValueExpression type) {
092: _type = type;
093: }
094:
095: public void setPageContext(PageContext context) {
096: super .setPageContext(context);
097: setConverterIdString(NumberConverter.CONVERTER_ID);
098: }
099:
100: protected Converter createConverter() throws JspException {
101: NumberConverter converter = (NumberConverter) super
102: .createConverter();
103: ELContext elContext = FacesContext.getCurrentInstance()
104: .getELContext();
105: if (null != _currencyCode) {
106: converter.setCurrencyCode((String) UIComponentELTagUtils
107: .evaluateValueExpression(elContext, _currencyCode));
108: }
109: if (null != _currencySymbol) {
110: converter
111: .setCurrencySymbol((String) UIComponentELTagUtils
112: .evaluateValueExpression(elContext,
113: _currencySymbol));
114: }
115: if (null != _groupingUsed) {
116: converter.setGroupingUsed(UIComponentELTagUtils
117: .getBooleanValue(elContext, _groupingUsed));
118: } else {
119: converter.setGroupingUsed(true);
120: }
121: if (null != _integerOnly) {
122: converter.setIntegerOnly(UIComponentELTagUtils
123: .getBooleanValue(elContext, _integerOnly));
124: } else {
125: converter.setIntegerOnly(false);
126: }
127: if (null != _locale) {
128: Locale locale;
129: if (_locale.isLiteralText()) {
130: locale = new Locale(_locale.getExpressionString());
131: } else {
132: locale = (Locale) _locale.getValue(elContext);
133: if (null == locale) {
134: locale = FacesContext.getCurrentInstance()
135: .getViewRoot().getLocale();
136: }
137: }
138: converter.setLocale(locale);
139: }
140: if (null != _maxFractionDigits) {
141: converter.setMaxFractionDigits(UIComponentELTagUtils
142: .getIntegerValue(elContext, _maxFractionDigits));
143: }
144: if (null != _maxIntegerDigits) {
145: converter.setMaxIntegerDigits(UIComponentELTagUtils
146: .getIntegerValue(elContext, _maxIntegerDigits));
147: }
148: if (null != _minFractionDigits) {
149: converter.setMinFractionDigits(UIComponentELTagUtils
150: .getIntegerValue(elContext, _minFractionDigits));
151: }
152: if (null != _minIntegerDigits) {
153: converter.setMinIntegerDigits(UIComponentELTagUtils
154: .getIntegerValue(elContext, _minIntegerDigits));
155: }
156: if (null != _pattern) {
157: converter.setPattern((String) UIComponentELTagUtils
158: .evaluateValueExpression(elContext, _pattern));
159: }
160: if (null != _type) {
161: converter.setType((String) UIComponentELTagUtils
162: .evaluateValueExpression(elContext, _type));
163: } else {
164: converter.setType("number");
165: }
166: return converter;
167: }
168: }
|