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