Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv10971

Modified Files:
        NumberDataType.java 
Log Message:
using NumberFormat that uses Locale



See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/datatypes


Index: NumberDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/NumberDataType.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- NumberDataType.java 25 Feb 2007 18:12:16 -0000      1.24
+++ NumberDataType.java 8 Aug 2008 18:30:52 -0000       1.25
@@ -9,6 +9,10 @@
 */
 package org.mmbase.datatypes;
 
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
 import org.mmbase.bridge.*;
 import org.mmbase.util.Casting;
 
@@ -16,7 +20,7 @@
  * A DataType representing some kind of numeric value, like a floating point 
number or an integer number.
  *
  * @author Pierre van Rooden
- * @version $Id: NumberDataType.java,v 1.24 2007/02/25 18:12:16 nklasens Exp $
+ * @version $Id: NumberDataType.java,v 1.25 2008/08/08 18:30:52 andre Exp $
  * @since MMBase-1.8
  */
 abstract public class NumberDataType<E extends Number&Comparable<E>> extends 
ComparableDataType<E> {
@@ -29,25 +33,20 @@
         super(name, classType);
     }
 
-
-
     /**
      * @since MMBase-1.9
      */
-    protected Number castString(Object preCast) throws CastException {
-        if (preCast instanceof String) {
-            if (! StringDataType.DOUBLE_PATTERN.matcher((String) 
preCast).matches()) {
-                throw new CastException("Not a number: " + preCast);
-            }
-        }
-        return Casting.toDouble(preCast); // this makes it e.g. possible to 
report that 1e20 is too big for an integer.
-    }
-
-
     protected Object castToValidate(Object value, Node node, Field field) 
throws CastException {
         if (value == null) return null;
         Object preCast = preCast(value, node, field); // resolves enumerations
-        return castString(preCast);
+        //return castString(preCast);
 
+        Locale l = node.getCloud().getLocale();
+        NumberFormat nf = NumberFormat.getNumberInstance(l);
+        try {
+            return nf.parse((String) preCast);
+        } catch (ParseException pe) {
+            throw new CastException("Not a number: " + preCast);
+        }
     }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to