📄 configmanager.java
字号:
/**
*
*/
package com.justin.config;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
import java.io.*;
import com.justin.log.*;
/**
* @author Justin
*
* 单例模式实现,此类用来读取并存放程序的配置信息
*/
public class ConfigManager {
//用户配置文件名
public static String USER_CONFIG_FILE = "config.properties";
//应用程序根目录
public static String APP_ROOT = System.getProperty("user.dir");
//存放接收数据的目录
public static String RECIEVED_DATA_DIR = "Recieved_Data_Dir";
//监测接收数据间隔
public static String DETECT_INTERVAL_RECEIVED = "Detect_Interval_Received";
//监测接收数据文件类型
public static String RECEIVED_FILE_TYPE = "Received_File_Type";
//发现后进行标记的文件类型
public static String MARKED_FILE_TYPE = "Found_File_Type";
//处理完成后的文件类型
public static String PROCESSED_FILE_TYPE = "Processed_File_Type";
//存放处理完后文件的目录
public static String PROCESSED_DATA_DIR = "Processed_Data_Dir";
//监测处理完文件的间隔
public static String DETECT_INTERVAL_PROCESSED = "Detect_Interval_Processed";
//接收到的文件的备份目录
public static String DATA_BACKUP_DIR = "Data_Backup_Dir";
//调试状态
public static String DEGUB_STATE = "Debug_State";
//存放默认配置
public static Properties defaultProp;
//存放用户配置
private static Properties userProp;
private static ConfigManager config = null;
public synchronized static ConfigManager getInstance() {
if (config == null) {
config = new ConfigManager();
}
return config;
}
private ConfigManager() {
try {
//设置默认属性
defaultProp = new Properties();
defaultProp.setProperty(RECIEVED_DATA_DIR, "C:\\RecievedData");
defaultProp.setProperty(DETECT_INTERVAL_RECEIVED, "5000");
defaultProp.setProperty(RECEIVED_FILE_TYPE, "xls");
defaultProp.setProperty(MARKED_FILE_TYPE, "found");
defaultProp.setProperty(PROCESSED_FILE_TYPE, "");
defaultProp.setProperty(PROCESSED_DATA_DIR, "C:\\ProcessedData");
defaultProp.setProperty(DETECT_INTERVAL_PROCESSED, "5000");
defaultProp.setProperty(DATA_BACKUP_DIR, "C:\\BackupData");
defaultProp.setProperty(DEGUB_STATE, "false");
//加载用户定制的配制文件
userProp = new Properties();
userProp.load(new FileInputStream(APP_ROOT + File.separator
+ USER_CONFIG_FILE));
//输出默认属性及配置文件的内容
userProp.list(System.out);
} catch (IOException ex) {
System.out.println("No Configuration File");
}
}
//获取默认Long型属性
public synchronized long getDefaultLongProp(String key) {
long value = 0;
if (defaultProp.containsKey(key)) {
value = Long.parseLong(defaultProp.getProperty(key));
}
return value;
}
//获取默认String型属性
public synchronized String getDefaultStringProp(String key) {
String value = "";
if (defaultProp.containsKey(key)) {
value = defaultProp.getProperty(key);
}
return value;
}
//获取默认boolean型属性
public synchronized boolean getDefaultBooleanProp(String key) {
boolean value = false;
if (defaultProp.containsKey(key)) {
value = Boolean.getBoolean(defaultProp.getProperty(key));
}
return value;
}
//获取String型属性
public synchronized String getStringProperty(String key) {
String value = "";
if (userProp.containsKey(key)) {
value = userProp.getProperty(key);
} else {
value = getDefaultStringProp(key);
}
return value;
}
//获取Long型属性
public synchronized long getLongProperty(String key) {
long value = 0;
if (userProp.containsKey(key)) {
try {
value = Long.parseLong(userProp.getProperty(key));
} catch (NumberFormatException e) {
value = getDefaultLongProp(key);
}
} else {
value = getDefaultLongProp(key);
}
return value;
}
//获取boolean型属性
public synchronized boolean getBooleanProperty(String key) {
boolean value = false;
if (userProp.containsKey(key)) {
try {
value = Boolean.getBoolean((userProp.getProperty(key)));
} catch (NumberFormatException e) {
value = getDefaultBooleanProp(key);
}
} else {
value = getDefaultBooleanProp(key);
}
return value;
}
//在用户界面显示所有的属性及值
public synchronized void list(LogServer log) {
log.showMessage("-- listing properties --");
Hashtable h = new Hashtable();
for (Enumeration e = userProp.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
h.put(key, (String) userProp.get(key));
}
for (Enumeration e = h.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
String val = (String) h.get(key);
if (val.length() > 40) {
val = val.substring(0, 37) + "...";
}
log.showMessage(key + "=" + val);
}
}
//在输出流中显示所有属性及值
public synchronized void list(PrintStream out) {
userProp.list(out);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -