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

Modified Files:
        ComparableDataType.java NumberDataType.java 
Log Message:
Decimal cannot be compare with equals, but must be compare with compareTo, so 
doing that


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


Index: ComparableDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/ComparableDataType.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- ComparableDataType.java     8 Sep 2008 08:59:56 -0000       1.40
+++ ComparableDataType.java     22 Dec 2008 17:02:53 -0000      1.41
@@ -21,7 +21,7 @@
  * therefore can have a minimum and a maximum value.
  *
  * @author Michiel Meeuwissen
- * @version $Id: ComparableDataType.java,v 1.40 2008/09/08 08:59:56 michiel 
Exp $
+ * @version $Id: ComparableDataType.java,v 1.41 2008/12/22 17:02:53 michiel 
Exp $
  * @since MMBase-1.8
  */
 public abstract class ComparableDataType<E extends java.io.Serializable & 
Comparable<E>> extends BasicDataType<E> {
@@ -229,8 +229,9 @@
                 // invalid value, but not because of min-restriction
                 return true;
             }
-            if (inclusive && (comparable.equals(minimum))) return true;
-            return comparable.compareTo(minimum) > 0;
+            int ct = comparable.compareTo(minimum);
+            if (inclusive && (ct == 0)) return true;
+            return ct > 0;
         }
         public boolean isInclusive() {
             return inclusive;
@@ -257,8 +258,9 @@
                 // invalid value, but not because of max-restriction
                 return true;
             }
-            if (inclusive && (comparable.equals(maximum))) return true;
-            boolean res = comparable.compareTo(maximum) < 0;
+            int ct = comparable.compareTo(maximum);
+            if (inclusive && (ct == 0)) return true;
+            boolean res = ct < 0;
             return res;
         }
 


Index: NumberDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/NumberDataType.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- NumberDataType.java 1 Dec 2008 23:28:56 -0000       1.33
+++ NumberDataType.java 22 Dec 2008 17:02:53 -0000      1.34
@@ -22,7 +22,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.33 2008/12/01 23:28:56 michiel Exp $
+ * @version $Id: NumberDataType.java,v 1.34 2008/12/22 17:02:53 michiel Exp $
  * @since MMBase-1.8
  */
 abstract public class NumberDataType<E extends Number & Comparable<E>> extends 
ComparableDataType<E> {
@@ -57,10 +57,10 @@
                      throw new CastException("Not a number: " + s);
                  } else {
                      log.debug("Casting to double " + s);
-                     return Casting.toDouble(s);
+                     return Casting.toDecimal(s);
                  }
              }
-             return number;
+             return Casting.toDecimal(number);
         } else if (preCast instanceof Float) {
             if (((Float) preCast).isInfinite()) {
                 return (Float) preCast;
@@ -71,7 +71,6 @@
             }
         }
         
-
         return Casting.toDecimal(preCast); // this makes it e.g. possible to 
report that 1e20 is too big for an integer.
     }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to