KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > datatypes > NumberDataType


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.datatypes;
11
12 import java.util.*;
13
14 import org.mmbase.bridge.*;
15 import org.mmbase.util.Casting;
16 import org.mmbase.util.logging.*;
17
18 /**
19  * A DataType representing some kind of numeric value, like a floating point number or an integer number.
20  *
21  * @author Pierre van Rooden
22  * @version $Id: NumberDataType.java,v 1.18 2006/04/29 19:41:09 michiel Exp $
23  * @since MMBase-1.8
24  */

25 abstract public class NumberDataType extends ComparableDataType {
26
27     private static final Logger log = Logging.getLoggerInstance(NumberDataType.class);
28
29     private static final long serialVersionUID = 1L;
30     /**
31      * Constructor for Number field.
32      */

33     public NumberDataType(String JavaDoc name, Class JavaDoc classType) {
34         super(name, classType);
35     }
36
37
38     protected Object JavaDoc castToValidate(Object JavaDoc value, Node node, Field field) throws CastException {
39         if (value == null) return null;
40         Object JavaDoc preCast = preCast(value, node, field); // resolves enumerations
41
if (preCast instanceof String JavaDoc) {
42             if (! StringDataType.DOUBLE_PATTERN.matcher((String JavaDoc) preCast).matches()) {
43                 throw new CastException("Not a number: " + preCast);
44             }
45         }
46         return new Double JavaDoc(Casting.toDouble(preCast)); // this makes it e.g. possible to report that 1e20 is too big for an integer.
47
}
48 }
49
Popular Tags