Switched to just using "destinationIdentifier" for the output path for the ChangeTrac...
[mir.git] / source / mir / producer / GeneratingProducerNode.java
index 0920e64..6f6c8ca 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2002 The Mir-coders group
+ * Copyright (C) 2001-2006 The Mir-coders group
  *
  * This file is part of Mir.
  *
@@ -19,8 +19,6 @@
  *
  * In addition, as a special exception, The Mir-coders gives permission to link
  * the code of this program with  any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
  * and distribute linked combinations including the two.  You must obey the
  * GNU General Public License in all respects for all of the code used other than
  * the above mentioned libraries.  If you modify this file, you may extend this
  */
 package mir.producer;
 
-import java.util.HashMap;
-import java.util.Map;
-
+import mir.changetracker.ChangeTracker;
+import mir.changetracker.ChangeType;
 import mir.generator.Generator;
 import mir.generator.WriterEngine;
 import mir.log.LoggerWrapper;
 import mir.util.ParameterExpander;
+import mircoders.global.MirGlobal;
+
+import java.util.HashMap;
+import java.util.Map;
 
-public class GeneratingProducerNode implements ProducerNode {
+public class GeneratingProducerNode extends AbstractProducerNode {
   private String generatorExpression;
   private String destinationExpression;
   private String parametersExpression;
-  private Generator.GeneratorLibrary generatorLibrary;
+  private Generator.Library generatorLibrary;
   private WriterEngine writerEngine;
+  private Generator.Interceptor interceptor;
 
-  public GeneratingProducerNode(Generator.GeneratorLibrary aGeneratorLibrary, WriterEngine aWriterEngine, String aGenerator, String aDestination, String aParameters) {
+  public GeneratingProducerNode(Generator.Library aGeneratorLibrary, WriterEngine aWriterEngine, Generator.Interceptor anInterceptor, String aGenerator, String aDestination, String aParameters) {
     generatorExpression=aGenerator;
     destinationExpression=aDestination;
     parametersExpression=aParameters;
     generatorLibrary = aGeneratorLibrary;
     writerEngine = aWriterEngine;
+    interceptor = anInterceptor;
   }
 
-  public GeneratingProducerNode(Generator.GeneratorLibrary aGeneratorLibrary, WriterEngine aWriterEngine, String aGenerator, String aDestination) {
-    this(aGeneratorLibrary, aWriterEngine, aGenerator, aDestination, "");
+  public GeneratingProducerNode(Generator.Library aGeneratorLibrary, WriterEngine aWriterEngine, Generator.Interceptor anInterceptor, String aGenerator, String aDestination) {
+    this(aGeneratorLibrary, aWriterEngine, anInterceptor, aGenerator, aDestination, "");
   }
 
   public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure {
@@ -81,18 +84,20 @@ public class GeneratingProducerNode implements ProducerNode {
         destinationIdentifier = ParameterExpander.expandExpression(aValueMap, destinationExpression);
         generatorIdentifier = ParameterExpander.expandExpression(aValueMap, generatorExpression);
         parameters = ParameterExpander.expandExpression(aValueMap, parametersExpression);
-
+        //String relPathExpression = "/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml";
+        //String relativePath = ParameterExpander.expandExpression(aValueMap, relPathExpression);
         mirMap.put("generator", generatorIdentifier);
         mirMap.put("destination", destinationIdentifier);
         mirMap.put("parameters", parameters);
 
         writer = writerEngine.openWriter(destinationIdentifier, parameters);
-        generator = generatorLibrary.makeGenerator(generatorIdentifier);
+        generator = generatorLibrary.makeGenerator(generatorIdentifier, interceptor);
         generator.generate(writer, aValueMap, aLogger);
         writerEngine.closeWriter(writer);
 
         endTime = System.currentTimeMillis();
-        aLogger.info("Generated " + generatorIdentifier + " into " + destinationIdentifier + " [" + parameters + "] in " + (endTime - startTime) + " ms");
+        aLogger.debug("Generated " + generatorIdentifier + " into " + destinationIdentifier + " [" + parameters + "] in " + (endTime - startTime) + " ms");
+        reportChange(destinationIdentifier);
       }
       finally {
         mirMap.put("generator", oldGenerator);
@@ -101,8 +106,12 @@ public class GeneratingProducerNode implements ProducerNode {
       }
     }
     catch (Throwable t) {
-      aLogger.error("  error while generating: " + t.getClass().getName() + ": " + t.getMessage());
-      t.printStackTrace(aLogger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
+      aLogger.error("  error while generating", t);
     }
   }
+
+       private void reportChange(String aPath) {
+               ChangeTracker changeTracker = MirGlobal.getChangeEngine().getTracker();
+               changeTracker.addChange(aPath, ChangeType.MODIFICATION);
+       }
 }
\ No newline at end of file