X-Git-Url: http://jaekl.net/gitweb/?p=cfb.git;a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2FCFB.java;h=33a1ca04b23312d3e19b05efbc8e8b5cfc2f1546;hp=94ef08f8a996cecf7ce681574b95bc3fd1ad62f9;hb=f829b23412e21d657d63a81897794e833ef162ab;hpb=1b35159cf2ff8d86b037f7d442f7b1f4c8e3b2f3 diff --git a/prod/net/jaekl/cfb/CFB.java b/prod/net/jaekl/cfb/CFB.java index 94ef08f..33a1ca0 100644 --- a/prod/net/jaekl/cfb/CFB.java +++ b/prod/net/jaekl/cfb/CFB.java @@ -21,6 +21,7 @@ import net.jaekl.cfb.analyze.Analyzer; import net.jaekl.cfb.analyze.Delta; import net.jaekl.cfb.analyze.HtmlReport; import net.jaekl.cfb.analyze.MessageMap; +import net.jaekl.cfb.analyze.Notifier; import net.jaekl.cfb.db.CfbSchema; import net.jaekl.cfb.db.TypeMismatchException; import net.jaekl.cfb.db.driver.DbDriver; @@ -41,7 +42,10 @@ public class CFB { CfbBundle m_bundle; Locale m_locale; + Config m_config; + // Command-line parameters + File m_configFile; String m_dbName; // db name File m_fbp; // FindBugsProject file File m_fbDir; // Directory where FindBugs is installed @@ -58,7 +62,9 @@ public class CFB { m_schema = new CfbSchema(m_driver); m_locale = locale; m_bundle = CfbBundle.getInst(m_locale); + m_config = new Config(); + m_configFile = new File("config.properties"); m_dbName = "CFB"; m_fbp = null; m_fbDir = null; @@ -74,6 +80,7 @@ public class CFB { Options createOptions() { Options opt = new Options(); + opt.addOption("c", "config", true, "Properties configuration file"); opt.addOption("d", "dbname", true, "DB name"); opt.addOption(null, "drop-tables", false, "Remove database schema (drop all data)"); opt.addOption("f", "fbp", true, "FindBugsProject file"); @@ -92,6 +99,9 @@ public class CFB { try { CommandLine line = new GnuParser().parse(opt, args); + if (line.hasOption("c")) { + m_configFile = new File(line.getOptionValue("c")); + } if (line.hasOption("d")) { m_dbName = line.getOptionValue("d"); } @@ -158,13 +168,20 @@ public class CFB { if (null != findBugsDir) { m_fbDir = new File(findBugsDir); } - } + } + + void readConfig() throws IOException { + if (null != m_configFile) { + m_config.readFile(m_configFile); + } + } void doMain(PrintWriter pw, String[] args) throws SQLException, IOException, XmlParseException, SAXException, TypeMismatchException { initArgs(); // read environment and system properties if ( ! parseArgs(pw, args) ) { return; } + readConfig(); File findBugsDir = getFindBugsDir(); File workDir = new File("."); @@ -200,8 +217,11 @@ public class CFB { Analysis prior = store.getPrior(analysis); Delta delta = new Delta(prior, analysis); - HtmlReport report = new HtmlReport(m_bundle, messageMap.getColl()); - report.write(m_output, delta); + HtmlReport report = new HtmlReport(m_bundle, messageMap.getColl(), delta); + report.write(m_output); + + Notifier notifier = new Notifier(m_bundle, m_config); + notifier.sendEmailIfNeeded(pw, report); } catch (SQLException exc) { reportUnableToConnect(pw, exc);