Query.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package javax.management; /** * This class is a factory for constructing queries.<p> * * REVIEW: Full explanation. See the spec for now for what it's worth. * * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>. * @version $Revision: 1.5.4.1 $ */ public class Query { // Constants --------------------------------------------------- /** * Divide expression */ public static final int DIV = 3; /** * Equals expression */ public static final int EQ = 4; /** * Greater than or equals expression */ public static final int GE = 2; /** * Greater than expression */ public static final int GT = 0; /** * Less than or equals expression */ public static final int LE = 3; /** * Less than expression */ public static final int LT = 1; /** * Minus expression */ public static final int MINUS = 1; /** * Plus expression */ public static final int PLUS = 0; /** * Times expression */ public static final int TIMES = 2; // Attributes -------------------------------------------------- // Static ----------------------------------------------------- /** * And Query expression. Return true only when both expressions are true. * * @param first the first expression * @param second the second expression * @return the expression */ public static QueryExp and(QueryExp first, QueryExp second) { return new AndQueryExp(first, second); } /** * Tests an attribute contains a string as a subset. Return true * when this is the case, false otherwise. * * @param attr the attribute * @param string the string * @return the expression */ public static QueryExp anySubString(AttributeValueExp attr, StringValueExp string) { return new MatchQueryExp(attr, "*" + string.getValue() + "*"); } /** * An attribute expression * * @param value the name of the attribute * @return the expression */ public static AttributeValueExp attr(String value) { return new AttributeValueExp(value); } /** * An attribute expression restricted to a specific class * * @param className the name of the class * @param value the name of the attribute * @return the expression */ public static AttributeValueExp attr(String className, String value) { return new QualifiedAttributeValueExp(className, value); } /** * Tests a value is between two other values. Returns true when this is * case, false otherwise. * * @param test the value to test * @param lower the lower bound * @param higher the higer bound * @return the expression */ public static QueryExp between(ValueExp test, ValueExp lower, ValueExp higher) { return new BetweenQueryExp(test, lower, higher); } /** * What is this? * * @return the expression */ public static AttributeValueExp classattr() { return new ClassAttributeValueExp(); } /** * An expression that divides the first expression by the second * * @param first the first expression * @param second the second expression * @return the expression */ public static ValueExp div(ValueExp first, ValueExp second) { return new BinaryOpValueExp(DIV, first, second); } /** * Equals Comparison. * * @param first the first expression * @param second the second expression * @return true when first equals second */ public static QueryExp eq(ValueExp first, ValueExp second) { return new BinaryRelQueryExp(EQ, first, second); } /** * Tests an attribute ends with a string as a subset. Return true * when this is the case, false otherwise. * * @param attr the attribute * @param string the string * @return the expression */ public static QueryExp finalSubString(AttributeValueExp attr, StringValueExp string) { return new MatchQueryExp(attr, "*" + string.getValue()); } /** * Greater than or Equals Comparison. * * @param first the first expression * @param second the second expression * @return true when first >= second */ public static QueryExp geq(ValueExp first, ValueExp second) { return new BinaryRelQueryExp(GE, first, second); } /** * Greater than. * * @param first the first expression * @param second the second expression * @return true when first > second */ public static QueryExp gt(ValueExp first, ValueExp second) { return new BinaryRelQueryExp(GT, first, second); } /** * Tests a value is in one of the listed values. Returns true when this is * case, false otherwise. * * @param test the value to test * @param list an array of values * @return the expression */ public static QueryExp in(ValueExp test, ValueExp[] list) { return new InQueryExp(test, list); } /** * Tests an attribute starts with a string as a subset. Return true * when this is the case, false otherwise. * * @param attr the attribute * @param string the string * @return the expression */ public static QueryExp initialSubString(AttributeValueExp attr, StringValueExp string) { return new MatchQueryExp(attr, string.getValue() + "*"); } /** * Less than or equal. * * @param first the first expression * @param second the second expression * @return true when first <= second */ public static QueryExp leq(ValueExp first, ValueExp second) { return new BinaryRelQueryExp(LE, first, second); } /** * Less than. * * @param first the first expression * @param second the second expression * @return true when first < second */ public static QueryExp lt(ValueExp first, ValueExp second) { return new BinaryRelQueryExp(LT, first, second); } /** * Tests an attribute equals a string value. Return true * when this is the case, false otherwise. * * @param attr the attribute * @param string the string * @return the expression */ public static QueryExp match(AttributeValueExp attr, StringValueExp string) { return new MatchQueryExp(attr, string.getValue()); } /** * An expression that subtracts the second expression from the first * * @param first the first expression * @param second the second expression * @return the expression */ public static ValueExp minus(ValueExp first, ValueExp second) { return new BinaryOpValueExp(MINUS, first, second); } /** * Not Query expression. Return true only when expression is false. * * @param expression the expression to negate * @return the expression */ public static QueryExp not(QueryExp expression) { return new NotQueryExp(expression); } /** * Or Query expression. Return true when either expression is true. * * @param first the first expression * @param second the second expression * @return the expression */ public static QueryExp or(QueryExp first, QueryExp second) { return new OrQueryExp(first, second); } /** * An expression that adds the second expression to the first * * @param first the first expression * @param second the second expression * @return the expression */ public static ValueExp plus(ValueExp first, ValueExp second) { return new BinaryOpValueExp(PLUS, first, second); } /** * An expression that multiplies the first expression by the second * * @param first the first expression * @param second the second expression * @return the expression */ public static ValueExp times(ValueExp first, ValueExp second) { return new BinaryOpValueExp(TIMES, first, second); } /** * Create a boolean value expression for use in a Query. * * @return the expression */ public static ValueExp value(boolean value) { return new BooleanValueExp(new Boolean(value)); } /** * Create a double value expression for use in a Query. * * @return the expression */ public static ValueExp value(double value) { return new NumericValueExp(new Double(value)); } /** * Create a float value expression for use in a Query. * * @return the expression */ public static ValueExp value(float value) { return new NumericValueExp(new Double(value)); } /** * Create an integer value expression for use in a Query. * * @return the expression */ public static ValueExp value(int value) { return new NumericValueExp(new Long(value)); } /** * Create a long value expression for use in a Query. * * @return the expression */ public static ValueExp value(long value) { return new NumericValueExp(new Long(value)); } /** * Create a number value expression for use in a Query. * * @return the expression */ public static ValueExp value(Number value) { return new NumericValueExp(value); } /** * Create a string value expression for use in a Query. * * @return the expression */ public static StringValueExp value(String value) { return new StringValueExp(value); } // Constructors ------------------------------------------------ /** * Construct a new Query */ public Query() { } // Public ------------------------------------------------------ // X Implementation -------------------------------------------- // Y overrides ------------------------------------------------- // Protected --------------------------------------------------- // Package Private --------------------------------------------- // Private ----------------------------------------------------- // Inner Classes ----------------------------------------------- }
Query.java |