View Javadoc

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  }