lcsim/src/org/lcsim/util/decision
diff -N OrDecisionMakerSingle.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ OrDecisionMakerSingle.java 30 Apr 2007 17:13:28 -0000 1.1
@@ -0,0 +1,39 @@
+package org.lcsim.util.decision;
+
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * Combine multiple DecisionMakerSingle objects (logical OR).
+ *
+ * @version $Id: OrDecisionMakerSingle.java,v 1.1 2007/04/30 17:13:28 mcharles Exp $
+ */
+
+public class OrDecisionMakerSingle<E> implements DecisionMakerSingle<E> {
+
+ /** Simple constructor. */
+ public OrDecisionMakerSingle() {}
+
+ /** Returns true if objectToTest passes at least one DecisionMaker test. */
+ public boolean valid(E objectToTest) {
+ // Make sure there are some tests defined:
+ if (m_listOfDecisionMakers.size()==0) {
+ throw new AssertionError(this.getClass().getName()+".valid() called with an empty list of decision-makers");
+ }
+ // Apply tests; if any passes, return true.
+ for (DecisionMakerSingle<E> dec : m_listOfDecisionMakers) {
+ if ( dec.valid(objectToTest) ) {
+ return true;
+ }
+ }
+ // Passed none
+ return false;
+ }
+
+ /** Add a DecisionMaker to the list of tests to apply. */
+ public void addDecisionMaker(DecisionMakerSingle<E> newDecisionMaker) {
+ m_listOfDecisionMakers.add(newDecisionMaker);
+ }
+
+ protected List<DecisionMakerSingle<E>> m_listOfDecisionMakers = new Vector<DecisionMakerSingle<E>> ();
+}