Fix and fine-tune suppress_nulls.
[squelch.git] / src / main / java / net / jaekl / squelch / stmt / PSet.java
1 package net.jaekl.squelch.stmt;
2
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;
8
9 import net.jaekl.squelch.db.DbDriver;
10 import net.jaekl.squelch.db.Setting;
11
12 public class PSet extends Stmt {
13         @Override
14         public boolean handles(String line) {
15                 if (null == line) {
16                         return false;
17                 }
18                 
19                 return line.toLowerCase(Locale.CANADA).startsWith("\\pset ");
20         }
21
22         @Override
23         public int exec(DbDriver driver, Connection conn, PrintWriter pw, String line) 
24                         throws IOException, SQLException 
25         {
26                 String trimmed = line.substring(5).trim();
27
28                 int equPos = trimmed.indexOf('=');
29                 
30                 if (equPos > 0) {
31                         return setValue(driver, pw, trimmed, equPos);
32                 }
33                 else {
34                         return displayValue(driver, pw, trimmed);
35                 }
36         }
37         
38         private int displayValue(DbDriver driver, PrintWriter pw, String trimmed)
39         {
40                 Setting[] settings = driver.getSettings();
41                 
42                 for (Setting setting : settings) {
43                         String lcName = trimmed.toLowerCase(Locale.CANADA);
44                         
45                         if ("".equals(lcName) || setting.getName().equals(lcName)) {
46                                 // TODO:  StringTable
47                                 pw.println(setting.getName() + ":  " + (setting.getBoolean()));
48                         }
49                 }
50                 
51                 return 0;
52         }
53         
54         private int setValue(DbDriver driver, PrintWriter pw, String trimmed, int equPos)
55         {
56                 String name = trimmed.substring(0, equPos).trim();
57                 String value = trimmed.substring(equPos + 1).trim();
58                 
59                 driver.set(name, value);
60                 
61                 return 1;
62         }
63 }