5 changed files with 155 additions and 17 deletions
@ -0,0 +1,110 @@ |
|||
package com.techsor.datacenter.business.entity.ioserver; |
|||
|
|||
import java.util.regex.Matcher; |
|||
import java.util.regex.Pattern; |
|||
|
|||
public class IoserverDeviceIdEntity { |
|||
// 定义正则表达式模式
|
|||
private static final String DEVICE_ID_PATTERN = "^([A-Z]+)_([A-Z]+)_(\\d{4})_(\\w+)_(\\d+)(?:_S)?$"; |
|||
private static final Pattern PATTERN = Pattern.compile(DEVICE_ID_PATTERN); |
|||
|
|||
/** |
|||
* 解析设备ID格式 |
|||
* 格式: [物件Initial]_[设备分类]_[BA Device Instance]_[ObjectType, Instance]_[Property][_S(sub, 备份用)] |
|||
*/ |
|||
public static DeviceInfo parseDeviceId(String deviceId) { |
|||
if (deviceId == null) { |
|||
return null; |
|||
} |
|||
|
|||
Matcher matcher = PATTERN.matcher(deviceId); |
|||
if (!matcher.matches()) { |
|||
return null; |
|||
} |
|||
|
|||
String[] groups = new String[matcher.groupCount()]; |
|||
for (int i = 0; i < groups.length; i++) { |
|||
groups[i] = matcher.group(i + 1); |
|||
} |
|||
|
|||
DeviceInfo info = new DeviceInfo(); |
|||
info.setObjectInitial(groups[0]); |
|||
info.setDeviceCategory(groups[1]); |
|||
info.setBaDeviceInstance(groups[2]); |
|||
info.setObjectTypeInstance(groups[3]); |
|||
info.setProperty(groups[4]); |
|||
info.setHasBackup(deviceId.endsWith("_S")); |
|||
|
|||
return info; |
|||
} |
|||
|
|||
/** |
|||
* 验证设备ID格式是否正确 |
|||
*/ |
|||
public static boolean isValidFormat(String deviceId) { |
|||
if (deviceId == null) { |
|||
return false; |
|||
} |
|||
return PATTERN.matcher(deviceId).matches(); |
|||
} |
|||
|
|||
/** |
|||
* 批量验证和解析设备ID |
|||
*/ |
|||
public static void validateAndParse(String[] deviceIds) { |
|||
System.out.println("设备ID格式验证结果:"); |
|||
System.out.println("=" + "=".repeat(80)); |
|||
|
|||
for (String deviceId : deviceIds) { |
|||
DeviceInfo info = parseDeviceId(deviceId); |
|||
if (info != null) { |
|||
System.out.printf("✓ %-30s - 格式正确\n", deviceId); |
|||
System.out.println(" - 物件Initial: " + info.getObjectInitial()); |
|||
System.out.println(" - 设备分类: " + info.getDeviceCategory()); |
|||
System.out.println(" - BA Device Instance: " + info.getBaDeviceInstance()); |
|||
System.out.println(" - ObjectType, Instance: " + info.getObjectTypeInstance()); |
|||
System.out.println(" - Property: " + info.getProperty()); |
|||
System.out.println(" - 是否备份: " + (info.isHasBackup() ? "是" : "否")); |
|||
System.out.println(); |
|||
} else { |
|||
System.out.printf("✗ %-30s - 格式错误\n", deviceId); |
|||
System.out.println(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 设备信息类
|
|||
public static class DeviceInfo { |
|||
private String objectInitial; |
|||
private String deviceCategory; |
|||
private String baDeviceInstance; |
|||
private String objectTypeInstance; |
|||
private String property; |
|||
private boolean hasBackup; |
|||
|
|||
// Getters and Setters
|
|||
public String getObjectInitial() { return objectInitial; } |
|||
public void setObjectInitial(String objectInitial) { this.objectInitial = objectInitial; } |
|||
|
|||
public String getDeviceCategory() { return deviceCategory; } |
|||
public void setDeviceCategory(String deviceCategory) { this.deviceCategory = deviceCategory; } |
|||
|
|||
public String getBaDeviceInstance() { return baDeviceInstance; } |
|||
public void setBaDeviceInstance(String baDeviceInstance) { this.baDeviceInstance = baDeviceInstance; } |
|||
|
|||
public String getObjectTypeInstance() { return objectTypeInstance; } |
|||
public void setObjectTypeInstance(String objectTypeInstance) { this.objectTypeInstance = objectTypeInstance; } |
|||
|
|||
public String getProperty() { return property; } |
|||
public void setProperty(String property) { this.property = property; } |
|||
|
|||
public boolean isHasBackup() { return hasBackup; } |
|||
public void setHasBackup(boolean hasBackup) { this.hasBackup = hasBackup; } |
|||
|
|||
@Override |
|||
public String toString() { |
|||
return String.format("DeviceInfo{物件Initial='%s', 设备分类='%s', BA Device Instance='%s', ObjectType_Instance='%s', Property='%s', 备份=%s}", |
|||
objectInitial, deviceCategory, baDeviceInstance, objectTypeInstance, property, hasBackup); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue