package home;
|
import java.io.*;
|
import java.util.Properties;
|
|
/**
|
* 发卡机系统配置类
|
* 用于管理系统运行时的各项配置参数
|
*/
|
public class MachineConfig {
|
|
// 配置属性
|
private String machineId; // 发卡机编号
|
private String serverAddress; // 服务器地址
|
private int serverPort; // 服务器端口
|
private String adminPassword; // 管理员密码
|
private String fetchCardPassword; // 取卡密码
|
private String systemLanguage; // 系统语言
|
private String currentVersion; // 当前系统版本
|
private int totalSlots; // 卡槽总数
|
private String readCardMode; // 读卡号模式
|
private String defaultSerialPort; // 默认串口
|
private int pollingInterval; // 轮询时间(毫秒)
|
private int baudrate; // 波特率
|
|
// 配置文件路径
|
private static final String CONFIG_FILE = "config.properties";
|
|
// 默认值常量
|
private static final String DEFAULT_MACHINE_ID = "M001";
|
private static final String DEFAULT_SERVER_ADDRESS = "127.0.0.1";
|
private static final int DEFAULT_SERVER_PORT = 8080;
|
private static final String DEFAULT_ADMIN_PASSWORD = "admin123";
|
private static final String DEFAULT_FETCH_CARD_PASSWORD = "fetch123";
|
private static final String DEFAULT_SYSTEM_LANGUAGE = "zh-CN";
|
private static final String DEFAULT_CURRENT_VERSION = "1.0.0";
|
private static final int DEFAULT_TOTAL_SLOTS = 60;
|
private static final String DEFAULT_READ_CARD_MODE = "AUTO";
|
private static final String DEFAULT_SERIAL_PORT = "COM1";
|
private static final int DEFAULT_POLLING_INTERVAL = 100;
|
// 默认值常量 - 在现有常量后添加
|
private static final int DEFAULT_BAUDRATE = 57600;
|
|
/**
|
* 构造函数 - 使用默认值初始化
|
*/
|
public MachineConfig() {
|
loadDefaultValues();
|
}
|
|
/**
|
* 构造函数 - 从配置文件加载
|
* @param configFilePath 配置文件路径
|
*/
|
public MachineConfig(String configFilePath) {
|
loadFromFile(configFilePath);
|
}
|
|
/**
|
* 加载默认值
|
*/
|
private void loadDefaultValues() {
|
this.machineId = DEFAULT_MACHINE_ID;
|
this.serverAddress = DEFAULT_SERVER_ADDRESS;
|
this.serverPort = DEFAULT_SERVER_PORT;
|
this.adminPassword = DEFAULT_ADMIN_PASSWORD;
|
this.fetchCardPassword = DEFAULT_FETCH_CARD_PASSWORD;
|
this.systemLanguage = DEFAULT_SYSTEM_LANGUAGE;
|
this.currentVersion = DEFAULT_CURRENT_VERSION;
|
this.totalSlots = DEFAULT_TOTAL_SLOTS;
|
this.readCardMode = DEFAULT_READ_CARD_MODE;
|
this.defaultSerialPort = DEFAULT_SERIAL_PORT;
|
this.pollingInterval = DEFAULT_POLLING_INTERVAL;
|
this.baudrate = DEFAULT_BAUDRATE;
|
}
|
|
/**
|
* 从配置文件加载配置
|
* @param filePath 配置文件路径
|
*/
|
public void loadFromFile(String filePath) {
|
Properties props = new Properties();
|
try (InputStream input = new FileInputStream(filePath)) {
|
props.load(input);
|
|
// 读取配置值,如果不存在则使用默认值
|
this.machineId = props.getProperty("machine.id", DEFAULT_MACHINE_ID);
|
this.serverAddress = props.getProperty("server.address", DEFAULT_SERVER_ADDRESS);
|
this.serverPort = Integer.parseInt(props.getProperty("server.port", String.valueOf(DEFAULT_SERVER_PORT)));
|
this.adminPassword = props.getProperty("admin.password", DEFAULT_ADMIN_PASSWORD);
|
this.fetchCardPassword = props.getProperty("fetch.card.password", DEFAULT_FETCH_CARD_PASSWORD);
|
this.systemLanguage = props.getProperty("system.language", DEFAULT_SYSTEM_LANGUAGE);
|
this.currentVersion = props.getProperty("current.version", DEFAULT_CURRENT_VERSION);
|
this.totalSlots = Integer.parseInt(props.getProperty("total.slots", String.valueOf(DEFAULT_TOTAL_SLOTS)));
|
this.readCardMode = props.getProperty("read.card.mode", DEFAULT_READ_CARD_MODE);
|
this.defaultSerialPort = props.getProperty("default.serial.port", DEFAULT_SERIAL_PORT);
|
this.pollingInterval = Integer.parseInt(props.getProperty("polling.interval", String.valueOf(DEFAULT_POLLING_INTERVAL)));
|
this.baudrate = Integer.parseInt(props.getProperty("baudrate", String.valueOf(DEFAULT_BAUDRATE)));
|
|
} catch (IOException e) {
|
System.err.println("无法读取配置文件: " + filePath + ", 使用默认配置");
|
loadDefaultValues();
|
} catch (NumberFormatException e) {
|
System.err.println("配置文件中的数字格式错误: " + e.getMessage() + ", 使用默认值");
|
this.baudrate = DEFAULT_BAUDRATE;
|
}
|
}
|
|
/**
|
* 保存配置到文件
|
* @param filePath 配置文件路径
|
*/
|
public void saveToFile(String filePath) {
|
Properties props = new Properties();
|
|
// 设置配置属性
|
props.setProperty("machine.id", this.machineId);
|
props.setProperty("server.address", this.serverAddress);
|
props.setProperty("server.port", String.valueOf(this.serverPort));
|
props.setProperty("admin.password", this.adminPassword);
|
props.setProperty("fetch.card.password", this.fetchCardPassword);
|
props.setProperty("system.language", this.systemLanguage);
|
props.setProperty("current.version", this.currentVersion);
|
props.setProperty("total.slots", String.valueOf(this.totalSlots));
|
props.setProperty("read.card.mode", this.readCardMode);
|
props.setProperty("default.serial.port", this.defaultSerialPort);
|
props.setProperty("polling.interval", String.valueOf(this.pollingInterval));
|
props.setProperty("baudrate", String.valueOf(this.baudrate));
|
try (OutputStream output = new FileOutputStream(filePath)) {
|
props.store(output, "发卡机系统配置");
|
System.out.println("配置已保存到: " + filePath);
|
} catch (IOException e) {
|
System.err.println("无法保存配置文件: " + filePath + ", 错误: " + e.getMessage());
|
}
|
}
|
|
/**
|
* 保存配置到默认文件
|
*/
|
public void saveToFile() {
|
saveToFile(CONFIG_FILE);
|
}
|
|
// Getter 和 Setter 方法
|
|
public String getMachineId() {
|
return machineId;
|
}
|
|
public void setMachineId(String machineId) {
|
this.machineId = machineId;
|
}
|
|
public String getServerAddress() {
|
return serverAddress;
|
}
|
|
public void setServerAddress(String serverAddress) {
|
this.serverAddress = serverAddress;
|
}
|
|
public int getServerPort() {
|
return serverPort;
|
}
|
|
public void setServerPort(int serverPort) {
|
this.serverPort = serverPort;
|
}
|
|
public String getAdminPassword() {
|
return adminPassword;
|
}
|
|
public void setAdminPassword(String adminPassword) {
|
this.adminPassword = adminPassword;
|
}
|
|
public String getFetchCardPassword() {
|
return fetchCardPassword;
|
}
|
|
public void setFetchCardPassword(String fetchCardPassword) {
|
this.fetchCardPassword = fetchCardPassword;
|
}
|
|
public String getSystemLanguage() {
|
return systemLanguage;
|
}
|
|
public void setSystemLanguage(String systemLanguage) {
|
this.systemLanguage = systemLanguage;
|
}
|
|
public String getCurrentVersion() {
|
return currentVersion;
|
}
|
|
public void setCurrentVersion(String currentVersion) {
|
this.currentVersion = currentVersion;
|
}
|
|
public int getTotalSlots() {
|
return totalSlots;
|
}
|
|
public void setTotalSlots(int totalSlots) {
|
this.totalSlots = totalSlots;
|
}
|
|
public String getReadCardMode() {
|
return readCardMode;
|
}
|
|
public void setReadCardMode(String readCardMode) {
|
this.readCardMode = readCardMode;
|
}
|
|
public String getDefaultSerialPort() {
|
return defaultSerialPort;
|
}
|
|
public void setDefaultSerialPort(String defaultSerialPort) {
|
this.defaultSerialPort = defaultSerialPort;
|
}
|
|
public int getPollingInterval() {
|
return pollingInterval;
|
}
|
|
public void setPollingInterval(int pollingInterval) {
|
this.pollingInterval = pollingInterval;
|
}
|
// 添加Getter和Setter方法
|
public int getBaudrate() {
|
return baudrate;
|
}
|
|
public void setBaudrate(int baudrate) {
|
this.baudrate = baudrate;
|
}
|
|
@Override
|
public String toString() {
|
return "MachineConfig{" +
|
"machineId='" + machineId + '\'' +
|
", serverAddress='" + serverAddress + '\'' +
|
", serverPort=" + serverPort +
|
", adminPassword='" + "***" + '\'' + // 密码不直接显示
|
", fetchCardPassword='" + "***" + '\'' + // 密码不直接显示
|
", systemLanguage='" + systemLanguage + '\'' +
|
", currentVersion='" + currentVersion + '\'' +
|
", totalSlots=" + totalSlots +
|
", readCardMode='" + readCardMode + '\'' +
|
", defaultSerialPort='" + defaultSerialPort + '\'' +
|
", pollingInterval=" + pollingInterval + '\'' +
|
", baudrate=" + baudrate +
|
'}';
|
}
|
|
}
|