From: Matt I. <mat...@us...> - 2003-01-14 15:05:14
|
Update of /cvsroot/ant-contrib/ant-contrib/src/net/sf/antcontrib/logic In directory sc8-pr-cvs1:/tmp/cvs-serv27036/ant-contrib/src/net/sf/antcontrib/logic Modified Files: IfTask.java Log Message: added <elseif> subelement to <if> task. Index: IfTask.java =================================================================== RCS file: /cvsroot/ant-contrib/ant-contrib/src/net/sf/antcontrib/logic/IfTask.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** IfTask.java 6 Feb 2002 11:59:35 -0000 1.2 --- IfTask.java 14 Jan 2003 15:05:02 -0000 1.3 *************** *** 49,52 **** --- 49,55 ---- package net.sf.antcontrib.logic; + import java.util.ArrayList; + import java.util.List; + import java.util.Iterator; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.Sequential; *************** *** 107,113 **** --- 110,163 ---- public class IfTask extends ConditionBase { + public static final class ElseIf + extends ConditionBase + { + private Sequential thenTasks = null; + + public void addThen(Sequential t) + { + if (thenTasks != null) + { + throw new BuildException("You must not nest more than one <then> into <elseif>"); + } + thenTasks = t; + } + + public boolean eval() + throws BuildException + { + if (countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into <elseif>"); + } + if (countConditions() < 1) { + throw new BuildException("You must nest a condition into <elseif>"); + } + Condition c = (Condition) getConditions().nextElement(); + + return c.eval(); + } + + public void execute() + throws BuildException + { + if (thenTasks != null) + { + thenTasks.perform(); + } + } + } + private Sequential thenTasks = null; + private List elseIfTasks = new ArrayList(); private Sequential elseTasks = null; + /*** + * A nested Else if task + */ + public void addElseIf(ElseIf ei) + { + elseIfTasks.add(ei); + } + /** * A nested <then> element - a container of tasks that will *************** *** 148,153 **** thenTasks.perform(); } ! } else { ! if (elseTasks != null) { elseTasks.perform(); } --- 198,218 ---- thenTasks.perform(); } ! } ! else ! { ! boolean done = false; ! Iterator it = elseIfTasks.iterator(); ! while (it.hasNext() && ! done) ! { ! ElseIf ei = (ElseIf)(it.next()); ! if (ei.eval()) ! { ! done = true; ! ei.execute(); ! } ! } ! ! if (!done && elseTasks != null) ! { elseTasks.perform(); } |