1 /* JJT: 0.2.2 */
2
3 package mobisnap.mobile_trx;
4
5 import java.util.*;
6
7 public class ASTIfStatement extends mobisnap.mobile_trx.SimpleNode {
8 public class Alternatives {
9 public ASTPlSqlExpression expr;
10 public ASTSequenceOfStatements stats;
11
12 public Alternatives( ASTPlSqlExpression expr, ASTSequenceOfStatements stats ) {
13 this.expr = expr;
14 this.stats = stats;
15 }
16
17 };
18 public Vector alternatives;
19 public ASTSequenceOfStatements elseStats;
20
21
22 public ASTIfStatement(int id) {
23 super(id);
24 alternatives = new Vector();
25 elseStats = null;
26 }
27
28 public ASTIfStatement( MobisnapSQL p, int i) {
29 super( p, i);
30 id = i;
31 alternatives = new Vector();
32 elseStats = null;
33 }
34
35 /*** Accept the visitor. **/
36 public Object jjtAccept(MobisnapSQLVisitor visitor, Object data) {
37 return visitor.visit(this, data);
38 }
39
40 public void insert( ASTPlSqlExpression expr, ASTSequenceOfStatements stats) {
41 alternatives.addElement( new Alternatives( expr, stats));
42 }
43
44 public void process( int msql_type) throws Exception {
45 for( int i = 0; i < alternatives.size(); i++) {
46 Alternatives aux = (Alternatives)alternatives.elementAt( i);
47 Object obj = aux.expr.value( msql_type, true);
48 if( obj instanceof SQLNull)
49 continue;
50 if( obj instanceof Boolean) {
51 if( ((Boolean)obj).booleanValue()) {
52 aux.stats.process( msql_type);
53 return;
54 } else
55 continue;
56 }
57 if( obj instanceof String && (((String)obj).equalsIgnoreCase( "true") || ((String)obj).equalsIgnoreCase( "false"))) {
58 if( ((String)obj).equalsIgnoreCase( "true")) {
59 aux.stats.process( msql_type);
60 return;
61 } else
62 continue;
63 }
64 throw new mobisnap.MobisnapException( "Invalid expression in if statement");
65 }
66 if( elseStats != null)
67 elseStats.process( msql_type);
68 }
69
70 }
This page was automatically generated by Maven