further fixes to the change reporting framework
[mir.git] / source / mircoders / producer / ChangeReportingProducerNode.java
index 623bf89..c271a13 100644 (file)
@@ -4,32 +4,31 @@ import mir.changetracker.ChangeTracker;
 import mir.log.LoggerWrapper;\r
 import mir.producer.AbstractProducerNode;\r
 import mir.util.ParameterExpander;\r
+import mir.util.StringRoutines;\r
 import mircoders.global.MirGlobal;\r
 \r
 import java.io.File;\r
 import java.io.FileNotFoundException;\r
 import java.io.FileOutputStream;\r
-import java.io.IOException;\r
 import java.io.OutputStream;\r
 import java.io.OutputStreamWriter;\r
-import java.io.Writer;\r
 import java.io.PrintWriter;\r
 import java.util.Collection;\r
+import java.util.HashMap;\r
 import java.util.Iterator;\r
+import java.util.List;\r
 import java.util.Map;\r
 \r
 public class ChangeReportingProducerNode extends AbstractProducerNode {\r
   private String format;\r
   private String outputFile;\r
   private String basePath;\r
-  private String baseUrl;\r
   private String exclusionList;\r
 \r
-  public ChangeReportingProducerNode(String anOutputFile, String aFormat, String aBasePath, String aBaseUrl, String anExclusionList) {\r
+  public ChangeReportingProducerNode(String anOutputFile, String aFormat, String aBasePath, String anExclusionList) {\r
     format = aFormat;\r
     outputFile = anOutputFile;\r
     basePath = aBasePath;\r
-    baseUrl = aBaseUrl;\r
     exclusionList = anExclusionList;\r
   }\r
 \r
@@ -50,13 +49,28 @@ public class ChangeReportingProducerNode extends AbstractProducerNode {
         PrintWriter writer = new PrintWriter(new OutputStreamWriter(stream));\r
         try {\r
           String expandedBasePath = ParameterExpander.expandExpression(aValueMap, basePath);\r
-          Collection changes = MirGlobal.getChangeEngine().getTracker().flushChanges(expandedBasePath);\r
+\r
+          List excludedPaths = null;\r
+          if (exclusionList != null) {\r
+            String expandedExclusionList = ParameterExpander.expandExpression(aValueMap, exclusionList);\r
+            excludedPaths = StringRoutines.separateString(expandedExclusionList, ",");\r
+          }\r
+\r
+          Collection changes = MirGlobal.getChangeEngine().getTracker().flushChanges(expandedBasePath, excludedPaths);\r
 \r
           Iterator i = changes.iterator();\r
           while (i.hasNext()) {\r
             ChangeTracker.Change change = (ChangeTracker.Change) i.next();\r
 \r
-            aValueMap.put("change", change);\r
+            Map changeMap = new HashMap();\r
+\r
+            // the absolute path of the change needs to be transformed into a path relative\r
+            //    to base\r
+            changeMap.put("path", change.getPath().substring(expandedBasePath.length()));\r
+            changeMap.put("type", change.getType().getName());\r
+            changeMap.put("date", change.getDate());\r
+\r
+            aValueMap.put("change", changeMap);\r
             String line = ParameterExpander.expandExpression(aValueMap, format);\r
             writer.println(line);\r
           }\r