Select Git revision
FormatResponseSettings.java
-
Robert Butora authoredRobert Butora authored
FormatResponseSettings.java 3.87 KiB
import java.util.logging.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.io.PrintWriter;
class FormatResponseSettings
{
private static final Logger LOGGER = Logger.getLogger("FormatResponseSettings");
public static class DBConn
{
private String uri;
private String schema;
private String user_name;
private String password;
public String uri() {return uri;}
public String schema() {return schema;}
public String userName() {return user_name;}
public String password() {return password;}
public String toString()
{
return uri + " schema[" + schema + "] " + user_name + " / " + password;
}
}
public static class ServiceUrls
{
private String cutoutUrl;
private String mergeUrl;
private String surveysAbsPathname;
private String respFormat;
public boolean cutoutUrlIsSet() { return (cutoutUrl != null) && cutoutUrl.trim().isEmpty(); }
public boolean mergeUrlIsSet() { return (mergeUrl != null) && mergeUrl.trim().isEmpty(); }
public boolean surveysAbsPathnameIsSet()
{ return (surveysAbsPathname != null) && surveysAbsPathname.trim().isEmpty(); }
public boolean responseFormatIsSet() { return (respFormat != null) && respFormat.trim().isEmpty(); }
public String cutoutUrl() {return cutoutUrl;}
public String mergeUrl() {return mergeUrl;}
public String surveysAbsPathname() {return surveysAbsPathname;}
public String responseFormat() {return respFormat;}
public String toString()
{
return cutoutUrl + " " + mergeUrl + " " + surveysAbsPathname + " " + respFormat;
}
}
public DBConn dbConn;
public ServiceUrls serviceUrls;
// will not start without config-file; no reasonable code-defaults can be invented
public static FormatResponseSettings getInstance(String settingsFileName)
{
try
{
InputStream ins = FormatResponseSettings.class.getClassLoader().getResourceAsStream(settingsFileName);
if (ins != null)
{
Properties properties = new Properties();
properties.load(ins);
DBConn dbConn = loadDBConn(properties);
ServiceUrls serviceUrls = loadServiceUrls(properties);
return new FormatResponseSettings(dbConn, serviceUrls);
}
else
{
throw new IllegalStateException(settingsFileName + " not found in classpath");
}
}
catch(IOException ex)
{
throw new IllegalStateException("Error while loading " + settingsFileName + " file", ex);
}
}
private FormatResponseSettings(DBConn dbConn, ServiceUrls serviceUrls)
{
this.dbConn = dbConn;
this.serviceUrls = serviceUrls;
}
private static DBConn loadDBConn(Properties properties)
{
DBConn dbConn = new FormatResponseSettings.DBConn();
dbConn.uri = properties.getProperty("db_uri","jdbc:postgresql://localhost:5432/vialactea").strip();
dbConn.schema = properties.getProperty("db_schema","datasets").strip();
dbConn.user_name = properties.getProperty("db_user_name","").strip();
dbConn.password = properties.getProperty("db_password","").strip();
return dbConn;
}
private static ServiceUrls loadServiceUrls(Properties properties)
{
ServiceUrls serviceUrls = new ServiceUrls();
serviceUrls.cutoutUrl = properties.getProperty("cutout_url","").strip();
serviceUrls.mergeUrl = properties.getProperty("merge_url","").strip();
serviceUrls.surveysAbsPathname = properties.getProperty("surveys_metadata_abs_pathname","/srv/surveys/surveys_metadata.csv").strip();
serviceUrls.respFormat = properties.getProperty("response_format","application/x-votable+xml").strip();
return serviceUrls;
}
}