Store db parameters in Config object, not in CFB object.
authorChris Jaekl <cejaekl@yahoo.com>
Sun, 13 Dec 2015 11:05:37 +0000 (20:05 +0900)
committerChris Jaekl <cejaekl@yahoo.com>
Sun, 13 Dec 2015 11:05:37 +0000 (20:05 +0900)
prod/net/jaekl/cfb/CFB.java
prod/net/jaekl/cfb/Config.java
test/net/jaekl/cfb/ConfigTest.java

index c02aa546aa0f7efe1bd29b36f81703127e3e6497..63271ec9cdd5c3036b2875ab68a59e8a53fce7b3 100644 (file)
@@ -48,13 +48,8 @@ public class CFB {
        
        // Command-line parameters
        File m_configFile;
-       String m_dbName; // db name
        File m_fbp;             // FindBugsProject file
        File m_fbDir;   // Directory where FindBugs is installed
-       String m_host;  // db host
-       int m_port;             // db port
-       String m_user;  // db user
-       String m_pass;  // db password
        String m_projName; // project (module) name
        String m_buildNum; // build number (version)
        boolean m_removeSchema; // purge DB schema
@@ -68,13 +63,8 @@ public class CFB {
                m_config = new Config();
                
                m_configFile = new File("config.properties");
-               m_dbName = "CFB";
                m_fbp    = null;
                m_fbDir  = null;
-               m_host = "localhost";
-               m_port = 5432;
-               m_pass = "";
-               m_user = "user";
                m_projName = null;
                m_buildNum = null;
                m_removeSchema = false;
@@ -108,13 +98,13 @@ public class CFB {
                                m_configFile = new File(line.getOptionValue("c"));
                        }
                        if (line.hasOption("d")) {
-                               m_dbName = line.getOptionValue("d");
+                               m_config.setDbName(line.getOptionValue("d"));
                        }
                        if (line.hasOption("f")) {
                                m_fbp = new File(line.getOptionValue("f"));
                        }
                        if (line.hasOption("h")) {
-                               m_host = line.getOptionValue("h");
+                               m_config.setDbHost(line.getOptionValue("h"));
                        }
                        if (line.hasOption("j")) {
                                m_projName = line.getOptionValue("j");
@@ -126,14 +116,14 @@ public class CFB {
                                m_output = new File(line.getOptionValue("o"));
                        }
                        if (line.hasOption("p")) {
-                               m_pass = line.getOptionValue("p");
+                               m_config.setDbPass(line.getOptionValue("p"));
                        }
                        m_removeSchema = line.hasOption("drop-tables");
                        if (line.hasOption("t")) {
-                               m_port = Integer.parseInt(line.getOptionValue("t"));
+                               m_config.setDbPort(Integer.parseInt(line.getOptionValue("t")));
                        }
                        if (line.hasOption("u")) {
-                               m_user = line.getOptionValue("u");
+                               m_config.setDbUser(line.getOptionValue("u"));
                        }
                } 
                catch (ParseException exc) {
@@ -196,7 +186,12 @@ public class CFB {
                MessageMap messageMap = new MessageMap();
                messageMap.load(findBugsDir, Locale.getDefault(Category.DISPLAY));
                
-               try (Connection con = m_driver.connect(m_host, m_port, m_dbName, m_user, m_pass)) {
+               try (Connection con = m_driver.connect(
+                                       m_config.getDbHost(), m_config.getDbPort(), 
+                                       m_config.getDbName(), 
+                                       m_config.getDbUser(), m_config.getDbPass())
+                       ) 
+               {
                        m_schema.setMessageMap(messageMap);
                        
                        if (m_removeSchema) {
@@ -218,7 +213,14 @@ public class CFB {
                        return;
                }
                
-               try (Connection con = m_driver.connect(m_host, m_port, m_dbName, m_user, m_pass)) {
+               try (
+                               Connection con = m_driver.connect(
+                                               m_config.getDbHost(), m_config.getDbPort(), 
+                                               m_config.getDbName(),
+                                               m_config.getDbUser(), m_config.getDbPass()
+                                       )
+                       )
+               {
                        DbStore store = new DbStore(con, m_driver, messageMap.getColl());
                        
                        store.put(analysis);
@@ -241,7 +243,12 @@ public class CFB {
 
        private void reportUnableToConnect(PrintWriter pw, SQLException exc) {
                String cannotConnectFormat = trans(CfbBundle.CANNOT_CONNECT);
-               String cannotConnect = MessageFormat.format(cannotConnectFormat, m_host, ""+m_port, m_dbName, m_user);
+               String cannotConnect = MessageFormat.format(cannotConnectFormat, 
+                                                                                       m_config.getDbHost(), 
+                                                                                       ""+m_config.getDbPort(), 
+                                                                                       m_config.getDbName(), 
+                                                                                       m_config.getDbUser()
+                                                                               );
                exc.printStackTrace(pw);
                SQLException next = exc.getNextException();
                while (null != next) {
index 8aa423419ef74ab08fee0c9764124d9215ba5b72..76151a7c64c3b0159ede64dddd5dc2cb26624422 100644 (file)
@@ -17,6 +17,11 @@ import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 
 public class Config {
+       private static final String DB_HOST = "db.host";
+       private static final String DB_NAME = "db.name";
+       private static final String DB_PASS = "db.pass";
+       private static final String DB_PORT = "db.port";
+       private static final String DB_USER = "db.user";
        private static final String FINDBUGS_HOME = "FindBugsHome";
        private static final String MAIL_FROM = "mail.from";
        private static final String MAIL_SMTP_HOST = "mail.smtp.host";
@@ -64,6 +69,18 @@ public class Config {
        public String getMailSmtpHost() { return m_mailSmtpHost; }
        public ArrayList<String> getNotify() { return new ArrayList<String>(m_notify); }
        
+       public String getDbHost() { return m_host; }
+       public int    getDbPort() { return m_port; }
+       public String getDbName() { return m_dbName; }
+       public String getDbUser() { return m_user; }
+       public String getDbPass() { return m_pass; }
+       
+       public void setDbHost(String value) { m_host = value; }
+       public void setDbPort(int value)    { m_port = value; }
+       public void setDbName(String value) { m_dbName = value; }
+       public void setDbUser(String value) { m_user = value; }
+       public void setDbPass(String value) { m_pass = value; }
+       
        public void readFile(File configProperties) throws IOException
        {
                Properties props = new Properties();
@@ -79,6 +96,21 @@ public class Config {
                        }
                }
                
+               if (props.containsKey(DB_HOST)) {
+                       m_host = props.getProperty(DB_HOST);
+               }
+               if (props.containsKey(DB_NAME)) {
+                       m_dbName = props.getProperty(DB_NAME);
+               }
+               if (props.containsKey(DB_PASS)) {
+                       m_pass = props.getProperty(DB_PASS);
+               }
+               if (props.containsKey(DB_PORT)) {
+                       m_port = Integer.parseInt(props.getProperty(DB_PORT));
+               }
+               if (props.containsKey(DB_USER)) {
+                       m_user = props.getProperty(DB_USER);
+               }
                if (props.containsKey(FINDBUGS_HOME)) {
                        m_fbDir = new File(props.getProperty(FINDBUGS_HOME));
                }
index e7ca44c87025517f864700db538861ec5b08ad5f..11bd5b2defe375fc3f887cc5f75a68515efa2e43 100644 (file)
@@ -15,6 +15,11 @@ import org.junit.Test;
 
 public class ConfigTest {
        private static final String CHRIS = "chris@localhost";
+       private static final String DB_HOST = "dbserver";
+       private static final int    DB_PORT = 1234;
+       private static final String DB_NAME = "Fred";
+       private static final String DB_PASS = "Pebbles";
+       private static final String DB_USER = "Wilma";
        private static final String HUDSON = "hudson@jenkins.org";
        private static final String MAIL_FROM = "findbugs@jaekl.net";
        private static final String MAIL_TO = CHRIS + "," + HUDSON;
@@ -28,7 +33,14 @@ public class ConfigTest {
                        + "\n"
                        + "; Mail server setup\n"
                        + "mail.smtp.host=" + LOCALHOST + "\n"
-                       + "mail.from=" + MAIL_FROM + "\n";
+                       + "mail.from=" + MAIL_FROM + "\n"
+                       + "\n"
+                       + "; Database\n"
+                       + "db.host=" + DB_HOST + "\n"
+                       + "db.port=" + DB_PORT + "\n"
+                       + "db.name=" + DB_NAME + "\n"
+                       + "db.user=" + DB_USER + "\n"
+                       + "db.pass=" + DB_PASS + "\n";
 
        @BeforeClass 
        public static void beforeClass() {
@@ -55,6 +67,12 @@ public class ConfigTest {
                List<String> notify = config.getNotify();
                assertTrue(notify.contains(CHRIS));
                assertTrue(notify.contains(HUDSON));
+               
+               assertEquals(DB_HOST, config.getDbHost());
+               assertEquals(DB_PORT, config.getDbPort());
+               assertEquals(DB_NAME, config.getDbName());
+               assertEquals(DB_USER, config.getDbUser());
+               assertEquals(DB_PASS, config.getDbPass());
        }
        
        @Test