1 package mircoders.producer;
\r
3 import mir.changetracker.ChangeTracker;
\r
4 import mir.log.LoggerWrapper;
\r
5 import mir.producer.AbstractProducerNode;
\r
6 import mir.util.ParameterExpander;
\r
7 import mircoders.global.MirGlobal;
\r
10 import java.io.FileNotFoundException;
\r
11 import java.io.FileOutputStream;
\r
12 import java.io.IOException;
\r
13 import java.io.OutputStream;
\r
14 import java.io.OutputStreamWriter;
\r
15 import java.io.Writer;
\r
16 import java.io.PrintWriter;
\r
17 import java.util.Collection;
\r
18 import java.util.Iterator;
\r
19 import java.util.Map;
\r
21 public class ChangeReportingProducerNode extends AbstractProducerNode {
\r
22 private String format;
\r
23 private String outputFile;
\r
24 private String basePath;
\r
25 private String baseUrl;
\r
26 private String exclusionList;
\r
28 public ChangeReportingProducerNode(String anOutputFile, String aFormat, String aBasePath, String aBaseUrl, String anExclusionList) {
\r
30 outputFile = anOutputFile;
\r
31 basePath = aBasePath;
\r
33 exclusionList = anExclusionList;
\r
36 public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) {
\r
38 File file = new File(ParameterExpander.expandExpression(aValueMap, outputFile));
\r
39 OutputStream stream = null;
\r
41 stream = new FileOutputStream(file, true);
\r
43 catch (FileNotFoundException e) {
\r
44 aLogger.error("Can't write open report file", e);
\r
50 PrintWriter writer = new PrintWriter(new OutputStreamWriter(stream));
\r
52 String expandedBasePath = ParameterExpander.expandExpression(aValueMap, basePath);
\r
53 Collection changes = MirGlobal.getChangeEngine().getTracker().flushChanges(expandedBasePath);
\r
55 Iterator i = changes.iterator();
\r
56 while (i.hasNext()) {
\r
57 ChangeTracker.Change change = (ChangeTracker.Change) i.next();
\r
59 aValueMap.put("change", change);
\r
60 String line = ParameterExpander.expandExpression(aValueMap, format);
\r
61 writer.println(line);
\r
68 catch (Throwable t) {
\r
69 aLogger.info("Can't close report file");
\r
77 catch (Throwable t) {
\r
78 aLogger.info("Can't close report file");
\r
82 catch (Throwable t) {
\r
83 aLogger.error("Error while writing change report file", t);
\r