package net.sf.colossus.webserver;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* WebServer specific version of the Options / cf file handling.
*
* TODO: why did I make a copy, instead of using the normal Options class?
*
* @author Clemens Katzer
*/
public class WebServerOptions
{
private static final Logger LOGGER = Logger
.getLogger(WebServerOptions.class.getName());
private final Properties props = new Properties();
private final String filename;
public WebServerOptions(String filename)
{
this.filename = filename;
}
public void loadOptions()
{
try
{
FileInputStream in = new FileInputStream(filename);
props.load(in);
}
catch (IOException e)
{
LOGGER.log(Level.SEVERE, "Couldn't read options from " + filename,
e);
return;
}
}
public void setOption(String optname, String value)
{
props.setProperty(optname, value);
}
public void setOption(String optname, boolean value)
{
setOption(optname, String.valueOf(value));
}
public void setOption(String optname, int value)
{
setOption(optname, String.valueOf(value));
}
public String getStringOption(String optname)
{
String value = props.getProperty(optname);
return value;
}
public boolean getOption(String optname)
{
String value = getStringOption(optname);
return (value != null && value.equals("true"));
}
/** Return -1 if the option's value has not been set. */
public int getIntOption(String optname)
{
String buf = getStringOption(optname);
int value = -1;
try
{
value = Integer.parseInt(buf);
}
catch (NumberFormatException ex)
{
value = -1;
}
return value;
}
public int getIntOptionNoUndef(String optname)
{
int val = getIntOption(optname);
if (val == -1)
{
LOGGER.log(Level.SEVERE, "Invalid or not set value for " + optname
+ " from WebServer config file " + filename);
System.exit(1);
}
return val;
}
public void removeOption(String optname)
{
props.remove(optname);
}
}