FileDocCategorySizeDatePackage
BinaryRelQueryExp.javaAPI DocJava SE 5 API4430Fri Aug 26 14:57:32 BST 2005javax.management

BinaryRelQueryExp

public class BinaryRelQueryExp extends QueryEval implements QueryExp
This class is used by the query-building mechanism to represent binary operations.
serial
include
since
1.5

Fields Summary
private static final long
serialVersionUID
private int
relOp
private ValueExp
exp1
private ValueExp
exp2
Constructors Summary
public BinaryRelQueryExp()
Basic Constructor.



           
       
    
public BinaryRelQueryExp(int op, ValueExp v1, ValueExp v2)
Creates a new BinaryRelQueryExp with operator op applied on v1 and v2 values.

 
	relOp = op;
	exp1  = v1;
	exp2  = v2;
    
Methods Summary
public booleanapply(javax.management.ObjectName name)
Applies the BinaryRelQueryExp on an MBean.

param
name The name of the MBean on which the BinaryRelQueryExp will be applied.
return
True if the query was successfully applied to the MBean, false otherwise.
exception
BadStringOperationException
exception
BadBinaryOpValueExpException
exception
BadAttributeValueExpException
exception
InvalidApplicationException

 
	Object val1 = exp1.apply(name);
	Object val2 = exp2.apply(name);
	String sval1;
	String sval2;
	double dval1;
	double dval2;
	long   lval1;
	long   lval2;
	boolean bval1;
	boolean bval2;
	boolean numeric = val1 instanceof NumericValueExp;
	boolean bool = val1 instanceof BooleanValueExp;
	if (numeric) {
	    if (((NumericValueExp)val1).isLong()) {
		lval1 = ((NumericValueExp)val1).longValue();
		lval2 = ((NumericValueExp)val2).longValue();

		switch (relOp) {
		case Query.GT:
		    return lval1 > lval2;
		case Query.LT:
		    return lval1 < lval2;
		case Query.GE:
		    return lval1 >= lval2;
		case Query.LE:
		    return lval1 <= lval2;
		case Query.EQ:
		    return lval1 == lval2;
		}
	    } else {
		dval1 = ((NumericValueExp)val1).doubleValue();
		dval2 = ((NumericValueExp)val2).doubleValue();

		switch (relOp) {
		case Query.GT:
		    return dval1 > dval2;
		case Query.LT:
		    return dval1 < dval2;
		case Query.GE:
		    return dval1 >= dval2;
		case Query.LE:
		    return dval1 <= dval2;
		case Query.EQ:
		    return dval1 == dval2;
		}
	    }
	    
	} else if (bool) {

	    bval1 = ((BooleanValueExp)val1).getValue().booleanValue();
	    bval2 = ((BooleanValueExp)val2).getValue().booleanValue();

	    switch (relOp) {
	    case Query.GT:
	        return bval1 && !bval2;
	    case Query.LT:
	        return !bval1 && bval2;
	    case Query.GE:
	        return bval1 || !bval2;
	    case Query.LE:
	        return !bval1 || bval2;
	    case Query.EQ:
	        return bval1 == bval2;
	    }

	} else {
	    sval1 = ((StringValueExp)val1).getValue();
	    sval2 = ((StringValueExp)val2).getValue();

	    switch (relOp) {
	    case Query.GT:
		return sval1.compareTo(sval2) > 0;
	    case Query.LT:
		return sval1.compareTo(sval2) < 0;
	    case Query.GE:
		return sval1.compareTo(sval2) >= 0;
	    case Query.LE:
		return sval1.compareTo(sval2) <= 0;
	    case Query.EQ:
		return sval1.compareTo(sval2) == 0;
	    }
	}

	return false;
    
public javax.management.ValueExpgetLeftValue()
Returns the left value of the query.

 
	return exp1;
    
public intgetOperator()
Returns the operator of the query.

 
	return relOp;
    
public javax.management.ValueExpgetRightValue()
Returns the right value of the query.

 
	return exp2;
    
private java.lang.StringrelOpString()

	switch (relOp) {
	case Query.GT:
	    return ">";
	case Query.LT:
	    return "<";
	case Query.GE:
	    return ">=";
	case Query.LE:
	    return "<=";
	case Query.EQ:
	    return "=";
	}
	
	return "=";
    
public java.lang.StringtoString()
Returns the string representing the object.

 
	return "(" + exp1 + ") " + relOpString() + " (" + exp2 + ")";