home *** CD-ROM | disk | FTP | other *** search
- package javax.management;
-
- class BetweenQueryExp extends QueryEval implements QueryExp {
- private static final long serialVersionUID = -2933597532866307444L;
- private ValueExp exp1;
- private ValueExp exp2;
- private ValueExp exp3;
-
- BetweenQueryExp(ValueExp exp1, ValueExp exp2, ValueExp exp3) {
- this.exp1 = exp1;
- this.exp2 = exp2;
- this.exp3 = exp3;
- }
-
- public void setMBeanServer(MBeanServer server) {
- super.setMBeanServer(server);
- if (this.exp1 != null) {
- this.exp1.setMBeanServer(server);
- }
-
- if (this.exp2 != null) {
- this.exp2.setMBeanServer(server);
- }
-
- if (this.exp3 != null) {
- this.exp3.setMBeanServer(server);
- }
-
- }
-
- public boolean apply(ObjectName name) throws BadStringOperationException, BadBinaryOpValueExpException, BadAttributeValueExpException, InvalidApplicationException {
- if (this.exp1 != null && this.exp2 != null && this.exp3 != null) {
- ValueExp val1 = this.exp1.apply(name);
- ValueExp val2 = this.exp2.apply(name);
- ValueExp val3 = this.exp3.apply(name);
- if (val1 instanceof NumericValueExp && val2 instanceof NumericValueExp && val3 instanceof NumericValueExp) {
- NumericValueExp num1 = (NumericValueExp)val1;
- NumericValueExp num2 = (NumericValueExp)val2;
- NumericValueExp num3 = (NumericValueExp)val3;
- if (!num1.isDouble() && !num2.isDouble() && !num3.isDouble()) {
- return this.isBetween(new Long(num1.longValue()), new Long(num2.longValue()), new Long(num3.longValue()));
- }
-
- return this.isBetween(new Double(num1.doubleValue()), new Double(num2.doubleValue()), new Double(num3.doubleValue()));
- }
-
- if (val1 instanceof StringValueExp && val2 instanceof StringValueExp && val3 instanceof StringValueExp) {
- String s1 = ((StringValueExp)val1).getValue();
- String s2 = ((StringValueExp)val2).getValue();
- String s3 = ((StringValueExp)val3).getValue();
- return this.isBetween(s1, s2, s3);
- }
- }
-
- return false;
- }
-
- private boolean isBetween(Comparable c1, Comparable c2, Comparable c3) {
- if (c1 == null && c2 == null && c3 == null) {
- return true;
- } else if (c1 != null || c2 != null && c3 != null) {
- if (c1 == null) {
- return false;
- } else if (c1 == null || c2 != null && c3 != null) {
- return c1.compareTo(c2) >= 0 && c1.compareTo(c3) <= 0;
- } else {
- return false;
- }
- } else {
- return true;
- }
- }
- }
-