Commit in SlicDiagnostics/src/org/lcsim/slic/diagnostics on MAIN
Runner.java+127added 1.1
Add class to run SlicDiagnostics on single files or sets of them.

SlicDiagnostics/src/org/lcsim/slic/diagnostics
Runner.java added at 1.1
diff -N Runner.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Runner.java	1 Aug 2005 06:33:09 -0000	1.1
@@ -0,0 +1,127 @@
+/*
+/*
+ * Runner.java
+ *
+ * Created on July 28, 2005, 2:07 PM
+ */
+package org.lcsim.slic.diagnostics;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.util.loop.LCIOEventSource;
+import org.lcsim.util.loop.LCSimLoop;
+
+/**
+ *
+ * @author jeremym
+ *
+ * Helper class to run SlicDiagnostics on a file or list of files.
+ *
+ * For multiple input files, it will automatically name the output AIDA file 
+ * after the first one in the list.
+ * 
+ */
+public class Runner
+{
+    SlicDiagnosticsDriver slicDiag = new SlicDiagnosticsDriver();
+    List<String> fileNames = new ArrayList<String>();
+    List<File> fileList = new ArrayList<File>();
+    
+    Runner()
+    {}
+    
+    public void addFile(String filename)
+    {
+//        System.out.println("slic.diagnostics.Runner - Added file: " + filename);
+        this.fileNames.add(filename);
+    }
+    
+    public void addFiles(String filelist)
+    {
+        try
+        {
+            BufferedReader lines = getBufferedReader(filelist);
+            String line;
+            
+            while ( (line = lines.readLine()) != null)
+            {
+                addFile(line.trim());
+            }
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException("Problem running from file.", e);
+        }
+    }
+    
+    public void addFiles(List<String> fileNamesIn)
+    {
+        for ( String file : fileNamesIn )
+        {
+            addFile(file);
+        }
+    }
+    
+    public void addFiles(String[] fileNamesIn)
+    {
+        for ( String file : fileNamesIn)
+        {
+            addFile(file);
+        }
+    }
+    
+    public void run()
+    {
+        try
+        {
+            run(this.fileNames);
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException("Problem running files.", e);
+        }
+    }
+    
+    /** Run SlicAnalysisDriver on files from list in fileName. */
+    private void run(List<String> files) throws Exception
+    {
+        slicDiag.setAidaFileName(files.get(0).toString());
+        
+        for ( String f : files)
+        {
+            File fileIn = new File(f);
+            this.fileList.add(fileIn);
+        }
+        
+        LCIOEventSource src = new LCIOEventSource("SlicDiagnostics", fileList);
+        
+        LCSimLoop loop = new LCSimLoop();
+        loop.setLCIORecordSource(src);
+        loop.add(slicDiag);
+        
+        try
+        {
+            loop.loop(-1);
+        }
+        catch (Exception e)
+        {
+            System.out.println(e.getMessage());
+        }
+        
+//        System.out.println("DONE");
+        loop.dispose();
+        
+        this.fileList.clear();
+    }
+    
+    static private BufferedReader getBufferedReader(String fileName) throws IOException
+    {
+        FileInputStream fin =  new FileInputStream(fileName);
+        return new BufferedReader(new InputStreamReader(fin));
+    }
+}
\ No newline at end of file
CVSspam 0.2.8