KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > tests > jfun > parsec > mssql > ExpressionCase


1 /*
2  * Created on 2004-11-15
3  *
4  * Author Ben Yu
5  */

6 package tests.jfun.parsec.mssql;
7
8 /**
9  * @author Ben Yu
10  *
11  * 2004-11-15
12  */

13 public class ExpressionCase implements Expression {
14
15   /*
16    * @see jfun.parsec.mssql.Expression#getPrecedence()
17    */

18   public int getPrecedence() {
19     return Precedences.case_stmt();
20   }
21
22   /*
23    * @see jfun.parsec.mssql.Expression#acceptVisitor(jfun.parsec.mssql.ExpressionVisitor)
24    */

25   public void acceptVisitor(ExpressionVisitor v) {
26     v.visitCase(e, cases, def);
27   }
28   private final Expression e;
29   private final WhenThen[] cases;
30   private final Expression def;
31   public boolean hasDefault(){
32     return def != null;
33   }
34   /**
35    * @param e
36    * @param cases
37    * @param def
38    */

39   ExpressionCase(final Expression e, final WhenThen[] cases,
40       final Expression def) {
41     this.e = e;
42     this.cases = cases;
43     this.def = def;
44   }
45   static Expression nodef(final Expression e, final WhenThen[] cases){
46     return new ExpressionCase(e, cases, null);
47   }
48   static Expression def(final Expression e, final WhenThen[] cases, final Expression def){
49     return new ExpressionCase(e, cases, def);
50   }
51   public String JavaDoc toString(){
52     final StringBuffer JavaDoc buf = new StringBuffer JavaDoc("case ");
53     buf.append(e);
54     for(int i=0; i<cases.length; i++){
55       final WhenThen wt = cases[i];
56       buf.append(" when ").append(wt.getWhen()).append(" then ").append(wt.getThen());
57     }
58     if(def != null)
59       buf.append(" else ").append(def);
60     buf.append(" end");
61     return buf.toString();
62   }
63 }
64
Popular Tags