KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fulcrum > intake > model > BigDecimalField


1 package org.apache.fulcrum.intake.model;
2
3 /* ====================================================================
4  * The Apache Software License, Version 1.1
5  *
6  * Copyright (c) 2001 The Apache Software Foundation. All rights
7  * reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed by the
24  * Apache Software Foundation (http://www.apache.org/)."
25  * Alternately, this acknowledgment may appear in the software itself,
26  * if and wherever such third-party acknowledgments normally appear.
27  *
28  * 4. The names "Apache" and "Apache Software Foundation" and
29  * "Apache Turbine" must not be used to endorse or promote products
30  * derived from this software without prior written permission. For
31  * written permission, please contact apache@apache.org.
32  *
33  * 5. Products derived from this software may not be called "Apache",
34  * "Apache Turbine", nor may "Apache" appear in their name, without
35  * prior written permission of the Apache Software Foundation.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals on behalf of the Apache Software Foundation. For more
53  * information on the Apache Software Foundation, please see
54  * <http://www.apache.org/>.
55  */

56
57 import java.math.BigDecimal JavaDoc;
58 import java.text.DecimalFormatSymbols JavaDoc;
59
60 import org.apache.fulcrum.intake.xmlmodel.XmlField;
61
62 import org.apache.log4j.Category;
63
64 /**
65  * @author <a HREF="mailto:jmcnally@collab.net">John McNally</a>
66  * @author <a HREF="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
67  * @author <a HREF="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
68  * @version $Id: BigDecimalField.java,v 1.1 2004/11/12 10:25:38 epugh Exp $
69  */

70 public class BigDecimalField
71     extends Field
72 {
73     /** Log4j category */
74     Category category = Category.getInstance(getClass().getName());
75
76     public BigDecimalField(XmlField field, Group group)
77         throws Exception JavaDoc
78     {
79         super(field, group);
80     }
81
82     /**
83      * Sets the default value for a BigDecimal field
84      *
85      * @param prop Parameter for the default values
86      */

87     protected void setDefaultValue(String JavaDoc prop)
88     {
89         defaultValue = null;
90         
91         if (prop == null)
92         {
93             return;
94         }
95         
96         try
97         {
98             defaultValue = new BigDecimal JavaDoc(prop);
99         }
100         catch (RuntimeException JavaDoc e)
101         {
102             category.error("Could not convert " + prop
103                            + " into a BigDecimal. ("
104                            + name + ")");
105         }
106     }
107
108     /**
109      * A suitable validator.
110      *
111      * @return "NumberValidator"
112      */

113     protected String JavaDoc getDefaultValidator()
114     {
115         return "org.apache.fulcrum.intake.validator.NumberValidator";
116     }
117
118     /**
119      * converts the parameter to the correct Object.
120      */

121     protected void doSetValue()
122     {
123         if ( isMultiValued )
124         {
125             String JavaDoc[] inputs = pp.getStrings(getKey());
126             BigDecimal JavaDoc[] values = new BigDecimal JavaDoc[inputs.length];
127             for (int i = 0; i < inputs.length; i++)
128             {
129                 if (inputs[i] != null && inputs[i].length() > 0)
130                 {
131                     values[i] = canonicalizeDecimalInput(inputs[i]);
132                 }
133             }
134             setTestValue(values);
135         }
136         else
137         {
138             String JavaDoc s = pp.getString(getKey());
139             if (s != null && s.length() > 0)
140             {
141                 setTestValue(canonicalizeDecimalInput(s));
142             }
143             else
144             {
145                 set_flag = false;
146             }
147         }
148     }
149
150     /**
151      * Canonicalizes an user-inputted <code>BigDecimal</code> string
152      * to the system's internal format.
153      *
154      * @param bigDecimal Text conforming to a <code>BigDecimal</code>
155      * description for a set of <code>DecimalFormatSymbols</code>.
156      * @return The canonicalized representation.
157      */

158     protected final BigDecimal JavaDoc canonicalizeDecimalInput(String JavaDoc bigDecimal)
159     {
160         if (getLocale() != null)
161         {
162             DecimalFormatSymbols JavaDoc internal = new DecimalFormatSymbols JavaDoc();
163             DecimalFormatSymbols JavaDoc user = new DecimalFormatSymbols JavaDoc(getLocale());
164
165             if (!internal.equals(user))
166             {
167                 bigDecimal = bigDecimal.replace(user.getDecimalSeparator(),
168                                                 internal.getDecimalSeparator());
169             }
170         }
171         return new BigDecimal JavaDoc(bigDecimal);
172     }
173 }
174
Popular Tags