/**
TwitStreet - Twitter Stock Market Game
Copyright (C) 2012 Engin Guller (bisanthe@gmail.com), Cagdas Ozek (cagdasozek@gmail.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
**/
package com.twitstreet.config;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import org.apache.log4j.Logger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.twitstreet.db.base.DBConstants;
import com.twitstreet.db.base.DBMgr;
import com.twitstreet.db.data.Config;
@Singleton
public class ConfigMgrImpl implements ConfigMgr{
private static Logger logger = Logger.getLogger(ConfigMgrImpl.class);
@Inject DBMgr dbMgr;
private HashMap<String, Config> configMap = new HashMap<String, Config>();
int serverCount;
int serverId;
boolean dev = true;
String mailRecipients[];
String mailDealer;
String mailDealerPassword;
@Inject public ConfigMgrImpl(DBMgr dbMgr) {
this.dbMgr = dbMgr;
}
public void load(){
Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
try {
connection = dbMgr.getConnection();
stmt = connection.createStatement();
rs = stmt.executeQuery("select id, parm, val from config");
while(rs.next()){
Config config = new Config();
config.setId(rs.getLong(Config.ID));
config.setParm(rs.getString(Config.PARM));
config.setVal(rs.getString(Config.VAL));
configMap.put(config.getParm(), config);
}
if(isDev()){
setServerCount(1);
}
logger.debug(DBConstants.QUERY_EXECUTION_SUCC + stmt.toString());
logger.debug("Config manager initialized successfully.");
} catch (SQLException e) {
logger.error(DBConstants.QUERY_EXECUTION_FAIL + stmt == null ? "Query is null" : stmt.toString(), e);
logger.error("Config manager initialization failed.");
}
finally{
dbMgr.closeResources(connection, stmt, rs);
}
}
public String get(String parm){
Config config = configMap.get(parm);
return config == null ? Config.NONE : config.getVal();
}
private void setConfig(String parm, Config config){
configMap.put(parm,config);
}
private Config getConfig(String parm){
return configMap.get(parm);
}
public String getConsumerKey(){
return get(ConfigMgr.CONSUMER_KEY);
}
public String getConsumerSecret(){
return get(ConfigMgr.CONSUMER_SECRET);
}
@Override
public int getMinFollower() {
return Integer.parseInt(get(ConfigMgr.MIN_FOLLOWER));
}
@Override
public String getGaAccount() {
return get(ConfigMgr.GA_ACCOUNT);
}
@Override
public double getInitialMoney() {
return Double.parseDouble(get(ConfigMgr.INITIAL_MONEY));
}
@Override
public int getComissionTreshold() {
return Integer.parseInt(get(ConfigMgr.COMISSION_TRESHOLD));
}
@Override
public int getServerCount() {
return Integer.valueOf(get(ConfigMgr.SERVER_COUNT));
}
@Override
public void setServerCount(int serverCount) {
Config config = getConfig(SERVER_COUNT);
if(config != null){
config.setVal(String.valueOf(serverCount));
}
else{
config = new Config();
config.setParm(SERVER_COUNT);
config.setVal(ConfigMgr.DEFAULT_SERVER_COUNT);
}
setConfig(SERVER_COUNT, config);
}
@Override
public String getAnnouncerConsumerKey() {
return get(ConfigMgr.ANNOUNCER_CONSUMER_KEY);
}
@Override
public String getAnnouncerConsumerSecret() {
return get(ConfigMgr.ANNOUNCER_CONSUMER_SECRET);
}
@Override
public String getAnnouncerAccessToken() {
return get(ConfigMgr.ANNOUNCER_ACCESS_TOKEN);
}
@Override
public String getAnnouncerAccessSecret() {
return get(ConfigMgr.ANNOUNCER_ACCESS_SECRET);
}
@Override
public boolean isDev() {
return dev;
}
@Override
public void setDev(boolean dev) {
this.dev = dev;
}
@Override
public String getMailDealer() {
return mailDealer;
}
@Override
public String getMailDealerPassword() {
return mailDealerPassword;
}
@Override
public String[] getMailRecipients() {
return mailRecipients;
}
@Override
public void setMailRecipients(String[] mailRecipients) {
this.mailRecipients = mailRecipients;
}
@Override
public void setMailDealer(String mailDealer) {
this.mailDealer = mailDealer;
}
@Override
public void setMailDealerPassword(String mailDealerPassword) {
this.mailDealerPassword = mailDealerPassword;
}
}