1 /*** 2 * 3 * Copyright 2004 Hiram Chirino 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 **/ 18 package org.codehaus.activemq.filter; 19 20 21 /*** 22 * An expression which performs an operation on two expression values. 23 * 24 * @version $Revision: 1.1 $ 25 */ 26 abstract public class BinaryExpression implements Expression { 27 protected Expression left; 28 protected Expression right; 29 30 public BinaryExpression(Expression left, Expression right) { 31 this.left = left; 32 this.right = right; 33 } 34 35 public Expression getLeft() { 36 return left; 37 } 38 39 public Expression getRight() { 40 return right; 41 } 42 43 44 /*** 45 * @see java.lang.Object#toString() 46 */ 47 public String toString() { 48 return "(" + left.toString() + " " + getExpressionSymbol() + " " + right.toString() + ")"; 49 } 50 51 /*** 52 * TODO: more efficient hashCode() 53 * 54 * @see java.lang.Object#hashCode() 55 */ 56 public int hashCode() { 57 return toString().hashCode(); 58 } 59 60 /*** 61 * TODO: more efficient hashCode() 62 * 63 * @see java.lang.Object#equals(java.lang.Object) 64 */ 65 public boolean equals(Object o) { 66 67 if (o == null || !this.getClass().equals(o.getClass())) { 68 return false; 69 } 70 return toString().equals(o.toString()); 71 72 } 73 74 /*** 75 * Returns the symbol that represents this binary expression. For example, addition is 76 * represented by "+" 77 * 78 * @return 79 */ 80 abstract public String getExpressionSymbol(); 81 82 /*** 83 * @param expression 84 */ 85 public void setRight(Expression expression) { 86 right = expression; 87 } 88 89 /*** 90 * @param expression 91 */ 92 public void setLeft(Expression expression) { 93 left = expression; 94 } 95 96 }