1 /* JJT: 0.2.2 */ 2 3 package mobisnap.mobile_trx; 4 5 import java.util.*; 6 7 /*** 8 * Implements sql expression 9 */ 10 public class ASTSQLExpression extends mobisnap.mobile_trx.SimpleNode { 11 public Vector ors; 12 13 public ASTSQLExpression(int id) { 14 super(id); 15 ors = new Vector(); 16 } 17 18 public ASTSQLExpression( MobisnapSQL p, int i) { 19 super( p, i); 20 id = i; 21 ors = new Vector(); 22 } 23 24 /*** Accept the visitor. **/ 25 public Object jjtAccept(MobisnapSQLVisitor visitor, Object data) { 26 return visitor.visit(this, data); 27 } 28 29 /*** 30 * Returns the value of the expression 31 * 32 * @param msql_type Specifies which type of processing should be performed 33 * MobisnapConstants.MSQL_SERVER = 1 34 * MobisnapConstants.MSQL_TENTATIVE_CLIENT = 2 35 * MobisnapConstants.MSQL_STABLE_CLIENT = 3 36 * MobisnapConstants.MSQL_RESERVATION_CLIENT = 4 37 * @param cond True if reservations associated iwth transaction should be 38 * propagated to the current transaction 39 */ 40 public Object value( int msql_type, boolean cond) throws Exception { 41 int n = ors.size(); 42 if( n == 0) 43 throw new mobisnap.MobisnapException( "Internal error in expotent expression"); 44 Object val = ((SimpleNode)ors.elementAt(0)).value( msql_type, cond); 45 for( int i = 1; i < n; i++) { 46 Object aux = ((SimpleNode)ors.elementAt( i)).value( msql_type, cond); 47 val = MSQLTypeUtil.or( val, aux); 48 } 49 return val; 50 } 51 52 /*** 53 * Displays the source code of the node 54 */ 55 public void sourceCode( int msql_type, StringBuffer buffer) throws Exception { 56 if( msql_type == mobisnap.MobisnapConstants.MSQL_ORIGINAL) { 57 super.sourceCode( msql_type, buffer); 58 return; 59 } 60 try { 61 Object obj = value( msql_type, false); 62 if( obj instanceof String) { 63 buffer.append( "'"); 64 buffer.append( obj.toString()); 65 buffer.append( "'"); 66 } else if( obj instanceof java.sql.Date) { 67 buffer.append( "'"); 68 buffer.append( MSQLTypeUtil.date2String( (java.sql.Date)obj)); 69 buffer.append( "'"); 70 } else 71 buffer.append( obj.toString()); 72 } catch( Exception e) { 73 super.sourceCode( msql_type, buffer); 74 } 75 } 76 77 /*** 78 * Returns a simplified node, if possible (usefull in expressions) 79 * 80 * @param msql_type Specifies which type of processing should be performed 81 * MobisnapConstants.MSQL_SERVER = 1 82 * MobisnapConstants.MSQL_TENTATIVE_CLIENT = 2 83 * MobisnapConstants.MSQL_STABLE_CLIENT = 3 84 * MobisnapConstants.MSQL_RESERVATION_CLIENT = 4 85 * @param cond True if reservations associated iwth transaction should be 86 * propagated to the current transaction 87 */ 88 public SimpleNode simplify( int msql_type, boolean cond) { 89 for( int i = 0; i < ors.size(); i++) 90 ors.setElementAt( ((SimpleNode)ors.elementAt(i)).simplify( msql_type, cond), i); 91 if( ors.size() == 1) 92 return (SimpleNode)ors.elementAt( 0); 93 try { 94 return new SimpleNodeValue( value( msql_type, cond)); 95 } catch( Exception e) { 96 return this; 97 } 98 } 99 100 101 102 103 }

This page was automatically generated by Maven