KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflow > queries > NAryCondition


1 package nl.hippo.cms.workflow.queries;
2
3 import com.opensymphony.workflow.query.Expression;
4 import com.opensymphony.workflow.query.NestedExpression;
5 import java.util.ArrayList JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.List JavaDoc;
8
9 public abstract class NAryCondition extends Condition
10 {
11
12     private List JavaDoc subconditions = new ArrayList JavaDoc();
13
14     public NAryCondition()
15     {
16         super();
17     }
18     
19     public void add(Condition condition)
20     {
21         subconditions.add(condition);
22     }
23     
24     public Iterator JavaDoc conditionsIterator()
25     {
26         return subconditions.iterator();
27     }
28     
29     public Expression toOSWorkflowExpression()
30     {
31         Expression result;
32         Expression[] subexpressions = new Expression[subconditions.size()];
33         int i = 0;
34         for (Iterator JavaDoc subconditionsIterator = subconditions.iterator(); subconditionsIterator.hasNext();)
35         {
36             Condition condition = (Condition) subconditionsIterator.next();
37             subexpressions[i++] = condition.toOSWorkflowExpression();
38         }
39         result = new NestedExpression(subexpressions, getOperator());
40         
41         return result;
42     }
43     
44     protected abstract int getOperator();
45     
46     protected abstract String JavaDoc getOperatorText();
47     
48     public void toString(StringBuffer JavaDoc text)
49     {
50         text.append('(');
51         boolean isFirst = true;
52         for (Iterator JavaDoc subconditionsIterator = subconditions.iterator(); subconditionsIterator.hasNext();)
53         {
54             if (isFirst)
55             {
56                 isFirst = false;
57             }
58             else
59             {
60                 text.append(' ');
61                 text.append(getOperatorText());
62                 text.append(' ');
63             }
64             Condition condition = (Condition) subconditionsIterator.next();
65             condition.toString(text);
66         }
67         text.append(')');
68     }
69
70 }
71
Popular Tags