1 /* JJT: 0.2.2 */ 2 3 package mobisnap.mobile_trx; 4 5 import java.util.*; 6 7 /*** 8 * Implements expotent expression 9 */ 10 public class ASTSQLExpotentExpression extends mobisnap.mobile_trx.SimpleNode { 11 public Vector els; 12 13 public ASTSQLExpotentExpression(int id) { 14 super(id); 15 els = new Vector(); 16 } 17 18 public ASTSQLExpotentExpression( MobisnapSQL p, int i) { 19 super( p, i); 20 id = i; 21 els = 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 = els.size(); 42 if( n == 0) 43 throw new mobisnap.MobisnapException( "Internal error in expotent expression"); 44 Object val = ((SimpleNode)els.elementAt(0)).value( msql_type, cond); 45 for( int i = 1; i < n; i++) { 46 Object aux = ((SimpleNode)els.elementAt( i)).value( msql_type, cond); 47 val = MSQLTypeUtil.pow( val, aux); 48 } 49 return val; 50 } 51 52 /*** 53 * Returns a simplified node, if possible (usefull in expressions) 54 * 55 * @param msql_type Specifies which type of processing should be performed 56 * MobisnapConstants.MSQL_SERVER = 1 57 * MobisnapConstants.MSQL_TENTATIVE_CLIENT = 2 58 * MobisnapConstants.MSQL_STABLE_CLIENT = 3 59 * MobisnapConstants.MSQL_RESERVATION_CLIENT = 4 60 * @param cond True if reservations associated iwth transaction should be 61 * propagated to the current transaction 62 */ 63 public SimpleNode simplify( int msql_type, boolean cond) { 64 for( int i = 0; i < els.size(); i++) 65 els.setElementAt( ((SimpleNode)els.elementAt(i)).simplify( msql_type, cond), i); 66 if( els.size() == 1) 67 return (SimpleNode)els.elementAt( 0); 68 try { 69 return new SimpleNodeValue( value( msql_type, cond)); 70 } catch( Exception e) { 71 return this; 72 } 73 } 74 75 76 }

This page was automatically generated by Maven