lcsim/src/org/lcsim/util/decision
diff -N NotDecisionMakerSingle.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ NotDecisionMakerSingle.java 11 Aug 2006 23:30:48 -0000 1.1
@@ -0,0 +1,21 @@
+package org.lcsim.util.decision;
+
+/**
+ * Invert a DecisionMakerSingle object (logical NOT).
+ *
+ * @version $Id: NotDecisionMakerSingle.java,v 1.1 2006/08/11 23:30:48 mcharles Exp $
+ */
+
+public class NotDecisionMakerSingle<E> implements DecisionMakerSingle<E> {
+ /** Convenience constructor. */
+ public NotDecisionMakerSingle(DecisionMakerSingle<E> testToInvert) {
+ m_testToInvert = testToInvert;
+ }
+
+ /** Apply the test to objectToTest and invert the result. */
+ public boolean valid(E objectToTest) {
+ return !(m_testToInvert.valid(objectToTest));
+ }
+
+ protected DecisionMakerSingle<E> m_testToInvert;
+}
lcsim/src/org/lcsim/util/decision
diff -N AndDecisionMakerSingle.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ AndDecisionMakerSingle.java 11 Aug 2006 23:30:48 -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 AND).
+ *
+ * @version $Id: AndDecisionMakerSingle.java,v 1.1 2006/08/11 23:30:48 mcharles Exp $
+ */
+
+public class AndDecisionMakerSingle<E> implements DecisionMakerSingle<E> {
+
+ /** Simple constructor. */
+ public AndDecisionMakerSingle() {}
+
+ /** Returns true if objectToTest passes every 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 fails, return false.
+ for (DecisionMakerSingle<E> dec : m_listOfDecisionMakers) {
+ if ( !(dec.valid(objectToTest)) ) {
+ return false;
+ }
+ }
+ // Passed all
+ return true;
+ }
+
+ /** 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>> ();
+}