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.util.Collection;
\r
17 import java.util.Iterator;
\r
18 import java.util.Map;
\r
20 public class ChangeReportingProducerNode extends AbstractProducerNode {
\r
21 private String format;
\r
22 private String outputFile;
\r
23 private String basePath;
\r
24 private String baseUrl;
\r
25 private String exclusionList;
\r
27 public ChangeReportingProducerNode(String anOutputFile, String aFormat, String aBasePath, String aBaseUrl, String anExclusionList) {
\r
29 outputFile = anOutputFile;
\r
30 basePath = aBasePath;
\r
32 exclusionList = anExclusionList;
\r
35 public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) {
\r
37 File file = new File(ParameterExpander.expandExpression(aValueMap, outputFile));
\r
38 OutputStream stream = null;
\r
40 stream = new FileOutputStream(file);
\r
42 catch (FileNotFoundException e) {
\r
43 aLogger.error("Can't write open report file", e);
\r
49 Writer writer = new OutputStreamWriter(stream);
\r
51 String expandedBasePath = ParameterExpander.expandExpression(aValueMap, basePath);
\r
52 Collection changes = MirGlobal.getChangeEngine().getTracker().flushChanges(expandedBasePath);
\r
54 Iterator i = changes.iterator();
\r
55 while (i.hasNext()) {
\r
56 ChangeTracker.Change change = (ChangeTracker.Change) i.next();
\r
58 aValueMap.put("change", change);
\r
59 String line = ParameterExpander.expandExpression(aValueMap, format);
\r
63 catch (IOException e) {
\r
64 aLogger.error("Can't write to report file", e);
\r
74 catch (Throwable t) {
\r
75 aLogger.info("Can't close report file");
\r
83 catch (Throwable t) {
\r
84 aLogger.info("Can't close report file");
\r
88 catch (Throwable t) {
\r
89 aLogger.error("Error while writing change report file", t);
\r