X-Git-Url: http://jaekl.net/gitweb/?p=squelch.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fjaekl%2Fsquelch%2Fdb%2FDbDriver.java;h=cf116de5b8f3ba39c9c73cfb6553ed7d6a320592;hp=72472de3c2a0992825c535f6183ccb41afb0fc50;hb=f176f7537d01967bc909737d23e91074dbbacdb3;hpb=69dede75e1e9c8d15b017e26c419ab90cb60462a diff --git a/src/main/java/net/jaekl/squelch/db/DbDriver.java b/src/main/java/net/jaekl/squelch/db/DbDriver.java index 72472de..cf116de 100644 --- a/src/main/java/net/jaekl/squelch/db/DbDriver.java +++ b/src/main/java/net/jaekl/squelch/db/DbDriver.java @@ -3,10 +3,14 @@ package net.jaekl.squelch.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.HashMap; import java.util.Locale; public abstract class DbDriver { - private boolean m_suppressNulls = false; + // Well-known setting names + public static final String SUPPRESS_NULLS = "suppress_nulls"; + + private HashMap m_settings; // Returns true iff. this DbDriver knows how to connect to the given JDBC URL abstract public boolean handles(String jdbcUrl); @@ -14,13 +18,38 @@ public abstract class DbDriver { // Execute line as a statement of this type abstract String getJdbcDriverClassName(); + DbDriver() { + m_settings = new HashMap(); + m_settings.put(SUPPRESS_NULLS, new Setting(SUPPRESS_NULLS, Boolean.class, Boolean.valueOf(false))); + } + // ------------------- // Getters and setters + public Setting[] getSettings() + { + return m_settings.values().toArray(new Setting[m_settings.size()]); + } - public boolean isSuppressNulls() { return m_suppressNulls; } - public void setSuppressNulls(boolean value) { m_suppressNulls = value; } - - + public boolean isSet(String name) + { + Setting setting = m_settings.get(name); + if (null != setting) { + return setting.getBoolean(); + } + return false; + } + public void set(String name, Object value) + { + String lcName = name.toLowerCase(Locale.CANADA); + Setting setting = m_settings.get(lcName); + if (null != setting) { + setting.set(value); + } + else { + throw new IllegalArgumentException("Setting \"" + name + "\" not found."); + } + } + // Open a new Connection to the database. Note that the caller must close() this at some point. public Connection connect(String jdbcUrl, String userName, String password) throws ClassNotFoundException, SQLException {