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) {
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;
}