1 package mircoders.producer;
\r
3 import mir.producer.AbstractProducerNode;
\r
4 import mir.producer.ProducerFailure;
\r
5 import mir.log.LoggerWrapper;
\r
6 import mir.util.ParameterExpander;
\r
7 import mir.util.ExceptionRoutines;
\r
8 import mir.changetracker.ChangeTracker;
\r
10 import java.util.Map;
\r
11 import java.util.Vector;
\r
12 import java.util.Hashtable;
\r
13 import java.util.ArrayList;
\r
14 import java.util.Enumeration;
\r
15 import java.util.Collections;
\r
16 import java.util.Iterator;
\r
17 import java.util.Collection;
\r
18 import java.io.File;
\r
19 import java.io.OutputStream;
\r
20 import java.io.FileOutputStream;
\r
21 import java.io.Writer;
\r
22 import java.io.OutputStreamWriter;
\r
23 import java.io.FileNotFoundException;
\r
24 import java.io.IOException;
\r
26 import org.apache.xmlrpc.XmlRpcClient;
\r
27 import mircoders.global.MirGlobal;
\r
29 public class ChangeReportingProducerNode extends AbstractProducerNode {
\r
30 private String format;
\r
31 private String outputFile;
\r
32 private String basePath;
\r
33 private String baseUrl;
\r
34 private String exclusionList;
\r
36 public ChangeReportingProducerNode(String aFormat, String anOutputFile, String aBasePath, String aBaseUrl, String anExclusionList) {
\r
38 outputFile = anOutputFile;
\r
39 basePath = aBasePath;
\r
41 exclusionList = anExclusionList;
\r
44 public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) {
\r
46 File file = new File(ParameterExpander.expandExpression(aValueMap, outputFile));
\r
47 OutputStream stream = null;
\r
49 stream = new FileOutputStream(file);
\r
51 catch (FileNotFoundException e) {
\r
52 aLogger.error("Can't write open report file", e);
\r
58 Writer writer = new OutputStreamWriter(stream);
\r
60 String expandedBasePath = ParameterExpander.expandExpression(aValueMap, outputFile);
\r
61 Collection changes = MirGlobal.getChangeEngine().getTracker().flushChanges(expandedBasePath);
\r
63 Iterator i = changes.iterator();
\r
64 while (i.hasNext()) {
\r
65 ChangeTracker.Change change = (ChangeTracker.Change) i.next();
\r
67 aValueMap.put("change", change);
\r
68 String line = ParameterExpander.expandExpression(aValueMap, format);
\r
72 catch (IOException e) {
\r
73 aLogger.error("Can't write to report file", e);
\r
83 catch (Throwable t) {
\r
84 aLogger.info("Can't close report file");
\r
92 catch (Throwable t) {
\r
93 aLogger.info("Can't close report file");
\r
97 catch (Throwable t) {
\r
98 aLogger.error("Error while writing change report file", t);
\r