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 ; 6 import java.util.Iterator ; 7 import java.util.List ; 8 9 public abstract class NAryCondition extends Condition 10 { 11 12 private List subconditions = new ArrayList (); 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 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 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 getOperatorText(); 47 48 public void toString(StringBuffer text) 49 { 50 text.append('('); 51 boolean isFirst = true; 52 for (Iterator 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 |