X-Git-Url: http://jaekl.net/gitweb/?p=squelch.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fjaekl%2Fsquelch%2Fstmt%2FPSet.java;h=1431ab9267d141260c168856b8438d88cf6ae011;hp=a64edc2d926f648c12ce87e0fc74d59baedf0ca2;hb=f176f7537d01967bc909737d23e91074dbbacdb3;hpb=69dede75e1e9c8d15b017e26c419ab90cb60462a diff --git a/src/main/java/net/jaekl/squelch/stmt/PSet.java b/src/main/java/net/jaekl/squelch/stmt/PSet.java index a64edc2..1431ab9 100644 --- a/src/main/java/net/jaekl/squelch/stmt/PSet.java +++ b/src/main/java/net/jaekl/squelch/stmt/PSet.java @@ -7,10 +7,9 @@ import java.sql.SQLException; import java.util.Locale; import net.jaekl.squelch.db.DbDriver; +import net.jaekl.squelch.db.Setting; public class PSet extends Stmt { - private static final String SUPPRESS_NULLS = "suppress_nulls"; - @Override public boolean handles(String line) { if (null == line) { @@ -24,72 +23,40 @@ public class PSet extends Stmt { public int exec(DbDriver driver, Connection conn, PrintWriter pw, String line) throws IOException, SQLException { - String trimmed = line.substring(6).trim(); + String trimmed = line.substring(5).trim(); int equPos = trimmed.indexOf('='); if (equPos > 0) { return setValue(driver, pw, trimmed, equPos); } - else if (trimmed.length() > 0) { - return displayValue(driver, pw, trimmed); - } else { - // TODO: StringTable - pw.println("???"); - return 0; + return displayValue(driver, pw, trimmed); } } private int displayValue(DbDriver driver, PrintWriter pw, String trimmed) { - String lcName = trimmed.toLowerCase(Locale.CANADA); + Setting[] settings = driver.getSettings(); - if (SUPPRESS_NULLS.equals(lcName)) { - // TODO: StringTable - pw.println(SUPPRESS_NULLS + ": " + (driver.isSuppressNulls() ? "on" : "off")); - } - else { - // TODO: StringTable - pw.println("??? Unrecognized setting: \"" + trimmed + "\". Ignored."); + for (Setting setting : settings) { + String lcName = trimmed.toLowerCase(Locale.CANADA); + + if ("".equals(lcName) || setting.getName().equals(lcName)) { + // TODO: StringTable + pw.println(setting.getName() + ": " + (setting.getBoolean())); + } } return 0; } - private boolean parseBoolean(String value) - { - if (null == value) { - return false; - } - - String setting = value.trim().toLowerCase(Locale.CANADA); - - if (setting.equals("yes") || setting.equals("true") || setting.equals("on") || setting.equals("1")) { - return true; - } - if (setting.equals("no") || setting.equals("false") || setting.equals("off") || setting.equals("0")) { - return false; - } - - throw new IllegalArgumentException("UnrecognizedBooleanValue: \"" + value + "\""); - } - private int setValue(DbDriver driver, PrintWriter pw, String trimmed, int equPos) { String name = trimmed.substring(0, equPos).trim(); String value = trimmed.substring(equPos + 1).trim(); - String lcName = name.toLowerCase(Locale.CANADA); - - if (lcName.equals("suppress_nulls")) { - driver.setSuppressNulls(parseBoolean(value)); - } - else { - // TODO: Stringtable - pw.println("??? Unrecognized setting name \"" + name + "\" ignored."); - return 0; - } + driver.set(name, value); return 1; }