lcsim/src/org/lcsim/util/decision
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;
+}