Commit in lcsim/src/org/lcsim/util/decision on MAIN
OrDecisionMakerSingle.java+39added 1.1
MJC: Add another predicate-type utility

lcsim/src/org/lcsim/util/decision
OrDecisionMakerSingle.java added at 1.1
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>> ();
+}
CVSspam 0.2.8