- producer links are moved to an "advanced" page, not intended for normal
[mir.git] / source / mir / producer / NodedProducer.java
index 273446d..b9e3012 100755 (executable)
@@ -35,14 +35,19 @@ import java.util.*;
 import java.io.*;
 
 public class NodedProducer implements Producer {
-  ProducerNode rootNode;
-  String verb;
-  Map baseValues;
+  private ProducerNode rootNode;
+  private String verb;
+  private Map baseValues;
+  private boolean isAborted;
+  private boolean isFinished;
+  protected final static String PRODUCER_KEY = "$producer";
 
   public NodedProducer( ProducerNode aRootNode, String aVerb, Map aBaseValues) {
     rootNode = aRootNode;
     verb = aVerb;
     baseValues = aBaseValues;
+    isAborted = false;
+    isAborted = false;
   }
 
   public void produce( PrintWriter aLogger ) throws ProducerFailure, ProducerExc {
@@ -50,7 +55,31 @@ public class NodedProducer implements Producer {
 
     valueMap = new HashMap();
     valueMap.putAll(baseValues);
+    valueMap.put(PRODUCER_KEY, this);
 
     rootNode.produce(valueMap, verb, aLogger);
+
+    synchronized(this) {
+      isFinished=true;
+    }
   };
+
+  public void abort() {
+    synchronized(this) {
+      if (!isFinished)
+        isAborted=true;
+    }
+  }
+
+  public boolean getIsAborted() {
+    synchronized(this) {
+      return isAborted;
+    }
+  }
+
+  public boolean getIsFinished() {
+    synchronized(this) {
+      return isFinished;
+    }
+  }
 }