package baseStation;
|
|
import java.io.FileInputStream;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.OutputStreamWriter;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Properties;
|
|
/**
|
* 基站信息类,负责加载/更新 basestation.properties。
|
*/
|
public class BaseStation {
|
private static final String PROPERTIES_FILE = "basestation.properties";
|
|
private String deviceId;
|
private String installationCoordinates;
|
private String iotSimCardNumber;
|
private String deviceActivationTime;
|
private String dataUpdateTime;
|
|
public BaseStation() {
|
setDefaults();
|
}
|
|
/**
|
* 从 basestation.properties 加载数据,失败时回落为默认值 -1。
|
*/
|
public void load() {
|
Properties properties = new Properties();
|
try (FileInputStream input = new FileInputStream(PROPERTIES_FILE)) {
|
properties.load(input);
|
this.deviceId = properties.getProperty("deviceId", "-1");
|
this.installationCoordinates = properties.getProperty("installationCoordinates", "-1");
|
this.iotSimCardNumber = properties.getProperty("iotSimCardNumber", "-1");
|
this.deviceActivationTime = properties.getProperty("deviceActivationTime", "-1");
|
this.dataUpdateTime = properties.getProperty("dataUpdateTime", "-1");
|
} catch (IOException ex) {
|
System.err.println("无法读取 basestation.properties: " + ex.getMessage());
|
setDefaults();
|
}
|
}
|
|
private void setDefaults() {
|
this.deviceId = "-1";
|
this.installationCoordinates = "-1";
|
this.iotSimCardNumber = "-1";
|
this.deviceActivationTime = "-1";
|
this.dataUpdateTime = "-1";
|
}
|
|
/**
|
* 根据设备编号更新属性并持久化。
|
*/
|
public void updateByDeviceId(String newDeviceId,
|
String newInstallationCoordinates,
|
String newIotSimCardNumber,
|
String newActivationTime,
|
String newUpdateTime) {
|
if (newDeviceId == null || newDeviceId.trim().isEmpty()) {
|
throw new IllegalArgumentException("设备编号不能为空");
|
}
|
this.deviceId = newDeviceId.trim();
|
this.installationCoordinates = valueOrDefault(newInstallationCoordinates);
|
this.iotSimCardNumber = valueOrDefault(newIotSimCardNumber);
|
this.deviceActivationTime = valueOrDefault(newActivationTime);
|
this.dataUpdateTime = valueOrDefault(newUpdateTime);
|
save();
|
}
|
|
private String valueOrDefault(String value) {
|
if (value == null || value.trim().isEmpty()) {
|
return "-1";
|
}
|
return value.trim();
|
}
|
|
/**
|
* 更新基站安装坐标并立即持久化到 basestation.properties。
|
*/
|
public void updateInstallationCoordinates(String newInstallationCoordinates) {
|
this.installationCoordinates = valueOrDefault(newInstallationCoordinates);
|
save();
|
}
|
|
private void save() {
|
Properties properties = new Properties();
|
properties.setProperty("deviceId", deviceId);
|
properties.setProperty("installationCoordinates", installationCoordinates);
|
properties.setProperty("iotSimCardNumber", iotSimCardNumber);
|
properties.setProperty("deviceActivationTime", deviceActivationTime);
|
properties.setProperty("dataUpdateTime", dataUpdateTime);
|
|
try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE);
|
OutputStreamWriter writer = new OutputStreamWriter(output, StandardCharsets.UTF_8)) {
|
properties.store(writer, "Base station properties");
|
} catch (IOException ex) {
|
System.err.println("无法保存 basestation.properties: " + ex.getMessage());
|
}
|
}
|
|
public String getDeviceId() {
|
return deviceId;
|
}
|
|
public String getInstallationCoordinates() {
|
return installationCoordinates;
|
}
|
|
public String getIotSimCardNumber() {
|
return iotSimCardNumber;
|
}
|
|
public String getDeviceActivationTime() {
|
return deviceActivationTime;
|
}
|
|
public String getDataUpdateTime() {
|
return dataUpdateTime;
|
}
|
|
@Override
|
public String toString() {
|
return "BaseStation{" +
|
"deviceId='" + deviceId + '\'' +
|
", installationCoordinates='" + installationCoordinates + '\'' +
|
", iotSimCardNumber='" + iotSimCardNumber + '\'' +
|
", deviceActivationTime='" + deviceActivationTime + '\'' +
|
", dataUpdateTime='" + dataUpdateTime + '\'' +
|
'}';
|
}
|
}
|