X-Git-Url: http://jaekl.net/gitweb/?p=squelch.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fjaekl%2Fsquelch%2Fdb%2FSetting.java;fp=src%2Fmain%2Fjava%2Fnet%2Fjaekl%2Fsquelch%2Fdb%2FSetting.java;h=85934ceea9274657803f7c4ceffd8ef6ef9f41c6;hp=0000000000000000000000000000000000000000;hb=f176f7537d01967bc909737d23e91074dbbacdb3;hpb=69dede75e1e9c8d15b017e26c419ab90cb60462a diff --git a/src/main/java/net/jaekl/squelch/db/Setting.java b/src/main/java/net/jaekl/squelch/db/Setting.java new file mode 100644 index 0000000..85934ce --- /dev/null +++ b/src/main/java/net/jaekl/squelch/db/Setting.java @@ -0,0 +1,61 @@ +package net.jaekl.squelch.db; + +import java.util.Locale; + +public class Setting { + private String m_name; + private Class m_type; + private Object m_value; + + public Setting(String name, Class type, Object defaultValue) + { + m_name = name; + m_type = type; + m_value = defaultValue; + } + + public String getName() { return m_name; } + + public boolean getBoolean() + { + assert(Boolean.class == m_type); + + if (m_value instanceof Boolean) { + return ((Boolean)m_value).booleanValue(); + } + return false; + } + + public void set(Object value) + { + if (Boolean.class == m_type) { + if (value instanceof String) { + m_value = parseBoolean((String)value); + } + else if (value instanceof Boolean) { + m_value = value; + } + } + else { + throw new IllegalArgumentException("This type not yet supported."); + } + } + + 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 + "\""); + } +}