Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/util/job on MAIN
JobManager.java+61-81.8 -> 1.9
Added aida tree auto-save

lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/util/job
JobManager.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- JobManager.java	6 Mar 2009 19:10:25 -0000	1.8
+++ JobManager.java	11 Mar 2009 03:21:55 -0000	1.9
@@ -1,5 +1,6 @@
 package org.lcsim.contrib.onoprien.util.job;
 
+import java.io.IOException;
 import java.io.PrintStream;
 import java.util.*;
 
@@ -26,13 +27,15 @@
  * </ul>
  * 
  * @author D. Onoprienko
- * @version $Id: JobManager.java,v 1.8 2009/03/06 19:10:25 onoprien Exp $
+ * @version $Id: JobManager.java,v 1.9 2009/03/11 03:21:55 onoprien Exp $
  */
 public class JobManager extends org.lcsim.util.Driver implements ConditionsListener {
   
 // -- Private parts :  ---------------------------------------------------------
   
   static private JobManager _defInstance;
+
+  static private final String _JM = "JobManager: ";
   
   private JobEvent _lastEvent;
   private ArrayList<Node> _listeners;
@@ -49,7 +52,10 @@
    */
   public PrintStream out;
 
-  private int _nEvents;
+  private int _nEventsPrint;
+
+  private int _nEventsAida;
+  private String _fileNameAida;
 
   
 // -- Constructors and initialization :  ---------------------------------------
@@ -79,16 +85,46 @@
   
   /** Called by the framework to process event. */
   public void process(EventHeader event) {
-    if (_nEvents > 0) {
-      int i = event.getEventNumber();
-      if (i % _nEvents == 0 && i > 0) System.out.println(i +" events processed");
+
+    int iEvent = event.getEventNumber();
+
+    // Print progress
+
+    if (_nEventsPrint > 0) {
+      if (iEvent % _nEventsPrint == 0 && iEvent > 0) System.out.println(iEvent +" events processed");
+    }
+    
+    // Save AIDA objects
+    
+    if (_nEventsAida > 0 && iEvent % _nEventsPrint == 0 && iEvent > 0) {
+      String name = _fileNameAida +"_"+ iEvent;
+      try {
+       _aida.saveAs(name);
+      } catch (IOException x) {
+        System.out.println(_JM +"failed to save AIDA objects to "+ name);
+      }
     }
+
+    // Send event to listeners if JobManager has been invalidated
+
     if (_lastEvent == null) {
       _lastEvent = new JobEvent(this, event.getDetector());
       fireJobEvent(_lastEvent);
     }
   }
 
+  /** Called by the framework when event processing is suspended. */
+  public void suspend() {
+    if (_fileNameAida != null) {
+      try {
+       _aida.saveAs(_fileNameAida);
+        System.out.println(_JM +"saved AIDA objects to "+ _fileNameAida);
+      } catch (IOException x) {
+        System.out.println(_JM +"failed to save AIDA objects to "+ _fileNameAida);
+      }
+    }
+  }
+
   
 // -- Getters :  ---------------------------------------------------------------
   
@@ -314,10 +350,27 @@
     }
   }
 
+
 // -- Printing statistics :  ---------------------------------------------------
 
-  /** Tells <tt>JonManager</tt> to print a message every <tt>nEvents</tt>. */
-  public void printProgress(int nEvents) {
-    _nEvents = nEvents;
+  /** Tells <tt>JobManager</tt> to print a message every <tt>nEvents</tt>. */
+  public void setPrintProgress(int nEvents) {
+    _nEventsPrint = nEvents;
+  }
+
+
+// -- Save AIDA objects :  -----------------------------------------------------
+
+  /**
+   * Tells <tt>JobManager</tt> to save aida objects every <tt>nEvents</tt> and when
+   * event processing is suspended.
+   *
+   * @param nEvents  If zero, AIDA objects will only be saved when the event processing is suspended.
+   * @param fileName  File name. Number of processed events will be appended for intermediate saves.
+   */
+  public void setSaveAida(int nEvents, String fileName) {
+    _nEventsAida = nEvents;
+    _fileNameAida = fileName;
   }
+
 }
CVSspam 0.2.8