001    package railo.runtime.sql.exp.op;
002    
003    import railo.runtime.sql.exp.Expression;
004    import railo.runtime.sql.exp.ExpressionSupport;
005    
006    public class Operation2 extends ExpressionSupport implements Operation {
007    
008            private Expression left;
009            private Expression right;
010            private int operator;
011    
012    
013            public Operation2(Expression left, Expression right,int operator) {
014                    this.left=left;
015                    this.right=right;
016                    this.operator=operator;
017            }
018    
019    
020            public static String toString(int operator) {
021                    switch(operator) {
022                    case Operation.OPERATION2_DIVIDE: return "/";
023                    case Operation.OPERATION2_MINUS: return "-";
024                    case Operation.OPERATION2_MULTIPLY: return "*";
025                    case Operation.OPERATION2_PLUS: return "+";
026                    case Operation.OPERATION2_EXP: return "^";
027                    case Operation.OPERATION2_MOD: return "%";
028                    
029                    case Operation.OPERATION2_AND: return "and";
030                    case Operation.OPERATION2_OR: return "or";
031                    case Operation.OPERATION2_XOR: return "xor";
032    
033                    case Operation.OPERATION2_EQ: return "=";
034                    case Operation.OPERATION2_GT: return ">";
035                    case Operation.OPERATION2_GTE: return "=>";
036                    case Operation.OPERATION2_LT: return "<";
037                    case Operation.OPERATION2_LTE: return "<=";
038                    case Operation.OPERATION2_LTGT: return "<>";
039                    case Operation.OPERATION2_NEQ: return "!=";
040                    case Operation.OPERATION2_NOT_LIKE: return "not like";
041                    case Operation.OPERATION2_LIKE: return "like";
042    
043                    case Operation.OPERATION1_PLUS: return "+";
044                    case Operation.OPERATION1_MINUS: return "-";
045                    case Operation.OPERATION1_NOT: return "not";
046                    case Operation.OPERATION1_IS_NOT_NULL: return "is not null";
047                    case Operation.OPERATION1_IS_NULL: return "is null";
048                    }
049                    return null;
050            }
051    
052    
053            public String toString(boolean noAlias) {
054                    if(noAlias || getIndex()==0)return left.toString(true)+" "+toString(operator)+" "+right.toString(true);
055                    return toString(true)+" as "+getAlias();
056            }
057    
058    
059            /**
060             * @return the left
061             */
062            public Expression getLeft() {
063                    return left;
064            }
065    
066    
067            /**
068             * @return the operator
069             */
070            public int getOperator() {
071                    return operator;
072            }
073    
074    
075            /**
076             * @return the right
077             */
078            public Expression getRight() {
079                    return right;
080            }
081            
082    }