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