Commit in lcsim/src/org/lcsim/util/decision on MAIN
ListFilterDriver.java+65added 1.1
A Driver wrapper for org.lcsim.util.decision.ListFilter

lcsim/src/org/lcsim/util/decision
ListFilterDriver.java added at 1.1
diff -N ListFilterDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ListFilterDriver.java	4 Jul 2006 20:57:29 -0000	1.1
@@ -0,0 +1,65 @@
+package org.lcsim.util.decision;
+
+import java.util.*;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ * A Driver wrapper around the ListFilter class, which applies a
+ * DecisionMakerSingle to each element in a list.
+ *
+ * @version $Id: ListFilterDriver.java,v 1.1 2006/07/04 20:57:29 mcharles Exp $
+ */
+
+public class ListFilterDriver<E> extends Driver
+{
+    /**
+     * Simple constructor.
+     */
+    public ListFilterDriver () {}
+
+    /**
+     * Constructor.
+     *
+     * @param dec The DecisionMaker which will be applied.
+     * @param inputList The named List to read in and filter.
+     * @param outputList The name under which to write out the filtered List.
+     */
+    public ListFilterDriver (DecisionMakerSingle<E> dec, String inputList, String outputList) {
+      m_inputDecision = dec;
+      m_inputListName = inputList;
+      m_outputListName = outputList;
+    }
+
+    /** Process one event. */
+    public void process(EventHeader event) 
+    {
+	// Some contortions required because templating
+	// won't let us do "E.class"...
+	Object inputListObject = event.get(m_inputListName);
+	List inputList = (List) (inputListObject);
+	List<E> castInputList = new Vector<E>();
+	for (Object obj : inputList) {
+	    // Cast to the expected class
+	    E castObj = (E) (obj);
+	    castInputList.add(castObj);
+	}
+
+	// Which ones pass the filter?
+	// ---------------------------
+	ListFilter<E> filter = new ListFilter<E> (m_inputDecision);
+	List<E> filteredInputList = filter.filterList(castInputList);
+	event.put(m_outputListName, filteredInputList);
+    }
+
+    /** Set decision. */
+    public void setInputDecision(DecisionMakerSingle<E> dec) { m_inputDecision = dec; }
+    /** Set input list name. */
+    public void setInputList (String name) { m_inputListName  = name; }
+    /** Set output list name. */
+    public void setOutputList(String name) { m_outputListName = name; }
+
+    protected DecisionMakerSingle<E> m_inputDecision;
+    protected String m_inputListName;
+    protected String m_outputListName;
+}
CVSspam 0.2.8