Print

Print


Commit in lcsim/src/org/lcsim/util/decision on MAIN
NotDecisionMakerSingle.java+21added 1.1
AndDecisionMakerSingle.java+39added 1.1
+60
2 added files
Decision-maker classes for logical manipulation

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