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 {
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;
+ }
+ }
}