package org.buckit.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.logging.Logger;
public final class Properties extends java.util.Properties {
private static final long serialVersionUID = 1L;
private static Logger log = Logger.getLogger(Properties.class.getName());
public Properties() {
}
public Properties(String name) throws IOException {
load(new FileInputStream(name));
}
public Properties(File file) throws IOException {
load(new FileInputStream(file));
}
public Properties(InputStream inStream) throws IOException {
load(inStream);
}
public Properties(Reader reader) throws IOException {
load(reader);
}
public void load(String name) throws IOException {
load(new FileInputStream(name));
}
public void load(File file) throws IOException {
load(new FileInputStream(file));
}
@Override
public void load(InputStream inStream) throws IOException {
InputStreamReader reader = null;
try {
reader = new InputStreamReader(inStream, Charset.defaultCharset());
super.load(reader);
} finally {
inStream.close();
if (reader != null)
reader.close();
}
}
@Override
public void load(Reader reader) throws IOException {
try {
super.load(reader);
} finally {
reader.close();
}
}
@Override
public String getProperty(String key) {
String property = super.getProperty(key);
if (property == null) {
log.info("Properties: Missing property for key - " + key);
return null;
}
return property.trim();
}
@Override
public String getProperty(String key, String defaultValue) {
String property = super.getProperty(key, defaultValue);
if (property == null) {
log.warning("Properties: Missing defaultValue for key - " + key);
return null;
}
return property.trim();
}
public boolean getBool(String key,String defaultvalue){
return Boolean.parseBoolean(getProperty(key,defaultvalue));
}
public boolean getBool(String key,boolean defaultvalue) {
String val = getProperty(key);
return (val == null ? defaultvalue : Boolean.parseBoolean(val));
}
public int getInt(String key,String defaultvalue){
return Integer.parseInt(getProperty(key,defaultvalue));
}
public int getInt(String key,int defaultvalue) {
String val = getProperty(key);
return (val == null ? defaultvalue : Integer.parseInt(val));
}
public int getInt(String key,String defaultvalue,int min) {
return limit(getInt(key,defaultvalue),min);
}
public int getInt(String key,String defaultvalue,int min,int max){
return limit(getInt(key,defaultvalue),min,max);
}
public int getInt(String key,int defaultvalue,int min) {
return limit(getInt(key,defaultvalue),min);
}
public int getInt(String key,int defaultvalue,int min,int max) {
return limit(getInt(key,defaultvalue),min,max);
}
private static int limit(int val, int min) {
return (val < min ? min : val);
}
private static int limit(int val, int min, int max) {
return (val > max ? max : (val < min ? min : val));
}
private static float limit(float val,float min,float max) {
return (val > max ? max : (val < min ? min : val));
}
private static float limit(float val, float min) {
return (val < min ? min : val);
}
public float getFloat(String key,String defaultvalue){
return Float.parseFloat(getProperty(key,defaultvalue));
}
public float getFloat(String key,float defaultvalue) {
String val = getProperty(key);
return (val == null ? defaultvalue : Float.parseFloat(val));
}
public float getFloat(String key,String defaultvalue,float min) {
return limit(getFloat(key,defaultvalue),min);
}
public float getFloat(String key,String defaultvalue,float min,float max){
return limit(getFloat(key,defaultvalue),min,max);
}
public float getFloat(String key,float defaultvalue,float min) {
return limit(getFloat(key,defaultvalue),min);
}
public float getFloat(String key,float defaultvalue,float min,float max) {
return limit(getFloat(key,defaultvalue),min,max);
}
}