Updated SmartConfig
Added support for file/directory property types. Removed some extraneous logging checks.
This commit is contained in:
parent
2d7e8e67ca
commit
7b3be90fe1
@ -1,6 +1,6 @@
|
|||||||
#Fri, 21 Jan 2011 13:00:05 -0600
|
#Fri, 21 Jan 2011 13:58:02 -0600
|
||||||
name=jdb-util
|
name=jdb-util
|
||||||
version=1.0
|
version=1.1
|
||||||
lib.local=true
|
lib.local=true
|
||||||
|
|
||||||
build.number=4
|
build.number=1
|
||||||
|
@ -18,9 +18,14 @@ public class SmartConfig {
|
|||||||
catch (Exception e) { log.warn("Cannot open config file.", e) }
|
catch (Exception e) { log.warn("Cannot open config file.", e) }
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartConfig(String filename) { this(new File(filename)) }
|
public SmartConfig(String filename) {
|
||||||
|
this(new File(filename))
|
||||||
|
|
||||||
public save() {
|
log.trace("Loading configuration from {}",
|
||||||
|
new File(filename).canonicalPath)
|
||||||
|
}
|
||||||
|
public save() {
|
||||||
|
log.trace("Saving changes.")
|
||||||
try {file.withOutputStream { os -> this.@props.store(os, "") } }
|
try {file.withOutputStream { os -> this.@props.store(os, "") } }
|
||||||
catch (Exception e) { log.warn("Cannot save config file.", e) }
|
catch (Exception e) { log.warn("Cannot save config file.", e) }
|
||||||
}
|
}
|
||||||
@ -29,34 +34,52 @@ public class SmartConfig {
|
|||||||
|
|
||||||
def getProperty(String name, Object defVal) {
|
def getProperty(String name, Object defVal) {
|
||||||
|
|
||||||
if (log.isTraceEnabled()) log.trace("Looking up $name")
|
log.trace("Looking up {}", name)
|
||||||
|
|
||||||
def val = props.getProperty(name)
|
def val = props.getProperty(name)
|
||||||
|
|
||||||
if (val == null) {
|
if (val == null) {
|
||||||
if (log.isTraceEnabled())
|
log.trace("Doesn't exists, setting with given default")
|
||||||
log.trace("Doesn't exists, setting with given default")
|
|
||||||
|
|
||||||
val = defVal
|
val = defVal
|
||||||
props.setProperty(name, defVal.toString())
|
this.setProperty(name, defVal)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// boolean
|
// boolean
|
||||||
if (name ==~ /.*\?/) {
|
if (name ==~ /.*\?/) {
|
||||||
if (log.isTraceEnabled()) log.trace("Interpreting as a boolean")
|
log.trace("Interpreting as a boolean")
|
||||||
|
|
||||||
if (val.toLowerCase() =~ /(false|no|off|f|n)/)
|
if (val.toLowerCase() =~ /(false|no|off|f|n)/)
|
||||||
val = false
|
val = false
|
||||||
else val = (Boolean) val
|
else val = (Boolean) val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// directory or file
|
||||||
|
else if (name ==~ /.*([dD]irectory|[dD]ir|[fF]ile)/) {
|
||||||
|
log.trace("Interpreting as a directory.")
|
||||||
|
|
||||||
|
val = new File(val)
|
||||||
|
} else {
|
||||||
|
log.trace("No known interpretation, casting to type of " +
|
||||||
|
"default argument.")
|
||||||
|
|
||||||
|
val = val.asType(defVal.class)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return val.asType(defVal.class)
|
return val
|
||||||
}
|
}
|
||||||
|
|
||||||
void setProperty(String name, def value) {
|
void setProperty(String name, def value) {
|
||||||
props."$name" = value.toString()
|
log.trace("Setting property: {}", name)
|
||||||
|
|
||||||
|
if (name ==~ /.*([dD]irectory|[dD]ir|[fF]ile)/) {
|
||||||
|
log.trace("Interpreting as a file/directory.")
|
||||||
|
props."$name" = value.canonicalPath
|
||||||
|
} else {
|
||||||
|
props."$name" = value.toString()
|
||||||
|
}
|
||||||
save()
|
save()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user