package com.connsec.web;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.connsec.domain.LocalJsonUserInfoList;
import com.connsec.domain.UserInfo;
import com.connsec.domain.WSignApps;
import com.connsec.domain.WSignAppsList;
import com.connsec.util.JsonUtils;
import com.connsec.util.PathUtils;
public class WebSignConfig {
final static Logger logger = Logger.getLogger(WebSignConfig.class);
static Properties properties = new Properties();
HashMap<String,WSignApps> WSignAppsConfig;
HashMap<String,UserInfo> WSignUserInfosConfig;
private static WebSignConfig instance;
public static synchronized WebSignConfig getInstance() {
if (instance == null) {
instance = new WebSignConfig();
loadwsigns();
loadApps();
loadJsonUserInfos();
}
return instance;
}
public static void loadwsigns(){
InputStream in;
try {
logger.debug("wsign.properties : "+PathUtils.getInstance().getClassPath()+"wsign.properties");
in = new BufferedInputStream (new FileInputStream((PathUtils.getInstance().getClassPath()+"wsign.properties")));
properties.load(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void loadApps(){
try {
InputStream wsignappin = new BufferedInputStream (new FileInputStream((PathUtils.getInstance().getClassPath()+"wsignapps.json")));
byte[] data = new byte[1024];
int len = 0;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
while ((len = wsignappin.read(data)) != -1) {
outputStream.write(data, 0, len);
}
wsignappin.close();
String jsonString = new String(outputStream.toByteArray());
WSignAppsList wsignAppsList=JsonUtils.gson2Object(jsonString, WSignAppsList.class);
getInstance().WSignAppsConfig=new HashMap<String,WSignApps>();
for(WSignApps wsignApps : wsignAppsList.getWSignApps()){
getInstance().WSignAppsConfig.put(wsignApps.getTarget(), wsignApps);
}
logger.debug("WSignAppsList : \n"+jsonString);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void loadJsonUserInfos(){
try {
InputStream wsignuserin = new BufferedInputStream (new FileInputStream((PathUtils.getInstance().getClassPath()+"users.json")));
byte[] data = new byte[1024];
int len = 0;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
while ((len = wsignuserin.read(data)) != -1) {
outputStream.write(data, 0, len);
}
wsignuserin.close();
String jsonString = new String(outputStream.toByteArray());
LocalJsonUserInfoList localJsonUserInfoList=JsonUtils.gson2Object(jsonString, LocalJsonUserInfoList.class);
getInstance().WSignUserInfosConfig=new HashMap<String,UserInfo>();
for(UserInfo userInfo : localJsonUserInfoList.getLocalJsonUserInfo()){
getInstance().WSignUserInfosConfig.put(userInfo.getUsername(), userInfo);
}
logger.debug("LocalJsonUserInfoList : \n"+jsonString);
} catch (IOException e) {
e.printStackTrace();
}
}
public HashMap<String, WSignApps> getWSignAppsConfig() {
return WSignAppsConfig;
}
public HashMap<String, UserInfo> getWSignUserInfosConfig() {
return WSignUserInfosConfig;
}
public String get(String key){
return properties.getProperty(key, "");
}
}