package com.handivote;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DataConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
public class Settings {
static Properties prop = new Properties();
static String smsDirectory;
static boolean voidOnRepeat;
static String countrycode;
static Integer numQuestions;
static List<Integer> qOpts;
static boolean sql;
static DB db;
static boolean logVotes;
static String votes_valid_filename;
static String votes_bad_filename;
static String results_filename;
public static void load() {
DataConfiguration config;
try {
config = new DataConfiguration(new PropertiesConfiguration(
"config.properties"));
smsDirectory = config.getString("smsdirectory");
countrycode = config.getString("countrycode");
voidOnRepeat = config.getBoolean("voidOnRepeatVote", false);
sql = config.getBoolean("connectToSQL", false);
logVotes = config.getBoolean("logVotes", false);
if(logVotes){
votes_valid_filename = config.getString("votes_valid_filename", "votes_valid.txt");
votes_bad_filename = config.getString("votes_bad_filename", "votes_bad.txt");
}
if (sql) {
db = new DB();
numQuestions = DB.qID.size();
qOpts = new ArrayList<Integer>(numQuestions);
for(int j = 0; j < numQuestions; j++){
qOpts.add(0);
}
for(int i = 0; i < numQuestions;i++){
int qid = DB.qID.get(i);
ArrayList<Integer> opts = DB.optID.get(qid);
qOpts.set(i, opts.size());
}
}
else {
qOpts = config.getList(Integer.class, "questionOptions");
if (qOpts.size() > 5) {
throw new ConfigurationException(
"Too many questions; maximum 5 supported");
}
for(int i:qOpts){
if(i > 5 || i < 2){
throw new ConfigurationException(
"Questions must have between 2 and 5 options");
}
}
numQuestions = qOpts.size();
}
} catch (ConfigurationException e) {
e.printStackTrace();
System.exit(-1);
}
}
}