1 package net.jaekl.squelch.stmt;
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import java.sql.Connection;
6 import java.sql.SQLException;
7 import java.util.Locale;
9 import net.jaekl.squelch.db.DbDriver;
11 public class PSet extends Stmt {
12 private static final String SUPPRESS_NULLS = "suppress_nulls";
15 public boolean handles(String line) {
20 return line.toLowerCase(Locale.CANADA).startsWith("\\pset ");
24 public int exec(DbDriver driver, Connection conn, PrintWriter pw, String line)
25 throws IOException, SQLException
27 String trimmed = line.substring(6).trim();
29 int equPos = trimmed.indexOf('=');
32 return setValue(driver, pw, trimmed, equPos);
34 else if (trimmed.length() > 0) {
35 return displayValue(driver, pw, trimmed);
44 private int displayValue(DbDriver driver, PrintWriter pw, String trimmed)
46 String lcName = trimmed.toLowerCase(Locale.CANADA);
48 if (SUPPRESS_NULLS.equals(lcName)) {
50 pw.println(SUPPRESS_NULLS + ": " + (driver.isSuppressNulls() ? "on" : "off"));
54 pw.println("??? Unrecognized setting: \"" + trimmed + "\". Ignored.");
60 private boolean parseBoolean(String value)
66 String setting = value.trim().toLowerCase(Locale.CANADA);
68 if (setting.equals("yes") || setting.equals("true") || setting.equals("on") || setting.equals("1")) {
71 if (setting.equals("no") || setting.equals("false") || setting.equals("off") || setting.equals("0")) {
75 throw new IllegalArgumentException("UnrecognizedBooleanValue: \"" + value + "\"");
78 private int setValue(DbDriver driver, PrintWriter pw, String trimmed, int equPos)
80 String name = trimmed.substring(0, equPos).trim();
81 String value = trimmed.substring(equPos + 1).trim();
83 String lcName = name.toLowerCase(Locale.CANADA);
85 if (lcName.equals("suppress_nulls")) {
86 driver.setSuppressNulls(parseBoolean(value));
90 pw.println("??? Unrecognized setting name \"" + name + "\" ignored.");