- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 10 Sep 2012 11:47:20 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/values In directory hutz:/tmp/cvs-serv4723/values Modified Files: CssNumber.java Added Files: CssCheckableValue.java Log Message: tarting the use of range checking in values (useful for CSS3 and onward only) --- NEW FILE: CssCheckableValue.java --- // $Id: CssCheckableValue.java,v 1.1 2012/09/10 11:47:18 ylafon Exp $ // @author Yves Lafon <ylafon@w3.org> // // (c) COPYRIGHT MIT, ERCIM and Keio University, 2012. // 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; public abstract class CssCheckableValue extends CssValue { abstract void checkPositiveness(ApplContext ac, CssProperty property) throws InvalidParamException; abstract void checkStrictPositiveness(ApplContext ac, CssProperty property) throws InvalidParamException; abstract boolean isPositive(); abstract boolean isStrictlyPositive(); } Index: CssNumber.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/values/CssNumber.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- CssNumber.java 6 Sep 2012 12:37:58 -0000 1.13 +++ CssNumber.java 10 Sep 2012 11:47:18 -0000 1.14 @@ -5,6 +5,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; @@ -15,216 +16,243 @@ * * @version $Revision$ */ -public class CssNumber extends CssValue implements CssValueFloat { +public class CssNumber extends CssCheckableValue implements CssValueFloat { - public static final int type = CssTypes.CSS_NUMBER; + public static final int type = CssTypes.CSS_NUMBER; - public final int getType() { - return type; - } + public final int getType() { + return type; + } - ApplContext ac; - BigDecimal value; - boolean isInt = false; + ApplContext ac; + BigDecimal value; + boolean isInt = false; - /** - * Create a new CssNumber - */ - public CssNumber() { - } + /** + * Create a new CssNumber + */ + public CssNumber() { + } - /** - * Create a new CssNumber - */ - public CssNumber(ApplContext ac, float value) { - this.ac = ac; - this.value = new BigDecimal(value); - } + /** + * Create a new CssNumber + */ + public CssNumber(ApplContext ac, float value) { + this.ac = ac; + this.value = new BigDecimal(value); + } - public CssNumber(float value) { - this.value = new BigDecimal(value); - } + public CssNumber(float value) { + this.value = new BigDecimal(value); + } - /** - * Set the value of this frequency. - * - * @param s the string representation of the frequency. - * @param ac For errors and warnings reports. - */ - public void set(String s, ApplContext ac) { - value = new BigDecimal(s); - try { - value.toBigIntegerExact(); - isInt = true; - } catch (ArithmeticException e) { - isInt = false; - } - this.ac = ac; - } + /** + * Set the value of this frequency. + * + * @param s the string representation of the frequency. + * @param ac For errors and warnings reports. + */ + public void set(String s, ApplContext ac) { + value = new BigDecimal(s); + try { + value.toBigIntegerExact(); + isInt = true; + } catch (ArithmeticException e) { + isInt = false; + } + this.ac = ac; + } - /** - * Set the value explicitly - */ - public void setIntValue(int v) { - isInt = true; - value = new BigDecimal(v); + /** + * Set the value explicitly + */ + public void setIntValue(int v) { + isInt = true; + value = new BigDecimal(v); - } + } - /** - * Set the value explicitly - */ - public void setFloatValue(float v) { - isInt = false; - value = new BigDecimal(v); - } + /** + * Set the value explicitly + */ + public void setFloatValue(float v) { + isInt = false; + value = new BigDecimal(v); + } - /** - * Returns the value - */ - public Object get() { - return value; - } + /** + * Returns the value + */ + public Object get() { + return value; + } - /** - * Return the float value - */ - public float getValue() { - return value.floatValue(); - } + /** + * Return the float value + */ + public float getValue() { + return value.floatValue(); + } - public int getInt() throws InvalidParamException { - if (isInt) { - try { - return value.intValueExact(); - } catch (ArithmeticException aex) { - throw new InvalidParamException("out-of-range", ac); - } - } - // FIXME ??? - throw new InvalidParamException("invalid-color", ac); - } + public int getInt() throws InvalidParamException { + if (isInt) { + try { + return value.intValueExact(); + } catch (ArithmeticException aex) { + throw new InvalidParamException("out-of-range", ac); + } + } + // FIXME ??? + throw new InvalidParamException("invalid-color", ac); + } - public boolean isInteger() { - return isInt; - } + public boolean isInteger() { + return isInt; + } - /** - * 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 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 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); - } + /** + * Returns true is the value is zero + * + * @return a boolean + */ + public boolean isZero() { + return BigDecimal.ZERO.equals(value); + } - /** - * Returns a length. - * Only zero can be a length. - * - * @throws InvalidParamException The value is not zero - */ - public CssLength getLength() throws InvalidParamException { - if (value.equals(BigDecimal.ZERO)) { - return new CssLength(); - } - throw new InvalidParamException("zero", "length", ac); - } + /** + * Returns a length. + * Only zero can be a length. + * + * @throws InvalidParamException The value is not zero + */ + public CssLength getLength() throws InvalidParamException { + if (value.equals(BigDecimal.ZERO)) { + return new CssLength(); + } + throw new InvalidParamException("zero", "length", ac); + } - /** - * Returns a percentage. - * Only zero can be a length. - * - * @throws InvalidParamException The value is not zero - */ - public CssPercentage getPercentage() throws InvalidParamException { - if (value.equals(BigDecimal.ZERO)) { - return new CssPercentage(); - } - throw new InvalidParamException("zero", - value.toString(), - "percentage", ac); - } + /** + * Returns a percentage. + * Only zero can be a length. + * + * @throws InvalidParamException The value is not zero + */ + public CssPercentage getPercentage() throws InvalidParamException { + if (value.equals(BigDecimal.ZERO)) { + return new CssPercentage(); + } + throw new InvalidParamException("zero", + value.toString(), + "percentage", ac); + } - /** - * Returns a time. - * Only zero can be a length. - * - * @throws InvalidParamException The value is not zero - */ - public CssTime getTime() throws InvalidParamException { - if (value.equals(BigDecimal.ZERO)) { - return new CssTime(); - } - throw new InvalidParamException("zero", value.toString(), - "time", ac); - } + /** + * Returns a time. + * Only zero can be a length. + * + * @throws InvalidParamException The value is not zero + */ + public CssTime getTime() throws InvalidParamException { + if (value.equals(BigDecimal.ZERO)) { + return new CssTime(); + } + throw new InvalidParamException("zero", value.toString(), + "time", ac); + } - /** - * Returns a angle. - * Only zero can be a length. - * - * @throws InvalidParamException The value is not zero - */ - public CssAngle getAngle() throws InvalidParamException { - if (value.equals(BigDecimal.ZERO)) { - return new CssAngle(); - } - throw new InvalidParamException("zero", value.toString(), - "angle", ac); - } + /** + * Returns a angle. + * Only zero can be a length. + * + * @throws InvalidParamException The value is not zero + */ + public CssAngle getAngle() throws InvalidParamException { + if (value.equals(BigDecimal.ZERO)) { + return new CssAngle(); + } + throw new InvalidParamException("zero", value.toString(), + "angle", ac); + } - /** - * Returns a frequency. - * Only zero can be a length. - * - * @throws InvalidParamException The value is not zero - */ - public CssFrequency getFrequency() throws InvalidParamException { - if (value.equals(BigDecimal.ZERO)) { - return new CssFrequency(); - } - throw new InvalidParamException("zero", - value.toString(), "frequency", ac); - } + /** + * Returns a frequency. + * Only zero can be a length. + * + * @throws InvalidParamException The value is not zero + */ + public CssFrequency getFrequency() throws InvalidParamException { + if (value.equals(BigDecimal.ZERO)) { + return new CssFrequency(); + } + throw new InvalidParamException("zero", + value.toString(), "frequency", ac); + } public CssNumber getNumber() throws InvalidParamException { return this; } - /** - * Returns a string representation of the object. - */ - public String toString() { - return value.toPlainString(); - } + /** + * Returns a string representation of the object. + */ + public String toString() { + return value.toPlainString(); + } - /** - * Compares two values for equality. - * - * @param value The other value. - */ - public boolean equals(Object value) { - return (value instanceof CssNumber && - this.value.equals(((CssNumber) value).value)); - } + /** + * Compares two values for equality. + * + * @param value The other value. + */ + public boolean equals(Object value) { + return (value instanceof CssNumber && + this.value.equals(((CssNumber) value).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("negative-value", + toString(), property.getPropertyName(), ac); + } + } }
Received on Monday, 10 September 2012 11:47:22 UTC