Commit in lcsim/src/org/lcsim/util on MAIN
ListSubtractDriver.java+53added 1.1
MJC: Utility class

lcsim/src/org/lcsim/util
ListSubtractDriver.java added at 1.1
diff -N ListSubtractDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ListSubtractDriver.java	13 Oct 2008 07:22:16 -0000	1.1
@@ -0,0 +1,53 @@
+package org.lcsim.util;
+
+import java.util.List;
+import java.util.Vector;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ * Subtract one list from another, writing out the remainder.
+ *
+ * @version $Id: ListSubtractDriver.java,v 1.1 2008/10/13 07:22:16 mcharles Exp $
+ */
+
+public class ListSubtractDriver<T> extends Driver
+{
+    String m_listName1 = null;
+    String m_listName2 = null;
+    String m_outputListName = null;
+    public ListSubtractDriver(String list1, String list2, String outputList) {
+	super();
+	m_listName1 = list1;
+	m_listName2 = list2;
+	m_outputListName = outputList;
+    }
+
+    Class<T> m_containedClass = null;
+    public ListSubtractDriver(String list1, String list2, String outputList, Class<T> containedClass) {
+	super();
+	m_listName1 = list1;
+	m_listName2 = list2;
+	m_outputListName = outputList;
+	m_containedClass = containedClass;
+    }
+
+    /** Process one event, performing subtraction. */
+    public void process(EventHeader event) {
+	List<T> outputList = new Vector<T>();
+	List list1 = (List) (event.get(m_listName1));
+	List list2 = (List) (event.get(m_listName2));
+	for (Object obj : list1) {
+	    if ( ! list2.contains(obj) ) {
+		T castObj = (T)(obj);
+		outputList.add(castObj);
+	    }
+	}
+	if (m_containedClass == null) {
+	    event.put(m_outputListName, outputList);
+	} else {
+	    event.put(m_outputListName, outputList, m_containedClass, 0);
+	}
+    }
+}
CVSspam 0.2.8