2002/css-validator/org/w3c/css/values CssAngle.java,1.12,1.13 CssCheckableValue.java,1.3,1.4 CssFrequency.java,1.9,1.10 CssLength.java,1.15,1.16 CssNumber.java,1.16,1.17 CssPercentage.java,1.12,1.13 CssTime.java,1.9,1.10

Update of /sources/public/2002/css-validator/org/w3c/css/values
In directory hutz:/tmp/cvs-serv24793

Modified Files:
	CssAngle.java CssCheckableValue.java CssFrequency.java 
	CssLength.java CssNumber.java CssPercentage.java CssTime.java 
Log Message:
value-based validation

Index: CssCheckableValue.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssCheckableValue.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CssCheckableValue.java	10 Sep 2012 17:04:58 -0000	1.3
+++ CssCheckableValue.java	21 Sep 2012 14:16:26 -0000	1.4
@@ -10,6 +10,8 @@
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.InvalidParamException;
 
+import java.math.BigDecimal;
+
 public abstract class CssCheckableValue extends CssValue {
 
 	abstract boolean isPositive();
@@ -36,4 +38,11 @@
 	public void checkInteger(ApplContext ac, CssProperty property)
 			throws InvalidParamException {
 	}
+
+
+	/**
+	 * set the native value
+	 * @param v the BigDecimal
+	 */
+	public abstract void setValue(BigDecimal v);
 }

Index: CssTime.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssTime.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- CssTime.java	7 Sep 2012 20:41:11 -0000	1.9
+++ CssTime.java	21 Sep 2012 14:16:26 -0000	1.10
@@ -6,6 +6,7 @@
 // Please first read the full copyright statement in file COPYRIGHT.html
 package org.w3c.css.values;
 
+import org.w3c.css.properties.css.CssProperty;
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.InvalidParamException;
 
@@ -27,7 +28,7 @@
  *
  * @version $Revision$
  */
-public class CssTime extends CssValue {
+public class CssTime extends CssCheckableValue {
 
     public static final int type = CssTypes.CSS_TIME;
 
@@ -138,6 +139,67 @@
 		return false;
 	}
 
+	/**
+	 * set the native value
+	 * @param v the BigDecimal
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+	}
+
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isPositive() {
+		return (value.signum() >= 0);
+	}
+
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isStrictlyPositive() {
+		return (value.signum() == 1);
+	}
+
+	/**
+	 * Returns true is the value is zero
+	 *
+	 * @return a boolean
+	 */
+	public boolean isZero() {
+		return BigDecimal.ZERO.equals(value);
+	}
+
+	/**
+	 * check if the value is positive or null
+	 * @param ac the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isPositive()) {
+			throw new InvalidParamException("negative-value",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
 
+	/**
+	 * check if the value is strictly positive
+	 * @param ac the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkStrictPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isStrictlyPositive()) {
+			throw new InvalidParamException("strictly-positive",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
 }
 

Index: CssNumber.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssNumber.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- CssNumber.java	10 Sep 2012 17:04:58 -0000	1.16
+++ CssNumber.java	21 Sep 2012 14:16:26 -0000	1.17
@@ -64,6 +64,18 @@
 	}
 
 	/**
+	 * set the native value
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+		try {
+			v.toBigIntegerExact();
+			isInt = true;
+		} catch (ArithmeticException e) {
+			isInt = false;
+		}
+	}
+	/**
 	 * Set the value explicitly
 	 */
 	public void setIntValue(int v) {

Index: CssFrequency.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssFrequency.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- CssFrequency.java	7 Sep 2012 20:41:11 -0000	1.9
+++ CssFrequency.java	21 Sep 2012 14:16:26 -0000	1.10
@@ -6,6 +6,7 @@
 // Please first read the full copyright statement in file COPYRIGHT.html
 package org.w3c.css.values;
 
+import org.w3c.css.properties.css.CssProperty;
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.InvalidParamException;
 
@@ -27,43 +28,43 @@
  *
  * @version $Revision$
  */
-public class CssFrequency extends CssValue {
+public class CssFrequency extends CssCheckableValue {
 
-    public static final int type = CssTypes.CSS_FREQUENCY;
+	public static final int type = CssTypes.CSS_FREQUENCY;
 
-    public final int getType() {
-        return type;
-    }
+	public final int getType() {
+		return type;
+	}
 
-    private BigDecimal value;
+	private BigDecimal value;
 	protected String unit;
 	protected BigDecimal factor = BigDecimal.ONE;
 	private static BigDecimal defaultValue = BigDecimal.ZERO;
 
-    /**
-     * Create a new CssFrequency
-     */
-    public CssFrequency() {
-        value = defaultValue;
-    }
+	/**
+	 * Create a new CssFrequency
+	 */
+	public CssFrequency() {
+		value = defaultValue;
+	}
 
-    /**
-     * Create a new CssFrequency with a float number.
-     *
-     * @param value the float number.
-     */
-    public CssFrequency(BigDecimal value) {
-        this.value = value;
-    }
+	/**
+	 * Create a new CssFrequency with a float number.
+	 *
+	 * @param value the float number.
+	 */
+	public CssFrequency(BigDecimal value) {
+		this.value = value;
+	}
 
-    /**
-     * Set the value of this frequency.
-     *
-     * @param s  the string representation of the frequency.
-     * @param ac For errors and warnings reports.
-     * @throws InvalidParamException The unit is incorrect
-     */
-    public void set(String s, ApplContext ac) throws InvalidParamException {
+	/**
+	 * Set the value of this frequency.
+	 *
+	 * @param s  the string representation of the frequency.
+	 * @param ac For errors and warnings reports.
+	 * @throws InvalidParamException The unit is incorrect
+	 */
+	public void set(String s, ApplContext ac) throws InvalidParamException {
 		String low_s = s.toLowerCase();
 		int length = low_s.length();
 		int unitIdx = length - 1;
@@ -99,44 +100,108 @@
 					low_s.substring(0, unitIdx), ac);
 		}
 
-    }
+	}
 
-    /**
-     * Returns the current value
-     */
-    public Object get() {
-        // TODO FIXME should not be a Float...
-        return value.multiply(factor).floatValue();
-    }
+	/**
+	 * Returns the current value
+	 */
+	public Object get() {
+		// TODO FIXME should not be a Float...
+		return value.multiply(factor).floatValue();
+	}
 
-    /**
-     * Returns the current value
-     */
-    public String getUnit() {
-        return unit;
-    }
+	/**
+	 * Returns the current value
+	 */
+	public String getUnit() {
+		return unit;
+	}
 
-    /**
-     * Returns a string representation of the object.
-     */
-    public String toString() {
-        if (BigDecimal.ZERO.equals(value)) {
-            return value.toPlainString();
-        }
-        return value.toPlainString() + unit;
-    }
+	/**
+	 * Returns a string representation of the object.
+	 */
+	public String toString() {
+		if (BigDecimal.ZERO.equals(value)) {
+			return value.toPlainString();
+		}
+		return value.toPlainString() + unit;
+	}
 
-    /**
-     * Compares two values for equality.
-     *
-     * @param value The other value.
-     */
-    public boolean equals(Object value) {
-        return (value instanceof CssFrequency
-                && this.value.equals(((CssFrequency) value).value)
-                && unit.equals(((CssFrequency) value).unit));
-    }
+	/**
+	 * Compares two values for equality.
+	 *
+	 * @param value The other value.
+	 */
+	public boolean equals(Object value) {
+		return (value instanceof CssFrequency
+				&& this.value.equals(((CssFrequency) value).value)
+				&& unit.equals(((CssFrequency) value).unit));
+	}
 
+	/**
+	 * set the native value
+	 *
+	 * @param v the BigDecimal
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+	}
 
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isPositive() {
+		return (value.signum() >= 0);
+	}
+
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isStrictlyPositive() {
+		return (value.signum() == 1);
+	}
+
+	/**
+	 * Returns true is the value is zero
+	 *
+	 * @return a boolean
+	 */
+	public boolean isZero() {
+		return BigDecimal.ZERO.equals(value);
+	}
+
+	/**
+	 * check if the value is positive or null
+	 *
+	 * @param ac       the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isPositive()) {
+			throw new InvalidParamException("negative-value",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
+
+	/**
+	 * check if the value is strictly positive
+	 *
+	 * @param ac       the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkStrictPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isStrictlyPositive()) {
+			throw new InvalidParamException("strictly-positive",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
 }
 

Index: CssPercentage.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssPercentage.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- CssPercentage.java	10 Sep 2012 17:04:58 -0000	1.12
+++ CssPercentage.java	21 Sep 2012 14:16:26 -0000	1.13
@@ -96,6 +96,14 @@
 	}
 
 	/**
+	 * set the native value
+	 * @param v the BigDecimal
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+	}
+
+	/**
 	 * Returns the current value
 	 */
 	public Object get() {
@@ -187,5 +195,4 @@
 					toString(), property.getPropertyName(), ac);
 		}
 	}
-
 }

Index: CssAngle.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssAngle.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- CssAngle.java	7 Sep 2012 20:41:11 -0000	1.12
+++ CssAngle.java	21 Sep 2012 14:16:26 -0000	1.13
@@ -6,6 +6,7 @@
 // Please first read the full copyright statement in file COPYRIGHT.html
 package org.w3c.css.values;
 
+import org.w3c.css.properties.css.CssProperty;
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.InvalidParamException;
 
@@ -29,7 +30,7 @@
  *
  * @version $Revision$
  */
-public class CssAngle extends CssValue implements CssValueFloat {
+public class CssAngle extends CssCheckableValue implements CssValueFloat {
 
 	public static final int type = CssTypes.CSS_ANGLE;
 
@@ -69,6 +70,14 @@
 	}
 
 	/**
+	 * set the native value
+	 * @param v the BigDecimal
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+	}
+
+	/**
 	 * Set the value of this angle.
 	 *
 	 * @param s  The string representation of the angle
@@ -161,5 +170,59 @@
 		return normalize(value.multiply(factor)).floatValue();
 	}
 
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isPositive() {
+		return (normalize(value).signum() >= 0);
+	}
+
+	/**
+	 * Returns true is the value is positive of null
+	 *
+	 * @return a boolean
+	 */
+	public boolean isStrictlyPositive() {
+		return (normalize(value).signum() == 1);
+	}
+
+	/**
+	 * Returns true is the value is zero
+	 *
+	 * @return a boolean
+	 */
+	public boolean isZero() {
+		return BigDecimal.ZERO.equals(normalize(value));
+	}
+
+	/**
+	 * check if the value is positive or null
+	 * @param ac the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isPositive()) {
+			throw new InvalidParamException("negative-value",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
+
+	/**
+	 * check if the value is strictly positive
+	 * @param ac the validation context
+	 * @param property the property the value is defined in
+	 * @throws InvalidParamException
+	 */
+	public void checkStrictPositiveness(ApplContext ac, CssProperty property)
+			throws InvalidParamException {
+		if (!isStrictlyPositive()) {
+			throw new InvalidParamException("strictly-positive",
+					toString(), property.getPropertyName(), ac);
+		}
+	}
 }
 

Index: CssLength.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssLength.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- CssLength.java	10 Sep 2012 17:04:58 -0000	1.15
+++ CssLength.java	21 Sep 2012 14:16:26 -0000	1.16
@@ -159,6 +159,15 @@
 		}
 	}
 
+
+	/**
+	 * set the native value
+	 * @param v the BigDecimal
+	 */
+	public void setValue(BigDecimal v) {
+		value = v;
+	}
+
 	// return self
 	public CssLength getLength() throws InvalidParamException {
 		return this;

Received on Friday, 21 September 2012 14:16:38 UTC