lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/util/job
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;
}
+
}