cleanup / abuse system fix / prepping for a release
[mir.git] / source / mir / producer / reader / ScriptedProducerNode.java
index aa08052..0f25678 100755 (executable)
  */
 package mir.producer.reader;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import mir.log.LoggerWrapper;
 import mir.producer.ProducerExc;
 import mir.producer.ProducerFailure;
 import mir.producer.ProducerNode;
+import mir.producer.ProductionContext;
 import mir.util.ParameterExpander;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  * <p> A  ScriptedProducerNode is a  ProducerNode which is  defined in
  * producers.xml file by the &lt;nodedefinition&gt; statement.  </p>
@@ -63,11 +64,13 @@ public class ScriptedProducerNode implements ProducerNode {
     nodeParameterValues.putAll(aNodeParameterValues);
   }
 
-  public void produce(Map aValues, String aVerb, LoggerWrapper aLogger) throws ProducerFailure, ProducerExc {
+  public void produce(ProductionContext aProductionContext) throws ProducerFailure, ProducerExc {
     try {
       Map oldValues = new HashMap();
-      ScriptedProducerNodeTool.saveMapValues(oldValues, aValues, definition.getStringParameters().keySet());
-      ScriptedProducerNodeTool.saveMapValues(oldValues, aValues, definition.getIntegerParameters().keySet());
+      ScriptedProducerNodeTool.saveMapValues(oldValues,
+          aProductionContext.getValueSet(), definition.getStringParameters().keySet());
+      ScriptedProducerNodeTool.saveMapValues(oldValues,
+          aProductionContext.getValueSet(), definition.getIntegerParameters().keySet());
       try {
         Iterator i = stringParameterValues.entrySet().iterator();
 
@@ -75,7 +78,9 @@ public class ScriptedProducerNode implements ProducerNode {
           Map.Entry entry = (Map.Entry) i.next();
 
           if (entry.getValue() instanceof String) {
-            aValues.put(entry.getKey(), ParameterExpander.expandExpression(aValues, (String) entry.getValue()));
+            aProductionContext.getValueSet().put(entry.getKey(),
+                ParameterExpander.expandExpression(aProductionContext.getValueSet(),
+                    (String) entry.getValue()));
           }
         }
 
@@ -85,25 +90,27 @@ public class ScriptedProducerNode implements ProducerNode {
           Map.Entry entry = (Map.Entry) i.next();
 
           if (entry.getValue() instanceof String) {
-            aValues.put(entry.getKey(), ParameterExpander.evaluateExpression(aValues, (String) entry.getValue()));
+            aProductionContext.getValueSet().put(entry.getKey(),
+                ParameterExpander.evaluateExpression(aProductionContext.getValueSet(), (String) entry.getValue()));
           }
         }
 
-        ScriptedProducerNodeTool.pushNodeParameterValues(aValues, definition.getName(), nodeParameterValues);
+        ScriptedProducerNodeTool.pushNodeParameterValues(aProductionContext.getValueSet(),
+            definition.getName(), nodeParameterValues);
         try {
-          definition.getBody().produce(aValues, aVerb, aLogger);
+          definition.getBody().produce(aProductionContext);
         }
         finally {
-          ScriptedProducerNodeTool.popNodeParameterValues(aValues, definition.getName());
+          ScriptedProducerNodeTool.popNodeParameterValues(aProductionContext.getValueSet(), definition.getName());
         }
       }
       finally {
-        ScriptedProducerNodeTool.restoreMapValues(aValues, definition.getIntegerParameters().keySet(), oldValues);
-        ScriptedProducerNodeTool.restoreMapValues(aValues, definition.getStringParameters().keySet(), oldValues);
+        ScriptedProducerNodeTool.restoreMapValues(aProductionContext.getValueSet(), definition.getIntegerParameters().keySet(), oldValues);
+        ScriptedProducerNodeTool.restoreMapValues(aProductionContext.getValueSet(), definition.getStringParameters().keySet(), oldValues);
       }
     }
     catch (Exception e) {
-      aLogger.error("Scripted producer node " + definition.getName() + " caused an exception: " + e.getMessage());
+      aProductionContext.getLogger().error("Scripted producer node " + definition.getName() + " caused an exception", e);
     }
   }