Author: michiel
Date: 2010-04-20 17:27:34 +0200 (Tue, 20 Apr 2010)
New Revision: 41983

Added:
   
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/SequentialDataType.java
Modified:
   
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/ComparableDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DateTimeDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DecimalDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DoubleDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/FloatDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/IntegerDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/LongDataType.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/StringDataType.java
Log:
MMB-1952

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/ComparableDataType.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/ComparableDataType.java  
    2010-04-20 14:05:14 UTC (rev 41982)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/ComparableDataType.java  
    2010-04-20 15:27:34 UTC (rev 41983)
@@ -234,6 +234,13 @@
         };
     }
 
+    /**
+     * Returns a natural 'first' value. This may return some kind of 
<code>0</code>
+     * @since MMBase-2.0
+     */
+    public abstract E first();
+
+
     protected class MinRestriction extends AbstractRestriction<E> {
         private boolean inclusive;
         MinRestriction(MinRestriction source) {

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DateTimeDataType.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DateTimeDataType.java    
    2010-04-20 14:05:14 UTC (rev 41982)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DateTimeDataType.java    
    2010-04-20 15:27:34 UTC (rev 41983)
@@ -147,4 +147,9 @@
         buf.append(" " + pattern);
         return buf;
     }
+
+    @Override
+    public Date first() {
+        return new Date();
+    }
 }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DecimalDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DecimalDataType.java 
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DecimalDataType.java 
2010-04-20 15:27:34 UTC (rev 41983)
@@ -1,10 +1,10 @@
 /*
 
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
+  This software is OSI Certified Open Source Software.
+  OSI Certified is a certification mark of the Open Source Initiative.
 
-The license (Mozilla version 1.0) can be read at the MMBase site.
-See http://www.MMBase.org/license
+  The license (Mozilla version 1.0) can be read at the MMBase site.
+  See http://www.MMBase.org/license
 
 */
 package org.mmbase.datatypes;
@@ -56,7 +56,6 @@
     }
 
 
-
     // LengthDataType
     @Override
     public long getLength(Object o) {
@@ -107,7 +106,8 @@
         return org.mmbase.util.Casting.toDecimal(s);
     }
 
-    @Override protected BigDecimal castString(Object preCast, Cloud cloud) 
throws CastException {
+    @Override
+    protected BigDecimal castString(Object preCast, Cloud cloud) throws 
CastException {
         if (preCast == null || "".equals(preCast)) return null;
         Number su = super.castString(preCast, cloud);
         if (su instanceof BigDecimal) {
@@ -170,7 +170,7 @@
         }
     }
     @overr...@suppresswarnings("unchecked")
- protected void cloneRestrictions(BasicDataType origin) {
+    protected void cloneRestrictions(BasicDataType origin) {
         super.cloneRestrictions(origin);
         if (origin instanceof DecimalDataType) {
             DecimalDataType dataType = (DecimalDataType) origin;
@@ -179,7 +179,8 @@
         }
     }
 
-    @Override protected Collection<LocalizedString> 
validateCastValue(Collection<LocalizedString> errors, Object castValue, Object 
value,  Node node, Field field) {
+    @Override
+    protected Collection<LocalizedString> 
validateCastValue(Collection<LocalizedString> errors, Object castValue, Object 
value,  Node node, Field field) {
         errors = super.validateCastValue(errors, castValue, value, node, 
field);
         if (log.isDebugEnabled()) {
             log.debug("Validating for " + field + " " + castValue.getClass() + 
" " + castValue);
@@ -201,7 +202,8 @@
         PrecisionRestriction() {
             super("precision", 128L);
         }
-        @Override protected boolean simpleValid(Object v, Node node, Field 
field) {
+        @Override
+        protected boolean simpleValid(Object v, Node node, Field field) {
             if ((v == null) || (getValue() == null)) return true;
             BigDecimal compare = (BigDecimal) v;
             long max = getValue();
@@ -225,7 +227,8 @@
             super("scale", 34);
         }
 
-        @Override protected boolean simpleValid(Object v, Node node, Field 
field) {
+        @Override
+        protected boolean simpleValid(Object v, Node node, Field field) {
             if ((v == null) || (getValue() == null)) return true;
             BigDecimal compare = (BigDecimal) v;
             int max = getValue();
@@ -236,6 +239,11 @@
         }
     }
 
+    @Override
+    public BigDecimal first() {
+        return new BigDecimal(0.0);
+    }
 
 
+
 }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DoubleDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DoubleDataType.java  
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/DoubleDataType.java  
2010-04-20 15:27:34 UTC (rev 41983)
@@ -46,4 +46,9 @@
         return max == null ? Double.POSITIVE_INFINITY : max.doubleValue();
     }
 
+    @Override
+    public Double first() {
+        return 0.0;
+    }
+
 }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/FloatDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/FloatDataType.java   
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/FloatDataType.java   
2010-04-20 15:27:34 UTC (rev 41983)
@@ -44,4 +44,10 @@
         Number max = getMaxRestriction().getValue();
         return max == null ? Float.POSITIVE_INFINITY : max.floatValue();
     }
+
+    @Override
+    public Float first() {
+        return 0.0f;
+    }
+
 }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/IntegerDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/IntegerDataType.java 
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/IntegerDataType.java 
2010-04-20 15:27:34 UTC (rev 41983)
@@ -17,7 +17,7 @@
  * @version $Id$
  * @since MMBase-1.8
  */
-public class IntegerDataType extends NumberDataType<Integer> {
+public class IntegerDataType extends NumberDataType<Integer> implements 
SequentialDataType<Integer> {
     private static final long serialVersionUID = 1L; // increase this if 
object serialization changes (which we shouldn't do!)
 
     /**
@@ -58,4 +58,19 @@
         return max == null ? Integer.MAX_VALUE : Casting.toInt(max);
     }
 
+    @Override
+    public Integer increase(Integer pos) {
+        return pos + 1;
+    }
+    @Override
+    public Integer decrease(Integer pos) {
+        return pos - 1;
+    }
+
+    @Override
+    public Integer first() {
+        return 0;
+    }
+
+
 }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/LongDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/LongDataType.java    
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/LongDataType.java    
2010-04-20 15:27:34 UTC (rev 41983)
@@ -18,8 +18,8 @@
  * @version $Id$
  * @since MMBase-1.8
  */
-public class LongDataType extends NumberDataType<Long> {
-    private static final long serialVersionUID = 1L; 
+public class LongDataType extends NumberDataType<Long> implements 
SequentialDataType<Long> {
+    private static final long serialVersionUID = 1L;
     /**
      * @param primitive indicate if a primitive type should be used
      */
@@ -48,4 +48,19 @@
         return max == null ? Long.MAX_VALUE : Casting.toLong(max); // casting, 
mainly to anticipate dates
     }
 
+    @Override
+    public Long increase(Long pos) {
+        return pos + 1;
+    }
+    @Override
+    public Long decrease(Long pos) {
+        return pos - 1;
+    }
+
+    @Override
+    public Long first() {
+        return 0L;
+    }
+
+
 }

Added: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/SequentialDataType.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/SequentialDataType.java  
                            (rev 0)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/SequentialDataType.java  
    2010-04-20 15:27:34 UTC (rev 41983)
@@ -0,0 +1,39 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.datatypes;
+
+/**
+ * A sequential datatype is a datatype of which the values are 'sequential', 
i.e. every value has a well defined previous and next value.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id$
+ * @since MMBase-2.0
+ */
+public interface SequentialDataType<E extends Comparable> extends DataType<E> {
+
+
+    /**
+     * Given a certain value, returns the value with is 1 bigger. It can 
return <code>null</code> if there is no such value (and the given value is
+     * the biggest one possible)
+     */
+    E increase(E pos);
+    /**
+     * Given a certain value, returns the value with is 1 smaller. It can 
return <code>null</code> if there is no such value (and the given value is
+     * the smallest one possible)
+     */
+    E decrease(E pos);
+
+    /**
+     * Returns a natural 'first' value. This may return some kind of 
<code>0</code>
+     * @since MMBase-2.0
+     */
+    E first();
+
+}


Property changes on: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/SequentialDataType.java
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/StringDataType.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/StringDataType.java  
2010-04-20 14:05:14 UTC (rev 41982)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/datatypes/StringDataType.java  
2010-04-20 15:27:34 UTC (rev 41983)
@@ -230,6 +230,11 @@
     }
 
     @Override
+    public String first() {
+        return "";
+    }
+
+    @Override
     public void toXml(org.w3c.dom.Element parent) {
         super.toXml(parent);
         addRestriction(parent, "minLength",  
"name,description,class,property,default,unique,required,(minInclusive|minExclusive),(maxInclusive|maxExclusive),minLength",
 minLengthRestriction);

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to