新增mms接卸
This commit is contained in:
@@ -7,18 +7,22 @@
|
||||
当前真实保留的子模块有:
|
||||
|
||||
- `activate-tool`
|
||||
- `mms-mapping`
|
||||
- `wave-tool`
|
||||
|
||||
因此,`tools` 现阶段仍然是聚合模块,但当前已实际承载激活工具和波形查看工具两个子模块。
|
||||
因此,`tools` 现阶段仍然是聚合模块,但当前已实际承载激活工具、ICD/MMS 映射工具和波形查看工具三个子模块。
|
||||
|
||||
## 当前结构
|
||||
|
||||
```text
|
||||
tools/
|
||||
├── activate-tool/
|
||||
├── mms-mapping/
|
||||
└── wave-tool/
|
||||
```
|
||||
|
||||
其中 `tools/mms-mapping` 当前 Maven `artifactId` 为 `mms-mapping`。
|
||||
|
||||
## activate-tool 的职责
|
||||
|
||||
`activate-tool` 当前提供的能力主要围绕设备授权与许可证:
|
||||
@@ -42,6 +46,24 @@ tools/
|
||||
|
||||
从接口层看,当前主要围绕 `/wave/*` 路径提供能力。
|
||||
|
||||
## mms-mapping 的职责
|
||||
|
||||
`mms-mapping` 当前提供的能力主要围绕 ICD 文件解析与 MMS 映射数据生成:
|
||||
|
||||
- 解析 ICD / SCL 文件结构
|
||||
- 校验索引选择与绑定关系
|
||||
- 生成映射任务结果与文档数据
|
||||
|
||||
从接口层看,当前主要围绕 `/api/mms-mapping` 路径提供能力。
|
||||
|
||||
## mms-mapping 配置
|
||||
|
||||
`mms-mapping` 当前支持以下配置项:
|
||||
|
||||
- `icd.mapping.default-template-path`:默认模板资源路径,默认值为 `template/DefaultCfg.txt`
|
||||
- `icd.mapping.default-author`:请求未传作者时使用的默认作者,默认值为 `system`
|
||||
- `icd.mapping.default-output-dir`:请求开启落盘但未指定目录时使用的默认输出目录,默认值为空字符串(即当前工作目录)
|
||||
|
||||
## 模块定位
|
||||
|
||||
当前 `activate-tool` 更适合作为平台级基础能力模块,而不是业务检测模块的一部分。
|
||||
@@ -54,7 +76,7 @@ tools/
|
||||
|
||||
## 依赖关系
|
||||
|
||||
`tools/activate-tool` 与 `tools/wave-tool` 当前主要依赖:
|
||||
`tools/activate-tool`、`tools/mms-mapping` 与 `tools/wave-tool` 当前主要依赖:
|
||||
|
||||
- `com.njcn:njcn-common`
|
||||
- `com.njcn:spingboot2.3.12`
|
||||
@@ -71,4 +93,3 @@ tools/
|
||||
- 同步更新 `tools/pom.xml`
|
||||
- 同步更新本说明文档
|
||||
- 在 `docs` 下补充模块边界与职责说明
|
||||
|
||||
|
||||
122
tools/mms-mapping/pom.xml
Normal file
122
tools/mms-mapping/pom.xml
Normal file
@@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>com.njcn.gather</groupId>
|
||||
<artifactId>tools</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mms-mapping</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>njcn-common</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>spingboot2.3.12</artifactId>
|
||||
<version>2.3.12</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>1.2.83</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.12.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jakarta.xml.bind</groupId>
|
||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
||||
<version>2.3.3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jaxb</groupId>
|
||||
<artifactId>jaxb-runtime</artifactId>
|
||||
<version>2.3.3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-scratchpad</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.docx4j</groupId>
|
||||
<artifactId>docx4j</artifactId>
|
||||
<version>6.1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-net</groupId>
|
||||
<artifactId>commons-net</artifactId>
|
||||
<version>3.10.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>mms-mapping</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,135 @@
|
||||
package com.njcn.gather.icd.mapping.application;
|
||||
|
||||
import com.njcn.gather.icd.mapping.application.command.GenerateFromIcdCommand;
|
||||
import com.njcn.gather.icd.mapping.application.result.GenerateMappingResult;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexAnalysis;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.ValidationResult;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.IcdDocument;
|
||||
import com.njcn.gather.icd.mapping.domain.model.mapping.MappingDocument;
|
||||
import com.njcn.gather.icd.mapping.domain.model.template.DefaultTemplate;
|
||||
import com.njcn.gather.icd.mapping.domain.service.DefaultTemplateLoader;
|
||||
import com.njcn.gather.icd.mapping.domain.service.IcdParserService;
|
||||
import com.njcn.gather.icd.mapping.domain.service.IndexAnalysisService;
|
||||
import com.njcn.gather.icd.mapping.domain.service.IndexValidationService;
|
||||
import com.njcn.gather.icd.mapping.domain.service.MappingGenerationService;
|
||||
import com.njcn.gather.icd.mapping.enums.GenerateStatus;
|
||||
import com.njcn.gather.icd.mapping.infrastructure.serializer.MappingDocumentSerializer;
|
||||
import com.njcn.gather.icd.mapping.infrastructure.storage.FileStorageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 生成任务应用服务。
|
||||
*
|
||||
* 完整流程:
|
||||
* 1. 解析 ICD;
|
||||
* 2. 读取 DefaultCfg.txt;
|
||||
* 3. 按业务分组生成候选项;
|
||||
* 4. 如果用户未提交绑定关系,返回 NEED_INDEX_SELECTION;
|
||||
* 5. 如果提交了绑定关系,先做合法性校验;
|
||||
* 6. 校验通过后生成正式 MappingDocument;
|
||||
* 7. 序列化并按需落盘。
|
||||
*/
|
||||
@Service
|
||||
public class MappingTaskAppService {
|
||||
|
||||
private final IcdParserService icdParserService;
|
||||
private final DefaultTemplateLoader defaultTemplateLoader;
|
||||
private final IndexAnalysisService indexAnalysisService;
|
||||
private final IndexValidationService indexValidationService;
|
||||
private final MappingGenerationService mappingGenerationService;
|
||||
private final MappingDocumentSerializer mappingDocumentSerializer;
|
||||
private final FileStorageService fileStorageService;
|
||||
|
||||
public MappingTaskAppService(IcdParserService icdParserService,
|
||||
DefaultTemplateLoader defaultTemplateLoader,
|
||||
IndexAnalysisService indexAnalysisService,
|
||||
IndexValidationService indexValidationService,
|
||||
MappingGenerationService mappingGenerationService,
|
||||
MappingDocumentSerializer mappingDocumentSerializer,
|
||||
FileStorageService fileStorageService) {
|
||||
this.icdParserService = icdParserService;
|
||||
this.defaultTemplateLoader = defaultTemplateLoader;
|
||||
this.indexAnalysisService = indexAnalysisService;
|
||||
this.indexValidationService = indexValidationService;
|
||||
this.mappingGenerationService = mappingGenerationService;
|
||||
this.mappingDocumentSerializer = mappingDocumentSerializer;
|
||||
this.fileStorageService = fileStorageService;
|
||||
}
|
||||
|
||||
public GenerateMappingResult generateFromIcd(GenerateFromIcdCommand command) {
|
||||
GenerateMappingResult result = new GenerateMappingResult();
|
||||
try {
|
||||
// 1. 解析 ICD
|
||||
IcdDocument icdDocument = icdParserService.parse(command.getFileBytes(), command.getFileName());
|
||||
result.setIedName(icdDocument.getIedName());
|
||||
result.setLdInst(icdDocument.getLdInst());
|
||||
|
||||
// 2. 加载 DefaultCfg.txt
|
||||
DefaultTemplate template = defaultTemplateLoader.load();
|
||||
result.getProblems().addAll(template.verify());
|
||||
|
||||
// 3. 分析索引候选
|
||||
IndexAnalysis indexAnalysis = indexAnalysisService.analyze(icdDocument, template);
|
||||
result.setIndexAnalysis(indexAnalysis);
|
||||
result.getProblems().addAll(indexAnalysis.getProblems());
|
||||
|
||||
// 4. 如果没有提交任何绑定关系,则直接返回待匹配项
|
||||
if (command.getIndexSelection() == null || command.getIndexSelection().isEmpty()) {
|
||||
result.setStatus(GenerateStatus.NEED_INDEX_SELECTION);
|
||||
result.setMessage("索引配置缺失或不合法,请根据候选信息完成标签与数字索引的绑定后重新提交");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 5. 校验用户提交的绑定关系
|
||||
ValidationResult validationResult = indexValidationService.validate(indexAnalysis, command.getIndexSelection());
|
||||
if (!validationResult.isValid()) {
|
||||
result.setStatus(GenerateStatus.NEED_INDEX_SELECTION);
|
||||
result.setMessage("索引配置缺失或不合法,请根据候选信息完成标签与数字索引的绑定后重新提交");
|
||||
result.getProblems().addAll(validationResult.getProblems());
|
||||
return result;
|
||||
}
|
||||
|
||||
// 6. 生成正式映射结构
|
||||
MappingDocument mappingDocument = mappingGenerationService.generate(
|
||||
icdDocument,
|
||||
template,
|
||||
indexAnalysis,
|
||||
command.getIndexSelection(),
|
||||
command.getVersion(),
|
||||
command.getAuthor()
|
||||
);
|
||||
result.setMappingDocument(mappingDocument);
|
||||
|
||||
// 7. 序列化输出
|
||||
String mappingJson = command.isPrettyJson()
|
||||
? mappingDocumentSerializer.toPrettyJson(mappingDocument)
|
||||
: mappingDocumentSerializer.toCompactJson(mappingDocument);
|
||||
result.setMappingJson(mappingJson);
|
||||
|
||||
if (command.isSaveToDisk()) {
|
||||
String fileName = buildOutputFileName(icdDocument, command.isPrettyJson());
|
||||
String savedPath = fileStorageService.save(fileName, mappingJson, command.getOutputDir());
|
||||
result.setSavedPath(savedPath);
|
||||
}
|
||||
|
||||
result.setStatus(GenerateStatus.SUCCESS);
|
||||
result.setMessage("映射生成成功");
|
||||
return result;
|
||||
} catch (Exception ex) {
|
||||
result.setStatus(GenerateStatus.FAILED);
|
||||
result.setMessage("映射生成失败:" + ex.getMessage());
|
||||
result.getProblems().add(ex.getMessage());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private String buildOutputFileName(IcdDocument icdDocument, boolean prettyJson) {
|
||||
String baseName = icdDocument.getIedName() == null ? "mapping" : icdDocument.getIedName();
|
||||
// 落盘文件名只保留安全字符,避免 IED 名称携带路径分隔符导致越界写入。
|
||||
String safeBaseName = baseName.replaceAll("[\\\\/:*?\"<>|]+", "_").trim();
|
||||
if (safeBaseName.isEmpty()) {
|
||||
safeBaseName = "mapping";
|
||||
}
|
||||
return safeBaseName + (prettyJson ? "-mapping-pretty.json" : "-mapping.json");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package com.njcn.gather.icd.mapping.application.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生成命令对象。
|
||||
*
|
||||
* 说明:
|
||||
* controller 层不要把 MultipartFile 和 request 直接传进领域服务;
|
||||
* 统一转成 command,便于应用层做流程编排。
|
||||
*/
|
||||
public class GenerateFromIcdCommand {
|
||||
|
||||
/** 原始文件名。 */
|
||||
private String fileName;
|
||||
|
||||
/** ICD 文件字节数组。 */
|
||||
private byte[] fileBytes;
|
||||
|
||||
/** 输出版本号。 */
|
||||
private String version;
|
||||
|
||||
/** 作者。 */
|
||||
private String author;
|
||||
|
||||
/** 是否保存到磁盘。 */
|
||||
private boolean saveToDisk;
|
||||
|
||||
/** 是否输出美化 JSON。 */
|
||||
private boolean prettyJson;
|
||||
|
||||
/** 输出目录。 */
|
||||
private String outputDir;
|
||||
|
||||
/** 用户上送的索引选择结果。 */
|
||||
private List<IndexSelectionGroupCommand> indexSelection = new ArrayList<IndexSelectionGroupCommand>();
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public void setFileName(String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public byte[] getFileBytes() {
|
||||
return fileBytes;
|
||||
}
|
||||
|
||||
public void setFileBytes(byte[] fileBytes) {
|
||||
this.fileBytes = fileBytes;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public boolean isSaveToDisk() {
|
||||
return saveToDisk;
|
||||
}
|
||||
|
||||
public void setSaveToDisk(boolean saveToDisk) {
|
||||
this.saveToDisk = saveToDisk;
|
||||
}
|
||||
|
||||
public boolean isPrettyJson() {
|
||||
return prettyJson;
|
||||
}
|
||||
|
||||
public void setPrettyJson(boolean prettyJson) {
|
||||
this.prettyJson = prettyJson;
|
||||
}
|
||||
|
||||
public String getOutputDir() {
|
||||
return outputDir;
|
||||
}
|
||||
|
||||
public void setOutputDir(String outputDir) {
|
||||
this.outputDir = outputDir;
|
||||
}
|
||||
|
||||
public List<IndexSelectionGroupCommand> getIndexSelection() {
|
||||
return indexSelection;
|
||||
}
|
||||
|
||||
public void setIndexSelection(List<IndexSelectionGroupCommand> indexSelection) {
|
||||
this.indexSelection = indexSelection;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.njcn.gather.icd.mapping.application.command;
|
||||
|
||||
/**
|
||||
* 应用层单条绑定命令。
|
||||
*/
|
||||
public class IndexBindingCommand {
|
||||
|
||||
/** 报告名。 */
|
||||
private String reportName;
|
||||
|
||||
/** 数据集名。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 标签。 */
|
||||
private String label;
|
||||
|
||||
/** 绑定到的 lnInst 数字。 */
|
||||
private String lnInst;
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
public void setLnInst(String lnInst) {
|
||||
this.lnInst = lnInst;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.gather.icd.mapping.application.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 应用层分组选择命令。
|
||||
*/
|
||||
public class IndexSelectionGroupCommand {
|
||||
|
||||
/** 分组唯一键。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 分组中文描述。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 当前分组下的多条绑定关系。 */
|
||||
private List<IndexBindingCommand> bindings = new ArrayList<IndexBindingCommand>();
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public List<IndexBindingCommand> getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
public void setBindings(List<IndexBindingCommand> bindings) {
|
||||
this.bindings = bindings;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.njcn.gather.icd.mapping.application.result;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexAnalysis;
|
||||
import com.njcn.gather.icd.mapping.domain.model.mapping.MappingDocument;
|
||||
import com.njcn.gather.icd.mapping.enums.GenerateStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 应用层返回对象。统一封装成功、需要选择索引、失败三类结果。
|
||||
*/
|
||||
public class GenerateMappingResult {
|
||||
private GenerateStatus status;
|
||||
private String message;
|
||||
private String iedName;
|
||||
private String ldInst;
|
||||
private IndexAnalysis indexAnalysis;
|
||||
private MappingDocument mappingDocument;
|
||||
private String mappingJson;
|
||||
private String savedPath;
|
||||
private List<String> problems = new ArrayList<String>();
|
||||
|
||||
public GenerateStatus getStatus() { return status; }
|
||||
public void setStatus(GenerateStatus status) { this.status = status; }
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
public String getIedName() { return iedName; }
|
||||
public void setIedName(String iedName) { this.iedName = iedName; }
|
||||
public String getLdInst() { return ldInst; }
|
||||
public void setLdInst(String ldInst) { this.ldInst = ldInst; }
|
||||
public IndexAnalysis getIndexAnalysis() { return indexAnalysis; }
|
||||
public void setIndexAnalysis(IndexAnalysis indexAnalysis) { this.indexAnalysis = indexAnalysis; }
|
||||
public MappingDocument getMappingDocument() { return mappingDocument; }
|
||||
public void setMappingDocument(MappingDocument mappingDocument) { this.mappingDocument = mappingDocument; }
|
||||
public String getMappingJson() { return mappingJson; }
|
||||
public void setMappingJson(String mappingJson) { this.mappingJson = mappingJson; }
|
||||
public String getSavedPath() { return savedPath; }
|
||||
public void setSavedPath(String savedPath) { this.savedPath = savedPath; }
|
||||
public List<String> getProblems() { return problems; }
|
||||
public void setProblems(List<String> problems) { this.problems = problems; }
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.njcn.gather.icd.mapping.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 模块配置。
|
||||
* 模块配置类。集中管理默认作者、默认模板路径等可配置项。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 这里把模板路径、输出目录、默认作者等集中管理。
|
||||
* 2. 当前先用 @Value + 默认值,后续你也可以改成 @ConfigurationProperties。
|
||||
*/
|
||||
@Component
|
||||
public class MappingModuleConfig {
|
||||
|
||||
/** 默认模板资源路径。 */
|
||||
@Value("${icd.mapping.default-template-path:template/DefaultCfg.txt}")
|
||||
private String defaultTemplatePath;
|
||||
|
||||
/** 默认作者。 */
|
||||
@Value("${icd.mapping.default-author:system}")
|
||||
private String defaultAuthor;
|
||||
|
||||
/** 默认输出目录。 */
|
||||
@Value("${icd.mapping.default-output-dir:}")
|
||||
private String defaultOutputDir;
|
||||
|
||||
public String getDefaultTemplatePath() {
|
||||
return defaultTemplatePath;
|
||||
}
|
||||
|
||||
public void setDefaultTemplatePath(String defaultTemplatePath) {
|
||||
this.defaultTemplatePath = defaultTemplatePath;
|
||||
}
|
||||
|
||||
public String getDefaultAuthor() {
|
||||
return defaultAuthor;
|
||||
}
|
||||
|
||||
public void setDefaultAuthor(String defaultAuthor) {
|
||||
this.defaultAuthor = defaultAuthor;
|
||||
}
|
||||
|
||||
public String getDefaultOutputDir() {
|
||||
return defaultOutputDir;
|
||||
}
|
||||
|
||||
public void setDefaultOutputDir(String defaultOutputDir) {
|
||||
this.defaultOutputDir = defaultOutputDir;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.njcn.gather.icd.mapping.controller;
|
||||
|
||||
import com.njcn.gather.icd.mapping.application.MappingTaskAppService;
|
||||
import com.njcn.gather.icd.mapping.application.command.GenerateFromIcdCommand;
|
||||
import com.njcn.gather.icd.mapping.application.result.GenerateMappingResult;
|
||||
import com.njcn.gather.icd.mapping.controller.request.GenerateMappingFromIcdRequest;
|
||||
import com.njcn.gather.icd.mapping.controller.response.MappingTaskResponse;
|
||||
import com.njcn.gather.icd.mapping.converter.MappingRequestConverter;
|
||||
import com.njcn.gather.icd.mapping.converter.MappingResponseConverter;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* ICD 映射接口。
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/mms-mapping")
|
||||
public class MappingController {
|
||||
|
||||
private final MappingTaskAppService mappingTaskAppService;
|
||||
private final MappingRequestConverter requestConverter;
|
||||
private final MappingResponseConverter responseConverter;
|
||||
|
||||
public MappingController(MappingTaskAppService mappingTaskAppService,
|
||||
MappingRequestConverter requestConverter,
|
||||
MappingResponseConverter responseConverter) {
|
||||
this.mappingTaskAppService = mappingTaskAppService;
|
||||
this.requestConverter = requestConverter;
|
||||
this.responseConverter = responseConverter;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传 ICD 并生成映射。
|
||||
*
|
||||
* 表单参数:
|
||||
* 1. icdFile:ICD 文件
|
||||
* 2. request:JSON 请求体
|
||||
*/
|
||||
@PostMapping(value = "/generate-from-icd", consumes = {"multipart/form-data"})
|
||||
public MappingTaskResponse generateFromIcd(@RequestPart("icdFile") MultipartFile icdFile,
|
||||
@Validated @RequestPart("request") GenerateMappingFromIcdRequest request) {
|
||||
GenerateFromIcdCommand command = requestConverter.toCommand(icdFile, request);
|
||||
GenerateMappingResult result = mappingTaskAppService.generateFromIcd(command);
|
||||
return responseConverter.fromResult(result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.njcn.gather.icd.mapping.controller.request;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生成映射接口请求体。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 旧版结构中,indexSelection 是 Map<String, String>,只能表达“一个报告对应一个值”,
|
||||
* 无法表达“一个业务分组下有多个报告、一个报告下又有多条标签绑定”的真实场景。
|
||||
* 2. 新版结构改成 List<IndexSelectionGroupRequest>,用来完整承载用户在前端完成的绑定结果。
|
||||
* 3. 第一次只上传 ICD 时,这个字段可以为空;第二次用户确认绑定后再把完整结构上送即可。
|
||||
*/
|
||||
public class GenerateMappingFromIcdRequest {
|
||||
|
||||
/** 输出版本号。为空时后端默认补 1.0。 */
|
||||
private String version;
|
||||
|
||||
/** 作者。为空时默认空字符串。 */
|
||||
private String author;
|
||||
|
||||
/** 是否保存到磁盘。 */
|
||||
private boolean saveToDisk;
|
||||
|
||||
/** 是否返回美化 JSON。 */
|
||||
private boolean prettyJson;
|
||||
|
||||
/** 输出目录。saveToDisk=true 时才会用到。 */
|
||||
private String outputDir;
|
||||
|
||||
/**
|
||||
* 索引选择结果。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 每一个元素代表一个“业务分组”,例如:实时数据、统计数据、波动闪变。
|
||||
* 2. 每个业务分组下面又包含多条绑定关系。
|
||||
* 3. 允许为空;为空时后端返回 NEED_INDEX_SELECTION,给前端候选参考项。
|
||||
*/
|
||||
private List<IndexSelectionGroupRequest> indexSelection = new ArrayList<IndexSelectionGroupRequest>();
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public boolean isSaveToDisk() {
|
||||
return saveToDisk;
|
||||
}
|
||||
|
||||
public void setSaveToDisk(boolean saveToDisk) {
|
||||
this.saveToDisk = saveToDisk;
|
||||
}
|
||||
|
||||
public boolean isPrettyJson() {
|
||||
return prettyJson;
|
||||
}
|
||||
|
||||
public void setPrettyJson(boolean prettyJson) {
|
||||
this.prettyJson = prettyJson;
|
||||
}
|
||||
|
||||
public String getOutputDir() {
|
||||
return outputDir;
|
||||
}
|
||||
|
||||
public void setOutputDir(String outputDir) {
|
||||
this.outputDir = outputDir;
|
||||
}
|
||||
|
||||
public List<IndexSelectionGroupRequest> getIndexSelection() {
|
||||
return indexSelection;
|
||||
}
|
||||
|
||||
public void setIndexSelection(List<IndexSelectionGroupRequest> indexSelection) {
|
||||
this.indexSelection = indexSelection;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.njcn.gather.icd.mapping.controller.request;
|
||||
|
||||
/**
|
||||
* 单条索引绑定请求。
|
||||
*
|
||||
* 一条绑定只表达一个最小关系:
|
||||
* 某个报告(reportName)下,使用某个标签(label)与某个 lnInst 数字做绑定。
|
||||
*
|
||||
* 这样做的好处:
|
||||
* 1. 一个报告可以出现多次,对应多个标签。
|
||||
* 2. 一个业务分组下也可以有多个报告。
|
||||
* 3. 后端校验、生成映射时都更容易逐条处理。
|
||||
*/
|
||||
public class IndexBindingRequest {
|
||||
|
||||
/** 绑定发生在哪个报告上,例如:brcbStHarm。 */
|
||||
private String reportName;
|
||||
|
||||
/** 绑定发生在哪个数据集上,例如:dsStHarm。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 业务标签,例如:最大值、最小值、实时数据。 */
|
||||
private String label;
|
||||
|
||||
/** 当前标签最终绑定到的 lnInst 数字,例如:1、2、8。 */
|
||||
private String lnInst;
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
public void setLnInst(String lnInst) {
|
||||
this.lnInst = lnInst;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.njcn.gather.icd.mapping.controller.request;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 单个业务分组的索引选择请求。
|
||||
*
|
||||
* 例如:
|
||||
* - groupKey = REALTIME_DATA
|
||||
* - groupDesc = 实时数据
|
||||
* - bindings = 多条“报告 + 标签 + lnInst”的绑定关系
|
||||
*/
|
||||
public class IndexSelectionGroupRequest {
|
||||
|
||||
/**
|
||||
* 分组唯一键。
|
||||
*
|
||||
* 说明:
|
||||
* 这个值由后端在 NEED_INDEX_SELECTION 时返回,前端原样带回即可,避免仅靠中文描述做匹配。
|
||||
*/
|
||||
private String groupKey;
|
||||
|
||||
/** 分组中文描述,例如:实时数据、统计数据。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 当前业务分组下,用户最终确认的绑定关系。 */
|
||||
private List<IndexBindingRequest> bindings = new ArrayList<IndexBindingRequest>();
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public List<IndexBindingRequest> getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
public void setBindings(List<IndexBindingRequest> bindings) {
|
||||
this.bindings = bindings;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.njcn.gather.icd.mapping.controller.response;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 索引候选分组下的单个报告响应。
|
||||
*/
|
||||
public class IndexCandidateReportItemResponse {
|
||||
|
||||
/** 报告名称。 */
|
||||
private String reportName;
|
||||
|
||||
/** 数据集名称。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 报告描述。 */
|
||||
private String reportDesc;
|
||||
|
||||
/** 当前报告可选的 lnInst 数字。 */
|
||||
private List<String> availableLnInstValues = new ArrayList<String>();
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getReportDesc() {
|
||||
return reportDesc;
|
||||
}
|
||||
|
||||
public void setReportDesc(String reportDesc) {
|
||||
this.reportDesc = reportDesc;
|
||||
}
|
||||
|
||||
public List<String> getAvailableLnInstValues() {
|
||||
return availableLnInstValues;
|
||||
}
|
||||
|
||||
public void setAvailableLnInstValues(List<String> availableLnInstValues) {
|
||||
this.availableLnInstValues = availableLnInstValues;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.njcn.gather.icd.mapping.controller.response;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 索引候选返回对象。
|
||||
*
|
||||
* 说明:
|
||||
* 这是给前端“待匹配界面”使用的正式结构:
|
||||
* - 一个候选就是一个业务分组;
|
||||
* - 分组下面再挂多个报告;
|
||||
* - 前端根据 templateLabels 与 reports[*].availableLnInstValues 做人工绑定。
|
||||
*/
|
||||
public class IndexCandidateResponse {
|
||||
|
||||
/** 分组唯一键。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 分组中文描述。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 当前分组包含的报告数。 */
|
||||
private int reportCount;
|
||||
|
||||
/** 模板里配置的可选标签。 */
|
||||
private List<String> templateLabels = new ArrayList<String>();
|
||||
|
||||
/** 当前分组下的报告候选列表。 */
|
||||
private List<IndexCandidateReportItemResponse> reports = new ArrayList<IndexCandidateReportItemResponse>();
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public int getReportCount() {
|
||||
return reportCount;
|
||||
}
|
||||
|
||||
public void setReportCount(int reportCount) {
|
||||
this.reportCount = reportCount;
|
||||
}
|
||||
|
||||
public List<String> getTemplateLabels() {
|
||||
return templateLabels;
|
||||
}
|
||||
|
||||
public void setTemplateLabels(List<String> templateLabels) {
|
||||
this.templateLabels = templateLabels;
|
||||
}
|
||||
|
||||
public List<IndexCandidateReportItemResponse> getReports() {
|
||||
return reports;
|
||||
}
|
||||
|
||||
public void setReports(List<IndexCandidateReportItemResponse> reports) {
|
||||
this.reports = reports;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.njcn.gather.icd.mapping.controller.response;
|
||||
|
||||
/**
|
||||
* 映射摘要响应。
|
||||
* 映射摘要响应 DTO。用于把最终映射的关键信息单独封装返回。
|
||||
*/
|
||||
public class MappingDocumentResponse {
|
||||
private String version;
|
||||
private String author;
|
||||
private String ied;
|
||||
private String ld;
|
||||
private int reportCount;
|
||||
private int dataSetCount;
|
||||
public String getVersion() { return version; }
|
||||
public void setVersion(String version) { this.version = version; }
|
||||
public String getAuthor() { return author; }
|
||||
public void setAuthor(String author) { this.author = author; }
|
||||
public String getIed() { return ied; }
|
||||
public void setIed(String ied) { this.ied = ied; }
|
||||
public String getLd() { return ld; }
|
||||
public void setLd(String ld) { this.ld = ld; }
|
||||
public int getReportCount() { return reportCount; }
|
||||
public void setReportCount(int reportCount) { this.reportCount = reportCount; }
|
||||
public int getDataSetCount() { return dataSetCount; }
|
||||
public void setDataSetCount(int dataSetCount) { this.dataSetCount = dataSetCount; }
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.njcn.gather.icd.mapping.controller.response;
|
||||
|
||||
import com.njcn.gather.icd.mapping.enums.GenerateStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 第一个接口统一响应。
|
||||
* 接口统一响应 DTO。返回生成状态、映射内容、候选索引、问题列表等。
|
||||
*/
|
||||
public class MappingTaskResponse {
|
||||
private GenerateStatus status;
|
||||
private String message;
|
||||
private String iedName;
|
||||
private String ldInst;
|
||||
private String mappingJson;
|
||||
private String savedPath;
|
||||
private MappingDocumentResponse mappingDocument;
|
||||
private List<IndexCandidateResponse> indexCandidates = new ArrayList<IndexCandidateResponse>();
|
||||
private List<String> problems = new ArrayList<String>();
|
||||
public GenerateStatus getStatus() { return status; }
|
||||
public void setStatus(GenerateStatus status) { this.status = status; }
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
public String getIedName() { return iedName; }
|
||||
public void setIedName(String iedName) { this.iedName = iedName; }
|
||||
public String getLdInst() { return ldInst; }
|
||||
public void setLdInst(String ldInst) { this.ldInst = ldInst; }
|
||||
public String getMappingJson() { return mappingJson; }
|
||||
public void setMappingJson(String mappingJson) { this.mappingJson = mappingJson; }
|
||||
public String getSavedPath() { return savedPath; }
|
||||
public void setSavedPath(String savedPath) { this.savedPath = savedPath; }
|
||||
public MappingDocumentResponse getMappingDocument() { return mappingDocument; }
|
||||
public void setMappingDocument(MappingDocumentResponse mappingDocument) { this.mappingDocument = mappingDocument; }
|
||||
public List<IndexCandidateResponse> getIndexCandidates() { return indexCandidates; }
|
||||
public void setIndexCandidates(List<IndexCandidateResponse> indexCandidates) { this.indexCandidates = indexCandidates; }
|
||||
public List<String> getProblems() { return problems; }
|
||||
public void setProblems(List<String> problems) { this.problems = problems; }
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.njcn.gather.icd.mapping.converter;
|
||||
|
||||
import com.njcn.gather.icd.mapping.application.command.GenerateFromIcdCommand;
|
||||
import com.njcn.gather.icd.mapping.application.command.IndexBindingCommand;
|
||||
import com.njcn.gather.icd.mapping.application.command.IndexSelectionGroupCommand;
|
||||
import com.njcn.gather.icd.mapping.config.MappingModuleConfig;
|
||||
import com.njcn.gather.icd.mapping.controller.request.GenerateMappingFromIcdRequest;
|
||||
import com.njcn.gather.icd.mapping.controller.request.IndexBindingRequest;
|
||||
import com.njcn.gather.icd.mapping.controller.request.IndexSelectionGroupRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* 请求转换器。
|
||||
*
|
||||
* 作用:
|
||||
* 1. 把接口层 request 转成应用层 command。
|
||||
* 2. 统一处理 null 和空集合,避免后面业务层到处判空。
|
||||
*/
|
||||
@Component
|
||||
public class MappingRequestConverter {
|
||||
|
||||
private final MappingModuleConfig moduleConfig;
|
||||
|
||||
public MappingRequestConverter(MappingModuleConfig moduleConfig) {
|
||||
this.moduleConfig = moduleConfig;
|
||||
}
|
||||
|
||||
public GenerateFromIcdCommand toCommand(MultipartFile icdFile, GenerateMappingFromIcdRequest request) {
|
||||
try {
|
||||
if (icdFile == null || icdFile.isEmpty()) {
|
||||
throw new IllegalArgumentException("ICD 文件不能为空");
|
||||
}
|
||||
GenerateFromIcdCommand command = new GenerateFromIcdCommand();
|
||||
command.setFileName(icdFile.getOriginalFilename());
|
||||
command.setFileBytes(icdFile.getBytes());
|
||||
command.setVersion(request == null ? null : request.getVersion());
|
||||
command.setAuthor(resolveText(request == null ? null : request.getAuthor(), moduleConfig.getDefaultAuthor()));
|
||||
command.setSaveToDisk(request != null && request.isSaveToDisk());
|
||||
command.setPrettyJson(request == null || request.isPrettyJson());
|
||||
command.setOutputDir(resolveText(request == null ? null : request.getOutputDir(), moduleConfig.getDefaultOutputDir()));
|
||||
|
||||
if (request != null && request.getIndexSelection() != null) {
|
||||
for (IndexSelectionGroupRequest groupRequest : request.getIndexSelection()) {
|
||||
if (groupRequest == null) {
|
||||
continue;
|
||||
}
|
||||
IndexSelectionGroupCommand groupCommand = new IndexSelectionGroupCommand();
|
||||
groupCommand.setGroupKey(groupRequest.getGroupKey());
|
||||
groupCommand.setGroupDesc(groupRequest.getGroupDesc());
|
||||
|
||||
if (groupRequest.getBindings() != null) {
|
||||
for (IndexBindingRequest bindingRequest : groupRequest.getBindings()) {
|
||||
if (bindingRequest == null) {
|
||||
continue;
|
||||
}
|
||||
IndexBindingCommand bindingCommand = new IndexBindingCommand();
|
||||
bindingCommand.setReportName(bindingRequest.getReportName());
|
||||
bindingCommand.setDataSetName(bindingRequest.getDataSetName());
|
||||
bindingCommand.setLabel(bindingRequest.getLabel());
|
||||
bindingCommand.setLnInst(bindingRequest.getLnInst());
|
||||
groupCommand.getBindings().add(bindingCommand);
|
||||
}
|
||||
}
|
||||
|
||||
command.getIndexSelection().add(groupCommand);
|
||||
}
|
||||
}
|
||||
|
||||
return command;
|
||||
} catch (Exception ex) {
|
||||
throw new IllegalArgumentException("请求转换失败:" + ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveText(String value, String defaultValue) {
|
||||
if (value != null && !value.trim().isEmpty()) {
|
||||
return value.trim();
|
||||
}
|
||||
return defaultValue == null ? null : defaultValue.trim();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.njcn.gather.icd.mapping.converter;
|
||||
|
||||
import com.njcn.gather.icd.mapping.application.result.GenerateMappingResult;
|
||||
import com.njcn.gather.icd.mapping.controller.response.IndexCandidateReportItemResponse;
|
||||
import com.njcn.gather.icd.mapping.controller.response.IndexCandidateResponse;
|
||||
import com.njcn.gather.icd.mapping.controller.response.MappingDocumentResponse;
|
||||
import com.njcn.gather.icd.mapping.controller.response.MappingTaskResponse;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidate;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidateReportItem;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 响应转换器。
|
||||
*
|
||||
* 作用:
|
||||
* 1. 把应用层结果转换成接口层响应对象;
|
||||
* 2. 对待匹配索引场景,输出新的“按业务分组返回”的结构。
|
||||
*/
|
||||
@Component
|
||||
public class MappingResponseConverter {
|
||||
|
||||
public MappingTaskResponse fromResult(GenerateMappingResult result) {
|
||||
MappingTaskResponse response = new MappingTaskResponse();
|
||||
response.setStatus(result.getStatus());
|
||||
response.setMessage(result.getMessage());
|
||||
response.setIedName(result.getIedName());
|
||||
response.setLdInst(result.getLdInst());
|
||||
response.setMappingJson(result.getMappingJson());
|
||||
response.setSavedPath(result.getSavedPath());
|
||||
response.getProblems().addAll(result.getProblems());
|
||||
|
||||
if (result.getIndexAnalysis() != null && result.getIndexAnalysis().getCandidates() != null) {
|
||||
for (IndexCandidate candidate : result.getIndexAnalysis().getCandidates()) {
|
||||
IndexCandidateResponse candidateResponse = new IndexCandidateResponse();
|
||||
candidateResponse.setGroupKey(candidate.getGroupKey());
|
||||
candidateResponse.setGroupDesc(candidate.getGroupDesc());
|
||||
candidateResponse.setReportCount(candidate.getReportCount());
|
||||
candidateResponse.getTemplateLabels().addAll(candidate.getTemplateLabels());
|
||||
|
||||
if (candidate.getReports() != null) {
|
||||
for (IndexCandidateReportItem item : candidate.getReports()) {
|
||||
IndexCandidateReportItemResponse itemResponse = new IndexCandidateReportItemResponse();
|
||||
itemResponse.setReportName(item.getReportName());
|
||||
itemResponse.setDataSetName(item.getDataSetName());
|
||||
itemResponse.setReportDesc(item.getReportDesc());
|
||||
itemResponse.getAvailableLnInstValues().addAll(item.getAvailableLnInstValues());
|
||||
candidateResponse.getReports().add(itemResponse);
|
||||
}
|
||||
}
|
||||
|
||||
response.getIndexCandidates().add(candidateResponse);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.getMappingDocument() != null) {
|
||||
MappingDocumentResponse doc = new MappingDocumentResponse();
|
||||
doc.setVersion(result.getMappingDocument().getVersion());
|
||||
doc.setAuthor(result.getMappingDocument().getAuthor());
|
||||
doc.setIed(result.getMappingDocument().getIed());
|
||||
doc.setLd(result.getMappingDocument().getLd());
|
||||
doc.setReportCount(result.getMappingDocument().getReportMap() == null
|
||||
? 0 : result.getMappingDocument().getReportMap().size());
|
||||
doc.setDataSetCount(result.getMappingDocument().getDataSetList() == null
|
||||
? 0 : result.getMappingDocument().getDataSetList().size());
|
||||
response.setMappingDocument(doc);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.analysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 索引分析结果。
|
||||
* 索引分析结果模型。保存每个报告可选的 lnInst 候选列表及问题清单。
|
||||
*
|
||||
* key = reportName
|
||||
*/
|
||||
public class IndexAnalysis {
|
||||
private List<IndexCandidate> candidates = new ArrayList<IndexCandidate>();
|
||||
private List<String> problems = new ArrayList<String>();
|
||||
|
||||
public List<IndexCandidate> getCandidates() { return candidates; }
|
||||
public void setCandidates(List<IndexCandidate> candidates) { this.candidates = candidates; }
|
||||
public List<String> getProblems() { return problems; }
|
||||
public void setProblems(List<String> problems) { this.problems = problems; }
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.analysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 索引候选分组。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 一条候选对应一个业务分组,例如:统计数据、实时数据;
|
||||
* 2. 一个业务分组下可以包含多个报告;
|
||||
* 3. 这里不仅保存返回给前端的候选项,也保存从 DefaultCfg.ReportList 带下来的配置项,
|
||||
* 供后续 MappingGenerationService 直接使用,避免“二次查模板”失败。
|
||||
*/
|
||||
public class IndexCandidate {
|
||||
|
||||
/** 分组唯一键。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 分组描述。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 该分组下实际匹配到的报告数量。 */
|
||||
private int reportCount;
|
||||
|
||||
/** DefaultCfg.txt 中该分组可用的标签模板。 */
|
||||
private List<String> templateLabels = new ArrayList<String>();
|
||||
|
||||
/** 当前分组下匹配到的报告列表。 */
|
||||
private List<IndexCandidateReportItem> reports = new ArrayList<IndexCandidateReportItem>();
|
||||
|
||||
/**
|
||||
* DefaultCfg.ReportList.inst
|
||||
* 例如:01 / 02 / 03 / 04
|
||||
*/
|
||||
private String reportInst;
|
||||
|
||||
/**
|
||||
* DefaultCfg.ReportList.Select
|
||||
* 例如:DataStatFileMap / DataRealFileMap / FlickerFileMap
|
||||
*/
|
||||
private String select;
|
||||
|
||||
/**
|
||||
* DefaultCfg.ReportList.TrgOps
|
||||
* 例如:40 / 96
|
||||
*/
|
||||
private String trgOps;
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public int getReportCount() {
|
||||
return reportCount;
|
||||
}
|
||||
|
||||
public void setReportCount(int reportCount) {
|
||||
this.reportCount = reportCount;
|
||||
}
|
||||
|
||||
public List<String> getTemplateLabels() {
|
||||
return templateLabels;
|
||||
}
|
||||
|
||||
public void setTemplateLabels(List<String> templateLabels) {
|
||||
this.templateLabels = templateLabels;
|
||||
}
|
||||
|
||||
public List<IndexCandidateReportItem> getReports() {
|
||||
return reports;
|
||||
}
|
||||
|
||||
public void setReports(List<IndexCandidateReportItem> reports) {
|
||||
this.reports = reports;
|
||||
}
|
||||
|
||||
public String getReportInst() {
|
||||
return reportInst;
|
||||
}
|
||||
|
||||
public void setReportInst(String reportInst) {
|
||||
this.reportInst = reportInst;
|
||||
}
|
||||
|
||||
public String getSelect() {
|
||||
return select;
|
||||
}
|
||||
|
||||
public void setSelect(String select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public String getTrgOps() {
|
||||
return trgOps;
|
||||
}
|
||||
|
||||
public void setTrgOps(String trgOps) {
|
||||
this.trgOps = trgOps;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.analysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 候选分组下的单个报告项。
|
||||
*
|
||||
* 这个对象专门给前端展示“这个分组下面有哪些报告,以及每个报告对应哪些可用 lnInst 数字”。
|
||||
*/
|
||||
public class IndexCandidateReportItem {
|
||||
|
||||
/** 报告名称。 */
|
||||
private String reportName;
|
||||
|
||||
/** 数据集名称。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 报告中文描述。一般和分组描述相同,保留它是为了前端渲染更灵活。 */
|
||||
private String reportDesc;
|
||||
|
||||
/** 当前报告在 ICD 中解析出来的所有可选 lnInst 数字。 */
|
||||
private List<String> availableLnInstValues = new ArrayList<String>();
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getReportDesc() {
|
||||
return reportDesc;
|
||||
}
|
||||
|
||||
public void setReportDesc(String reportDesc) {
|
||||
this.reportDesc = reportDesc;
|
||||
}
|
||||
|
||||
public List<String> getAvailableLnInstValues() {
|
||||
return availableLnInstValues;
|
||||
}
|
||||
|
||||
public void setAvailableLnInstValues(List<String> availableLnInstValues) {
|
||||
this.availableLnInstValues = availableLnInstValues;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.analysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 校验结果。
|
||||
* 索引校验结果模型。保存是否通过以及问题列表。
|
||||
*/
|
||||
public class ValidationResult {
|
||||
private boolean valid;
|
||||
private List<String> problems = new ArrayList<String>();
|
||||
|
||||
public boolean isValid() { return valid; }
|
||||
public void setValid(boolean valid) { this.valid = valid; }
|
||||
public List<String> getProblems() { return problems; }
|
||||
public void setProblems(List<String> problems) { this.problems = problems; }
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* DataSet 节点。
|
||||
* 数据集模型。用于承接 DataSet 下的 FCDA 列表。
|
||||
*/
|
||||
public class DataSetNode {
|
||||
private String name;
|
||||
private List<FcdaNode> fcdas = new ArrayList<FcdaNode>();
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public List<FcdaNode> getFcdas() { return fcdas; }
|
||||
public void setFcdas(List<FcdaNode> fcdas) { this.fcdas = fcdas; }
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* DOI/SDI/DAI 统一节点。
|
||||
* DOI/SDI/DAI 细项模型。用于递归承接 DOI 树明细。
|
||||
*
|
||||
* kind 常见值:
|
||||
* - SDI
|
||||
* - DAI
|
||||
*/
|
||||
public class DoiElementNode {
|
||||
private String kind;
|
||||
private String name;
|
||||
private Long ix;
|
||||
private List<String> values = new ArrayList<String>();
|
||||
private List<DoiElementNode> children = new ArrayList<DoiElementNode>();
|
||||
|
||||
public String getKind() { return kind; }
|
||||
public void setKind(String kind) { this.kind = kind; }
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public Long getIx() { return ix; }
|
||||
public void setIx(Long ix) { this.ix = ix; }
|
||||
public List<String> getValues() { return values; }
|
||||
public void setValues(List<String> values) { this.values = values; }
|
||||
public List<DoiElementNode> getChildren() { return children; }
|
||||
public void setChildren(List<DoiElementNode> children) { this.children = children; }
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* DOI 节点。
|
||||
* DOI 模型。表示逻辑节点下的一个数据对象节点。
|
||||
*/
|
||||
public class DoiNode {
|
||||
private String name;
|
||||
private Long ix;
|
||||
private String lnClass;
|
||||
private String lnInst;
|
||||
private int sequenceCount;
|
||||
private List<DoiElementNode> children = new ArrayList<DoiElementNode>();
|
||||
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public Long getIx() { return ix; }
|
||||
public void setIx(Long ix) { this.ix = ix; }
|
||||
public String getLnClass() { return lnClass; }
|
||||
public void setLnClass(String lnClass) { this.lnClass = lnClass; }
|
||||
public String getLnInst() { return lnInst; }
|
||||
public void setLnInst(String lnInst) { this.lnInst = lnInst; }
|
||||
public int getSequenceCount() { return sequenceCount; }
|
||||
public void setSequenceCount(int sequenceCount) { this.sequenceCount = sequenceCount; }
|
||||
public List<DoiElementNode> getChildren() { return children; }
|
||||
public void setChildren(List<DoiElementNode> children) { this.children = children; }
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
/**
|
||||
* FCDA 节点。
|
||||
* FCDA 模型。保存 lnClass、lnInst、doName、daName、fc、ix 等信息。
|
||||
*/
|
||||
public class FcdaNode {
|
||||
private String ldInst;
|
||||
private String prefix;
|
||||
private String lnClass;
|
||||
private String lnInst;
|
||||
private String doName;
|
||||
private String daName;
|
||||
private String fc;
|
||||
private Long ix;
|
||||
private int sequenceCount;
|
||||
|
||||
public String getLdInst() { return ldInst; }
|
||||
public void setLdInst(String ldInst) { this.ldInst = ldInst; }
|
||||
public String getPrefix() { return prefix; }
|
||||
public void setPrefix(String prefix) { this.prefix = prefix; }
|
||||
public String getLnClass() { return lnClass; }
|
||||
public void setLnClass(String lnClass) { this.lnClass = lnClass; }
|
||||
public String getLnInst() { return lnInst; }
|
||||
public void setLnInst(String lnInst) { this.lnInst = lnInst; }
|
||||
public String getDoName() { return doName; }
|
||||
public void setDoName(String doName) { this.doName = doName; }
|
||||
public String getDaName() { return daName; }
|
||||
public void setDaName(String daName) { this.daName = daName; }
|
||||
public String getFc() { return fc; }
|
||||
public void setFc(String fc) { this.fc = fc; }
|
||||
public Long getIx() { return ix; }
|
||||
public void setIx(Long ix) { this.ix = ix; }
|
||||
public int getSequenceCount() { return sequenceCount; }
|
||||
public void setSequenceCount(int sequenceCount) { this.sequenceCount = sequenceCount; }
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ICD 文档聚合根。
|
||||
* ICD 统一领域模型的聚合根。承接 IED、LDevice、ReportControl、DataSet、LN 等解析结果。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 这是系统内部统一的 ICD 模型。
|
||||
* 2. 外部 JAXB generated 类只在 parser 层使用。
|
||||
* 3. 业务层全部依赖这个标准化模型,便于后续替换解析实现。
|
||||
*/
|
||||
public class IcdDocument {
|
||||
private String fileName;
|
||||
private String iedName;
|
||||
private String ldInst;
|
||||
private String ldPrefix;
|
||||
private IedNode primaryIed;
|
||||
private LogicalDeviceNode logicalDevice;
|
||||
private List<LnNode> logicalNodes = new ArrayList<LnNode>();
|
||||
private List<ReportControlNode> reportControls = new ArrayList<ReportControlNode>();
|
||||
private Map<String, DataSetNode> dataSets = new LinkedHashMap<String, DataSetNode>();
|
||||
|
||||
public String getFileName() { return fileName; }
|
||||
public void setFileName(String fileName) { this.fileName = fileName; }
|
||||
public String getIedName() { return iedName; }
|
||||
public void setIedName(String iedName) { this.iedName = iedName; }
|
||||
public String getLdInst() { return ldInst; }
|
||||
public void setLdInst(String ldInst) { this.ldInst = ldInst; }
|
||||
public String getLdPrefix() { return ldPrefix; }
|
||||
public void setLdPrefix(String ldPrefix) { this.ldPrefix = ldPrefix; }
|
||||
public IedNode getPrimaryIed() { return primaryIed; }
|
||||
public void setPrimaryIed(IedNode primaryIed) { this.primaryIed = primaryIed; }
|
||||
public LogicalDeviceNode getLogicalDevice() { return logicalDevice; }
|
||||
public void setLogicalDevice(LogicalDeviceNode logicalDevice) { this.logicalDevice = logicalDevice; }
|
||||
public List<LnNode> getLogicalNodes() { return logicalNodes; }
|
||||
public void setLogicalNodes(List<LnNode> logicalNodes) { this.logicalNodes = logicalNodes; }
|
||||
public List<ReportControlNode> getReportControls() { return reportControls; }
|
||||
public void setReportControls(List<ReportControlNode> reportControls) { this.reportControls = reportControls; }
|
||||
public Map<String, DataSetNode> getDataSets() { return dataSets; }
|
||||
public void setDataSets(Map<String, DataSetNode> dataSets) { this.dataSets = dataSets; }
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* IED 节点。
|
||||
* IED 节点模型。保存 IED 名称以及其下逻辑设备引用。
|
||||
*/
|
||||
public class IedNode {
|
||||
private String name;
|
||||
private List<String> accessPointNames = new ArrayList<String>();
|
||||
private List<String> lDeviceInstList = new ArrayList<String>();
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public List<String> getAccessPointNames() { return accessPointNames; }
|
||||
public void setAccessPointNames(List<String> accessPointNames) { this.accessPointNames = accessPointNames; }
|
||||
public List<String> getLDeviceInstList() { return lDeviceInstList; }
|
||||
public void setLDeviceInstList(List<String> lDeviceInstList) { this.lDeviceInstList = lDeviceInstList; }
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 逻辑节点。
|
||||
* 逻辑节点模型。保存 lnClass、lnInst、prefix、DOI 等信息。
|
||||
*
|
||||
* LN0 和 LN 最终都统一抽象为这个模型。
|
||||
*/
|
||||
public class LnNode {
|
||||
private boolean ln0;
|
||||
private String prefix;
|
||||
private String lnClass;
|
||||
private String lnInst;
|
||||
private String lnType;
|
||||
private List<DoiNode> doiList = new ArrayList<DoiNode>();
|
||||
|
||||
public boolean isLn0() { return ln0; }
|
||||
public void setLn0(boolean ln0) { this.ln0 = ln0; }
|
||||
public String getPrefix() { return prefix; }
|
||||
public void setPrefix(String prefix) { this.prefix = prefix; }
|
||||
public String getLnClass() { return lnClass; }
|
||||
public void setLnClass(String lnClass) { this.lnClass = lnClass; }
|
||||
public String getLnInst() { return lnInst; }
|
||||
public void setLnInst(String lnInst) { this.lnInst = lnInst; }
|
||||
public String getLnType() { return lnType; }
|
||||
public void setLnType(String lnType) { this.lnType = lnType; }
|
||||
public List<DoiNode> getDoiList() { return doiList; }
|
||||
public void setDoiList(List<DoiNode> doiList) { this.doiList = doiList; }
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
/**
|
||||
* 逻辑设备节点。
|
||||
* 逻辑设备模型。保存 inst、prefix 以及其下 LN/LN0 列表。
|
||||
*/
|
||||
public class LogicalDeviceNode {
|
||||
private String inst;
|
||||
private String ldName;
|
||||
public String getInst() { return inst; }
|
||||
public void setInst(String inst) { this.inst = inst; }
|
||||
public String getLdName() { return ldName; }
|
||||
public void setLdName(String ldName) { this.ldName = ldName; }
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.icd;
|
||||
|
||||
/**
|
||||
* ReportControl 节点。
|
||||
* 报告控制块模型。用于保存报告名称、关联 DataSet、缓冲属性等。
|
||||
*/
|
||||
public class ReportControlNode {
|
||||
private String name;
|
||||
private String rptId;
|
||||
private boolean buffered;
|
||||
private String dataSetName;
|
||||
private String trgOps;
|
||||
private String confRev;
|
||||
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public String getRptId() { return rptId; }
|
||||
public void setRptId(String rptId) { this.rptId = rptId; }
|
||||
public boolean isBuffered() { return buffered; }
|
||||
public void setBuffered(boolean buffered) { this.buffered = buffered; }
|
||||
public String getDataSetName() { return dataSetName; }
|
||||
public void setDataSetName(String dataSetName) { this.dataSetName = dataSetName; }
|
||||
public String getTrgOps() { return trgOps; }
|
||||
public void setTrgOps(String trgOps) { this.trgOps = trgOps; }
|
||||
public String getConfRev() { return confRev; }
|
||||
public void setConfRev(String confRev) { this.confRev = confRev; }
|
||||
public Boolean getBuffered() { return buffered; }
|
||||
public void setBuffered(Boolean buffered) { this.buffered = buffered; }
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.intermediate;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.LnNode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终参与生成 DataSetList 的选择状态。
|
||||
*
|
||||
* 关键修正:
|
||||
* 旧版本一个绑定只保存一个 LnNode,导致:
|
||||
* - MSQI 整组丢失
|
||||
* - MHAI 只生成一半
|
||||
*
|
||||
* 新版本改成:
|
||||
* 一个绑定可以关联多个 LnNode,后续生成阶段再逐个展开。
|
||||
*/
|
||||
public class DataSetSelectionState {
|
||||
|
||||
/** 所属分组 key。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 所属分组 desc。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 报告名。 */
|
||||
private String reportName;
|
||||
|
||||
/** 数据集名。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 绑定标签。 */
|
||||
private String label;
|
||||
|
||||
/** 绑定的 lnInst。 */
|
||||
private String lnInst;
|
||||
|
||||
/**
|
||||
* 当前绑定最终命中的 LN 节点列表。
|
||||
*
|
||||
* 说明:
|
||||
* 同一个 lnInst 在不同 lnClass 下可能都需要展开,
|
||||
* 例如:MMXU / MSQI / MHAI。
|
||||
*/
|
||||
private List<LnNode> lnNodes = new ArrayList<LnNode>();
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
public void setLnInst(String lnInst) {
|
||||
this.lnInst = lnInst;
|
||||
}
|
||||
|
||||
public List<LnNode> getLnNodes() {
|
||||
return lnNodes;
|
||||
}
|
||||
|
||||
public void setLnNodes(List<LnNode> lnNodes) {
|
||||
this.lnNodes = lnNodes;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.intermediate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 中间态总对象。
|
||||
*
|
||||
* 作用:
|
||||
* 1. 对应原 C# 里“先形成中间态,再做最终 JSON 组装”的思路;
|
||||
* 2. 把业务分组、用户绑定、最终 DataSet 选择结果集中保存;
|
||||
* 3. 避免在 MappingGenerationService 里直接边遍历边拼 JSON,便于后续扩展和排查。
|
||||
*/
|
||||
public class ReportAndDataSetState {
|
||||
|
||||
/** IED 名称。 */
|
||||
private String iedName;
|
||||
|
||||
/** LD 实例名。 */
|
||||
private String ldInst;
|
||||
|
||||
/** 分组状态列表。 */
|
||||
private List<ReportGroupState> reportGroups = new ArrayList<ReportGroupState>();
|
||||
|
||||
/** 数据集选择状态列表。 */
|
||||
private List<DataSetSelectionState> dataSetSelections = new ArrayList<DataSetSelectionState>();
|
||||
|
||||
public String getIedName() {
|
||||
return iedName;
|
||||
}
|
||||
|
||||
public void setIedName(String iedName) {
|
||||
this.iedName = iedName;
|
||||
}
|
||||
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
public void setLdInst(String ldInst) {
|
||||
this.ldInst = ldInst;
|
||||
}
|
||||
|
||||
public List<ReportGroupState> getReportGroups() {
|
||||
return reportGroups;
|
||||
}
|
||||
|
||||
public void setReportGroups(List<ReportGroupState> reportGroups) {
|
||||
this.reportGroups = reportGroups;
|
||||
}
|
||||
|
||||
public List<DataSetSelectionState> getDataSetSelections() {
|
||||
return dataSetSelections;
|
||||
}
|
||||
|
||||
public void setDataSetSelections(List<DataSetSelectionState> dataSetSelections) {
|
||||
this.dataSetSelections = dataSetSelections;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.intermediate;
|
||||
|
||||
/**
|
||||
* 单条最终有效绑定关系的中间态。
|
||||
*/
|
||||
public class ReportBindingState {
|
||||
|
||||
/** 分组 key。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 分组描述。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 报告名。 */
|
||||
private String reportName;
|
||||
|
||||
/** 数据集名。 */
|
||||
private String dataSetName;
|
||||
|
||||
/** 标签。 */
|
||||
private String label;
|
||||
|
||||
/** 绑定的 lnInst 数字。 */
|
||||
private String lnInst;
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public void setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
public String getDataSetName() {
|
||||
return dataSetName;
|
||||
}
|
||||
|
||||
public void setDataSetName(String dataSetName) {
|
||||
this.dataSetName = dataSetName;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
public void setLnInst(String lnInst) {
|
||||
this.lnInst = lnInst;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.intermediate;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidateReportItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 单个业务分组的中间态。
|
||||
*/
|
||||
public class ReportGroupState {
|
||||
|
||||
/** 分组唯一键。 */
|
||||
private String groupKey;
|
||||
|
||||
/** 分组描述。 */
|
||||
private String groupDesc;
|
||||
|
||||
/** 当前分组匹配到的报告数量。 */
|
||||
private int reportCount;
|
||||
|
||||
/** 报表 inst(来自 DefaultCfg.ReportList.inst)。 */
|
||||
private String reportInst;
|
||||
|
||||
/** Select(来自 DefaultCfg.ReportList.Select)。 */
|
||||
private String select;
|
||||
|
||||
/** TrgOps(来自 DefaultCfg.ReportList.TrgOps)。 */
|
||||
private String trgOps;
|
||||
|
||||
/** 当前分组包含的报告列表。 */
|
||||
private List<IndexCandidateReportItem> reportItems = new ArrayList<IndexCandidateReportItem>();
|
||||
|
||||
/** 用户最终确认的绑定关系。 */
|
||||
private List<ReportBindingState> bindings = new ArrayList<ReportBindingState>();
|
||||
|
||||
public String getGroupKey() {
|
||||
return groupKey;
|
||||
}
|
||||
|
||||
public void setGroupKey(String groupKey) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public String getGroupDesc() {
|
||||
return groupDesc;
|
||||
}
|
||||
|
||||
public void setGroupDesc(String groupDesc) {
|
||||
this.groupDesc = groupDesc;
|
||||
}
|
||||
|
||||
public int getReportCount() {
|
||||
return reportCount;
|
||||
}
|
||||
|
||||
public void setReportCount(int reportCount) {
|
||||
this.reportCount = reportCount;
|
||||
}
|
||||
|
||||
public String getReportInst() {
|
||||
return reportInst;
|
||||
}
|
||||
|
||||
public void setReportInst(String reportInst) {
|
||||
this.reportInst = reportInst;
|
||||
}
|
||||
|
||||
public String getSelect() {
|
||||
return select;
|
||||
}
|
||||
|
||||
public void setSelect(String select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public String getTrgOps() {
|
||||
return trgOps;
|
||||
}
|
||||
|
||||
public void setTrgOps(String trgOps) {
|
||||
this.trgOps = trgOps;
|
||||
}
|
||||
|
||||
public List<IndexCandidateReportItem> getReportItems() {
|
||||
return reportItems;
|
||||
}
|
||||
|
||||
public void setReportItems(List<IndexCandidateReportItem> reportItems) {
|
||||
this.reportItems = reportItems;
|
||||
}
|
||||
|
||||
public List<ReportBindingState> getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
public void setBindings(List<ReportBindingState> bindings) {
|
||||
this.bindings = bindings;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终映射中的 DataSetList 单项。
|
||||
*/
|
||||
public class DataSetGroupItem {
|
||||
|
||||
/** 分组描述。一般来自 LnClassList.desc。 */
|
||||
private String desc;
|
||||
|
||||
/** lnClass。 */
|
||||
private String lnClass;
|
||||
|
||||
/** 该 lnClass 下的 inst 列表。 */
|
||||
private List<InstItem> instList = new ArrayList<InstItem>();
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getLnClass() {
|
||||
return lnClass;
|
||||
}
|
||||
|
||||
public void setLnClass(String lnClass) {
|
||||
this.lnClass = lnClass;
|
||||
}
|
||||
|
||||
public List<InstItem> getInstList() {
|
||||
return instList;
|
||||
}
|
||||
|
||||
public void setInstList(List<InstItem> instList) {
|
||||
this.instList = instList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终映射中的 doiList 单项。
|
||||
*/
|
||||
public class DoiItem {
|
||||
|
||||
/** DOI 名称。 */
|
||||
private String name;
|
||||
|
||||
/** DOI 描述。 */
|
||||
private String desc;
|
||||
|
||||
/** 起始序号。 */
|
||||
private int start;
|
||||
|
||||
/** 结束序号。 */
|
||||
private int end;
|
||||
|
||||
/** 单位。 */
|
||||
private String unit;
|
||||
|
||||
/** 系数。 */
|
||||
private float coefficient;
|
||||
|
||||
/** 基波标志。 */
|
||||
private int baseflag;
|
||||
|
||||
/** 基波数量。 */
|
||||
private int basecount;
|
||||
|
||||
/** ICD 实际序列数。 */
|
||||
private int icdcout;
|
||||
|
||||
/** SDI 列表。 */
|
||||
private List<SdiItem> sdiList = new ArrayList<SdiItem>();
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public int getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public void setStart(int start) {
|
||||
this.start = start;
|
||||
}
|
||||
|
||||
public int getEnd() {
|
||||
return end;
|
||||
}
|
||||
|
||||
public void setEnd(int end) {
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
public String getUnit() {
|
||||
return unit;
|
||||
}
|
||||
|
||||
public void setUnit(String unit) {
|
||||
this.unit = unit;
|
||||
}
|
||||
|
||||
public float getCoefficient() {
|
||||
return coefficient;
|
||||
}
|
||||
|
||||
public void setCoefficient(float coefficient) {
|
||||
this.coefficient = coefficient;
|
||||
}
|
||||
|
||||
public int getBaseflag() {
|
||||
return baseflag;
|
||||
}
|
||||
|
||||
public void setBaseflag(int baseflag) {
|
||||
this.baseflag = baseflag;
|
||||
}
|
||||
|
||||
public int getBasecount() {
|
||||
return basecount;
|
||||
}
|
||||
|
||||
public void setBasecount(int basecount) {
|
||||
this.basecount = basecount;
|
||||
}
|
||||
|
||||
public int getIcdcout() {
|
||||
return icdcout;
|
||||
}
|
||||
|
||||
public void setIcdcout(int icdcout) {
|
||||
this.icdcout = icdcout;
|
||||
}
|
||||
|
||||
public List<SdiItem> getSdiList() {
|
||||
return sdiList;
|
||||
}
|
||||
|
||||
public void setSdiList(List<SdiItem> sdiList) {
|
||||
this.sdiList = sdiList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终映射中的 instList 单项。
|
||||
*/
|
||||
public class InstItem {
|
||||
|
||||
/** lnInst。 */
|
||||
private String inst;
|
||||
|
||||
/** 该 inst 的描述。通常使用当前绑定的 label。 */
|
||||
private String desc;
|
||||
|
||||
/** DOI 列表。 */
|
||||
private List<DoiItem> doiList = new ArrayList<DoiItem>();
|
||||
|
||||
public String getInst() {
|
||||
return inst;
|
||||
}
|
||||
|
||||
public void setInst(String inst) {
|
||||
this.inst = inst;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public List<DoiItem> getDoiList() {
|
||||
return doiList;
|
||||
}
|
||||
|
||||
public void setDoiList(List<DoiItem> doiList) {
|
||||
this.doiList = doiList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终映射文档。
|
||||
*
|
||||
* 关键说明:
|
||||
* 1. Java 字段统一使用 lowerCamelCase,避免 Jackson 同时输出 ied/IED 这类重复字段。
|
||||
* 2. JSON 输出名通过 @JsonProperty 显式指定,确保与原 C# 输出格式一致。
|
||||
*/
|
||||
public class MappingDocument {
|
||||
|
||||
@JsonProperty("version")
|
||||
private String version;
|
||||
|
||||
@JsonProperty("author")
|
||||
private String author;
|
||||
|
||||
@JsonProperty("IED")
|
||||
private String ied;
|
||||
|
||||
@JsonProperty("LD")
|
||||
private String ld;
|
||||
|
||||
/**
|
||||
* 原 C# mainFrom.txt 固定调用:
|
||||
* Set_WaveTimeFlag("BeiJing")
|
||||
*/
|
||||
@JsonProperty("WaveTimeFlag")
|
||||
private String waveTimeFlag;
|
||||
|
||||
/**
|
||||
* 原 C# mainFrom.txt 固定调用:
|
||||
* Set_DataType("1")
|
||||
*/
|
||||
@JsonProperty("DataType")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 原 C# mainFrom.txt 固定调用:
|
||||
* Set_unit("1")
|
||||
*/
|
||||
@JsonProperty("unit")
|
||||
private String unit;
|
||||
|
||||
@JsonProperty("ReportMap")
|
||||
private List<ReportMapItem> reportMap = new ArrayList<ReportMapItem>();
|
||||
|
||||
@JsonProperty("DataSetList")
|
||||
private List<DataSetGroupItem> dataSetList = new ArrayList<DataSetGroupItem>();
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public String getIed() {
|
||||
return ied;
|
||||
}
|
||||
|
||||
public void setIed(String ied) {
|
||||
this.ied = ied;
|
||||
}
|
||||
|
||||
public String getLd() {
|
||||
return ld;
|
||||
}
|
||||
|
||||
public void setLd(String ld) {
|
||||
this.ld = ld;
|
||||
}
|
||||
|
||||
public String getWaveTimeFlag() {
|
||||
return waveTimeFlag;
|
||||
}
|
||||
|
||||
public void setWaveTimeFlag(String waveTimeFlag) {
|
||||
this.waveTimeFlag = waveTimeFlag;
|
||||
}
|
||||
|
||||
public String getDataType() {
|
||||
return dataType;
|
||||
}
|
||||
|
||||
public void setDataType(String dataType) {
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
public String getUnit() {
|
||||
return unit;
|
||||
}
|
||||
|
||||
public void setUnit(String unit) {
|
||||
this.unit = unit;
|
||||
}
|
||||
|
||||
public List<ReportMapItem> getReportMap() {
|
||||
return reportMap;
|
||||
}
|
||||
|
||||
public void setReportMap(List<ReportMapItem> reportMap) {
|
||||
this.reportMap = reportMap;
|
||||
}
|
||||
|
||||
public List<DataSetGroupItem> getDataSetList() {
|
||||
return dataSetList;
|
||||
}
|
||||
|
||||
public void setDataSetList(List<DataSetGroupItem> dataSetList) {
|
||||
this.dataSetList = dataSetList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* 最终映射中的 ReportMap 单项。
|
||||
*
|
||||
* 关键说明:
|
||||
* 1. 原 C# 不是把同组报告合并成一条,而是组内每个报告各自输出一条。
|
||||
* 2. 但 reportCount 仍然写该分组总数。
|
||||
* 3. buffered 不是 boolean,而是:
|
||||
* - true -> BR
|
||||
* - false -> RP
|
||||
*/
|
||||
public class ReportMapItem {
|
||||
|
||||
@JsonProperty("desc")
|
||||
private String desc;
|
||||
|
||||
@JsonProperty("reportCount")
|
||||
private int reportCount;
|
||||
|
||||
@JsonProperty("rptID")
|
||||
private String rptId;
|
||||
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
|
||||
@JsonProperty("buffered")
|
||||
private String buffered;
|
||||
|
||||
@JsonProperty("inst")
|
||||
private String inst;
|
||||
|
||||
/**
|
||||
* 原 C# Set_FlickerFlag() 当前固定写 "0"
|
||||
*/
|
||||
@JsonProperty("FlickerFlag")
|
||||
private String flickerFlag;
|
||||
|
||||
/**
|
||||
* 原 C# 来自 DefaultCfg.ReportList.Select
|
||||
*/
|
||||
@JsonProperty("Select")
|
||||
private String select;
|
||||
|
||||
/**
|
||||
* 原 C# 来自 DefaultCfg.ReportList.TrgOps
|
||||
*/
|
||||
@JsonProperty("TrgOps")
|
||||
private String trgOps;
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public int getReportCount() {
|
||||
return reportCount;
|
||||
}
|
||||
|
||||
public void setReportCount(int reportCount) {
|
||||
this.reportCount = reportCount;
|
||||
}
|
||||
|
||||
public String getRptId() {
|
||||
return rptId;
|
||||
}
|
||||
|
||||
public void setRptId(String rptId) {
|
||||
this.rptId = rptId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getBuffered() {
|
||||
return buffered;
|
||||
}
|
||||
|
||||
public void setBuffered(String buffered) {
|
||||
this.buffered = buffered;
|
||||
}
|
||||
|
||||
public String getInst() {
|
||||
return inst;
|
||||
}
|
||||
|
||||
public void setInst(String inst) {
|
||||
this.inst = inst;
|
||||
}
|
||||
|
||||
public String getFlickerFlag() {
|
||||
return flickerFlag;
|
||||
}
|
||||
|
||||
public void setFlickerFlag(String flickerFlag) {
|
||||
this.flickerFlag = flickerFlag;
|
||||
}
|
||||
|
||||
public String getSelect() {
|
||||
return select;
|
||||
}
|
||||
|
||||
public void setSelect(String select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public String getTrgOps() {
|
||||
return trgOps;
|
||||
}
|
||||
|
||||
public void setTrgOps(String trgOps) {
|
||||
this.trgOps = trgOps;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 最终映射中的 sdiList 单项。
|
||||
*/
|
||||
public class SdiItem {
|
||||
|
||||
/** SDI 名称。 */
|
||||
private String name;
|
||||
|
||||
/** SDI 描述。 */
|
||||
private String desc;
|
||||
|
||||
/** 类型列表。 */
|
||||
private List<TypeItem> typeList = new ArrayList<TypeItem>();
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public List<TypeItem> getTypeList() {
|
||||
return typeList;
|
||||
}
|
||||
|
||||
public void setTypeList(List<TypeItem> typeList) {
|
||||
this.typeList = typeList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.mapping;
|
||||
|
||||
/**
|
||||
* 最终映射中的 typeList 单项。
|
||||
*/
|
||||
public class TypeItem {
|
||||
|
||||
/** 类型名称。 */
|
||||
private String name;
|
||||
|
||||
/** 类型描述。 */
|
||||
private String desc;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,345 @@
|
||||
package com.njcn.gather.icd.mapping.domain.model.template;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
/**
|
||||
* 默认模板。
|
||||
* 默认模板模型。把 default-template.json 解析成可直接使用的对象。
|
||||
*
|
||||
* 当前只保留第一个接口真正会用到的部分。
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class DefaultTemplate {
|
||||
|
||||
@JsonProperty("ReportList")
|
||||
private List<ReportCfgItem> reportList = new ArrayList<ReportCfgItem>();
|
||||
|
||||
@JsonProperty("LnClassList")
|
||||
private List<LnClassCfgItem> lnClassList = new ArrayList<LnClassCfgItem>();
|
||||
|
||||
@JsonProperty("PhaseList")
|
||||
private List<PhaseCfgItem> phaseList = new ArrayList<PhaseCfgItem>();
|
||||
|
||||
@JsonProperty("MultiplierList")
|
||||
private List<MultiplierCfgItem> multiplierList = new ArrayList<MultiplierCfgItem>();
|
||||
|
||||
@JsonProperty("UnitList")
|
||||
private List<UnitCfgItem> unitList = new ArrayList<UnitCfgItem>();
|
||||
|
||||
@JsonProperty("TypeList")
|
||||
private List<TypeCfgItem> typeList = new ArrayList<TypeCfgItem>();
|
||||
|
||||
@JsonProperty("DataObjectsList")
|
||||
private List<DataObjectCfgItem> dataObjectsList = new ArrayList<DataObjectCfgItem>();
|
||||
|
||||
/**
|
||||
* 基础校验。
|
||||
*
|
||||
* 返回问题列表;为空表示通过。
|
||||
*/
|
||||
public List<String> verify() {
|
||||
List<String> problems = new ArrayList<String>();
|
||||
ensureDuplicateNames("LnClassList", extractNames(lnClassList), problems);
|
||||
ensureDuplicateNames("PhaseList", extractNames(phaseList), problems);
|
||||
ensureDuplicateNames("MultiplierList", extractNames(multiplierList), problems);
|
||||
ensureDuplicateNames("UnitList", extractNames(unitList), problems);
|
||||
ensureDuplicateNames("TypeList", extractNames(typeList), problems);
|
||||
ensureDuplicateObjectNames(problems);
|
||||
if (reportList == null || reportList.isEmpty()) {
|
||||
problems.add("DefaultCfg.ReportList 为空");
|
||||
}
|
||||
return problems;
|
||||
}
|
||||
|
||||
private List<String> extractNames(List<? extends NameListSupport> list) {
|
||||
List<String> names = new ArrayList<String>();
|
||||
if (list == null) {
|
||||
return names;
|
||||
}
|
||||
for (NameListSupport item : list) {
|
||||
if (item.getNameList() != null) {
|
||||
names.addAll(item.getNameList());
|
||||
}
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
private void ensureDuplicateNames(String section, List<String> names, List<String> problems) {
|
||||
Set<String> set = new HashSet<String>();
|
||||
for (String name : names) {
|
||||
if (name == null) {
|
||||
continue;
|
||||
}
|
||||
String key = name.trim();
|
||||
if (!set.add(key)) {
|
||||
problems.add(section + " 中存在重复配置项:" + key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ensureDuplicateObjectNames(List<String> problems) {
|
||||
if (dataObjectsList == null) {
|
||||
return;
|
||||
}
|
||||
for (DataObjectCfgItem dataObject : dataObjectsList) {
|
||||
List<String> names = new ArrayList<String>();
|
||||
if (dataObject.getObjectList() != null) {
|
||||
for (ObjectCfgItem object : dataObject.getObjectList()) {
|
||||
if (object.getNameList() != null) {
|
||||
names.addAll(object.getNameList());
|
||||
}
|
||||
}
|
||||
}
|
||||
ensureDuplicateNames("DataObjectsList[" + dataObject.getDesc() + "]", names, problems);
|
||||
}
|
||||
}
|
||||
|
||||
public List<ReportCfgItem> getReportList() {
|
||||
return reportList;
|
||||
}
|
||||
|
||||
public void setReportList(List<ReportCfgItem> reportList) {
|
||||
this.reportList = reportList;
|
||||
}
|
||||
|
||||
public List<LnClassCfgItem> getLnClassList() {
|
||||
return lnClassList;
|
||||
}
|
||||
|
||||
public void setLnClassList(List<LnClassCfgItem> lnClassList) {
|
||||
this.lnClassList = lnClassList;
|
||||
}
|
||||
|
||||
public List<PhaseCfgItem> getPhaseList() {
|
||||
return phaseList;
|
||||
}
|
||||
|
||||
public void setPhaseList(List<PhaseCfgItem> phaseList) {
|
||||
this.phaseList = phaseList;
|
||||
}
|
||||
|
||||
public List<MultiplierCfgItem> getMultiplierList() {
|
||||
return multiplierList;
|
||||
}
|
||||
|
||||
public void setMultiplierList(List<MultiplierCfgItem> multiplierList) {
|
||||
this.multiplierList = multiplierList;
|
||||
}
|
||||
|
||||
public List<UnitCfgItem> getUnitList() {
|
||||
return unitList;
|
||||
}
|
||||
|
||||
public void setUnitList(List<UnitCfgItem> unitList) {
|
||||
this.unitList = unitList;
|
||||
}
|
||||
|
||||
public List<TypeCfgItem> getTypeList() {
|
||||
return typeList;
|
||||
}
|
||||
|
||||
public void setTypeList(List<TypeCfgItem> typeList) {
|
||||
this.typeList = typeList;
|
||||
}
|
||||
|
||||
public List<DataObjectCfgItem> getDataObjectsList() {
|
||||
return dataObjectsList;
|
||||
}
|
||||
|
||||
public void setDataObjectsList(List<DataObjectCfgItem> dataObjectsList) {
|
||||
this.dataObjectsList = dataObjectsList;
|
||||
}
|
||||
|
||||
/** 统一抽象:凡是有 nameList 的配置项都实现它。 */
|
||||
public interface NameListSupport {
|
||||
List<String> getNameList();
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class ReportCfgItem {
|
||||
|
||||
/**
|
||||
* 报告分组描述,例如:统计数据、实时数据、波动闪变
|
||||
*/
|
||||
@JsonProperty("desc")
|
||||
private String desc;
|
||||
|
||||
/**
|
||||
* 报告 inst,例如:01
|
||||
*/
|
||||
@JsonProperty("inst")
|
||||
private String inst;
|
||||
|
||||
/**
|
||||
* 原始配置中的 TrgOps。
|
||||
* 例如:40 / 96
|
||||
*
|
||||
* 这里必须显式加 @JsonProperty("TrgOps"),
|
||||
* 否则在当前项目里很容易反序列化后为 null。
|
||||
*/
|
||||
@JsonProperty("TrgOps")
|
||||
private String trgOps;
|
||||
|
||||
/**
|
||||
* 原始配置中的 Select。
|
||||
* 例如:DataStatFileMap / DataRealFileMap / FlickerFileMap
|
||||
*
|
||||
* 这里必须显式加 @JsonProperty("Select"),
|
||||
* 否则在当前项目里很容易反序列化后为 null。
|
||||
*/
|
||||
@JsonProperty("Select")
|
||||
private String select;
|
||||
|
||||
/**
|
||||
* 该分组覆盖的数据集名称列表
|
||||
*/
|
||||
@JsonProperty("DataSetList")
|
||||
private List<String> dataSetList = new ArrayList<String>();
|
||||
|
||||
/**
|
||||
* 该分组可配置的标签模板列表
|
||||
*/
|
||||
@JsonProperty("LnInstList")
|
||||
private List<String> lnInstList = new ArrayList<String>();
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getInst() {
|
||||
return inst;
|
||||
}
|
||||
|
||||
public void setInst(String inst) {
|
||||
this.inst = inst;
|
||||
}
|
||||
|
||||
public String getTrgOps() {
|
||||
return trgOps;
|
||||
}
|
||||
|
||||
public void setTrgOps(String trgOps) {
|
||||
this.trgOps = trgOps;
|
||||
}
|
||||
|
||||
public String getSelect() {
|
||||
return select;
|
||||
}
|
||||
|
||||
public void setSelect(String select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public List<String> getDataSetList() {
|
||||
return dataSetList;
|
||||
}
|
||||
|
||||
public void setDataSetList(List<String> dataSetList) {
|
||||
this.dataSetList = dataSetList;
|
||||
}
|
||||
|
||||
public List<String> getLnInstList() {
|
||||
return lnInstList;
|
||||
}
|
||||
|
||||
public void setLnInstList(List<String> lnInstList) {
|
||||
this.lnInstList = lnInstList;
|
||||
}
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class LnClassCfgItem implements NameListSupport {
|
||||
private String desc;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class PhaseCfgItem implements NameListSupport {
|
||||
private String desc;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class MultiplierCfgItem implements NameListSupport {
|
||||
private int multiplier;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
public int getMultiplier() { return multiplier; }
|
||||
public void setMultiplier(int multiplier) { this.multiplier = multiplier; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class UnitCfgItem implements NameListSupport {
|
||||
private String desc;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class TypeCfgItem implements NameListSupport {
|
||||
private String desc;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class DataObjectCfgItem {
|
||||
private String desc;
|
||||
@JsonProperty("LnInstList")
|
||||
private List<String> lnInstList = new ArrayList<String>();
|
||||
@JsonProperty("ObjectList")
|
||||
private List<ObjectCfgItem> objectList = new ArrayList<ObjectCfgItem>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public List<String> getLnInstList() { return lnInstList; }
|
||||
public void setLnInstList(List<String> lnInstList) { this.lnInstList = lnInstList; }
|
||||
public List<ObjectCfgItem> getObjectList() { return objectList; }
|
||||
public void setObjectList(List<ObjectCfgItem> objectList) { this.objectList = objectList; }
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class ObjectCfgItem implements NameListSupport {
|
||||
private String desc;
|
||||
private int baseflag;
|
||||
private int basecount;
|
||||
private int queuecount;
|
||||
private List<String> nameList = new ArrayList<String>();
|
||||
private List<String> queueList = new ArrayList<String>();
|
||||
public String getDesc() { return desc; }
|
||||
public void setDesc(String desc) { this.desc = desc; }
|
||||
public int getBaseflag() { return baseflag; }
|
||||
public void setBaseflag(int baseflag) { this.baseflag = baseflag; }
|
||||
public int getBasecount() { return basecount; }
|
||||
public void setBasecount(int basecount) { this.basecount = basecount; }
|
||||
public int getQueuecount() { return queuecount; }
|
||||
public void setQueuecount(int queuecount) { this.queuecount = queuecount; }
|
||||
public List<String> getNameList() { return nameList; }
|
||||
public void setNameList(List<String> nameList) { this.nameList = nameList; }
|
||||
public List<String> getQueueList() { return queueList; }
|
||||
public void setQueueList(List<String> queueList) { this.queueList = queueList; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.njcn.gather.icd.mapping.domain.service;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.njcn.gather.icd.mapping.config.MappingModuleConfig;
|
||||
import com.njcn.gather.icd.mapping.domain.model.template.DefaultTemplate;
|
||||
import com.njcn.gather.icd.mapping.utils.JsonUtils;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 默认配置加载器。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 直接读取 DefaultCfg.txt。
|
||||
* 2. 读取后按 DefaultTemplate 原始模型反序列化。
|
||||
*/
|
||||
@Service
|
||||
public class DefaultTemplateLoader {
|
||||
|
||||
private final MappingModuleConfig moduleConfig;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
public DefaultTemplateLoader(MappingModuleConfig moduleConfig) {
|
||||
this.moduleConfig = moduleConfig;
|
||||
this.objectMapper = new ObjectMapper();
|
||||
this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
}
|
||||
|
||||
public DefaultTemplate load() {
|
||||
try {
|
||||
ClassPathResource resource = new ClassPathResource(moduleConfig.getDefaultTemplatePath());
|
||||
if (!resource.exists()) {
|
||||
throw new IllegalArgumentException("默认模板文件不存在:" + moduleConfig.getDefaultTemplatePath());
|
||||
}
|
||||
byte[] bytes = readAllBytes(resource);
|
||||
if (bytes.length == 0) {
|
||||
throw new IllegalArgumentException("默认模板文件为空");
|
||||
}
|
||||
String json = new String(bytes, StandardCharsets.UTF_8);
|
||||
json = JsonUtils.sanitizeJson(json);
|
||||
DefaultTemplate template = objectMapper.readValue(json, DefaultTemplate.class);
|
||||
List<String> problems = template.verify();
|
||||
if (!problems.isEmpty()) {
|
||||
throw new IllegalArgumentException("DefaultCfg.txt 校验失败:" + String.join(";", problems));
|
||||
}
|
||||
return template;
|
||||
} catch (Exception ex) {
|
||||
throw new IllegalArgumentException("加载 DefaultCfg.txt 失败:" + ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] readAllBytes(ClassPathResource resource) throws Exception {
|
||||
try (InputStream inputStream = resource.getInputStream();
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||
byte[] buffer = new byte[4096];
|
||||
int length;
|
||||
while ((length = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, length);
|
||||
}
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.gather.icd.mapping.domain.service;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.IcdDocument;
|
||||
import com.njcn.gather.icd.mapping.infrastructure.parser.SclParserAdapter;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* ICD 解析服务。
|
||||
* ICD 解析领域服务门面。对应用层隐藏底层 JAXB 解析细节。
|
||||
*/
|
||||
@Service
|
||||
public class IcdParserService {
|
||||
|
||||
private final SclParserAdapter parserAdapter;
|
||||
|
||||
public IcdParserService(SclParserAdapter parserAdapter) {
|
||||
this.parserAdapter = parserAdapter;
|
||||
}
|
||||
|
||||
public IcdDocument parse(byte[] bytes, String fileName) {
|
||||
return parserAdapter.parse(bytes, fileName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
package com.njcn.gather.icd.mapping.domain.service;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexAnalysis;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidate;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidateReportItem;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.DataSetNode;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.FcdaNode;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.IcdDocument;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.ReportControlNode;
|
||||
import com.njcn.gather.icd.mapping.domain.model.template.DefaultTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 索引候选分析服务。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 新版不再按“单个报告”平铺返回,而是按 DefaultCfg.ReportList 的业务配置项聚合。
|
||||
* 2. 一个业务配置项下可能包含多个报告,因此这里会计算 reportCount,并返回 reports 子列表。
|
||||
* 3. templateLabels 只是模板参考,不要求与 ICD 解析到的 lnInst 数量完全一一对应。
|
||||
* 4. 关键修正:
|
||||
* 在这里就把 DefaultCfg.ReportList 的 inst / Select / TrgOps 一并带入 IndexCandidate,
|
||||
* 后续正式生成阶段直接使用,不再重新查模板。
|
||||
*/
|
||||
@Service
|
||||
public class IndexAnalysisService {
|
||||
|
||||
public IndexAnalysis analyze(IcdDocument icdDocument, DefaultTemplate template) {
|
||||
IndexAnalysis analysis = new IndexAnalysis();
|
||||
if (icdDocument == null) {
|
||||
analysis.getProblems().add("ICD 文档为空");
|
||||
return analysis;
|
||||
}
|
||||
if (template == null || template.getReportList() == null) {
|
||||
analysis.getProblems().add("DefaultCfg.ReportList 为空");
|
||||
return analysis;
|
||||
}
|
||||
|
||||
// 先按模板分组聚合
|
||||
for (DefaultTemplate.ReportCfgItem reportCfg : template.getReportList()) {
|
||||
List<ReportControlNode> matchedReports = collectMatchedReports(icdDocument, reportCfg);
|
||||
if (matchedReports.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
IndexCandidate candidate = new IndexCandidate();
|
||||
candidate.setGroupKey(buildGroupKey(reportCfg));
|
||||
candidate.setGroupDesc(reportCfg.getDesc());
|
||||
candidate.setReportCount(matchedReports.size());
|
||||
|
||||
// 关键:把 DefaultCfg.ReportList 的配置项直接带入候选对象
|
||||
candidate.setReportInst(reportCfg.getInst());
|
||||
candidate.setSelect(reportCfg.getSelect());
|
||||
candidate.setTrgOps(reportCfg.getTrgOps());
|
||||
|
||||
if (reportCfg.getLnInstList() != null) {
|
||||
candidate.getTemplateLabels().addAll(reportCfg.getLnInstList());
|
||||
}
|
||||
|
||||
for (ReportControlNode reportControl : matchedReports) {
|
||||
IndexCandidateReportItem item = new IndexCandidateReportItem();
|
||||
item.setReportName(reportControl.getName());
|
||||
item.setDataSetName(reportControl.getDataSetName());
|
||||
item.setReportDesc(reportCfg.getDesc());
|
||||
item.getAvailableLnInstValues().addAll(collectLnInstValues(icdDocument, reportControl.getDataSetName()));
|
||||
candidate.getReports().add(item);
|
||||
}
|
||||
|
||||
analysis.getCandidates().add(candidate);
|
||||
}
|
||||
|
||||
// 再检查是否有 ICD 报告没有被模板覆盖
|
||||
if (icdDocument.getReportControls() != null) {
|
||||
for (ReportControlNode reportControl : icdDocument.getReportControls()) {
|
||||
if (!isCoveredByTemplate(reportControl, template)) {
|
||||
analysis.getProblems().add(
|
||||
"报告 " + reportControl.getName()
|
||||
+ " 未在 DefaultCfg.ReportList 中匹配到配置;dataSet=" + reportControl.getDataSetName()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return analysis;
|
||||
}
|
||||
|
||||
private List<ReportControlNode> collectMatchedReports(IcdDocument icdDocument, DefaultTemplate.ReportCfgItem reportCfg) {
|
||||
List<ReportControlNode> result = new ArrayList<ReportControlNode>();
|
||||
if (icdDocument.getReportControls() == null || reportCfg.getDataSetList() == null) {
|
||||
return result;
|
||||
}
|
||||
for (ReportControlNode reportControl : icdDocument.getReportControls()) {
|
||||
if (reportCfg.getDataSetList().contains(reportControl.getDataSetName())) {
|
||||
result.add(reportControl);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean isCoveredByTemplate(ReportControlNode reportControl, DefaultTemplate template) {
|
||||
if (template == null || template.getReportList() == null) {
|
||||
return false;
|
||||
}
|
||||
for (DefaultTemplate.ReportCfgItem reportCfg : template.getReportList()) {
|
||||
if (reportCfg.getDataSetList() != null && reportCfg.getDataSetList().contains(reportControl.getDataSetName())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private List<String> collectLnInstValues(IcdDocument icdDocument, String dataSetName) {
|
||||
if (icdDocument.getDataSets() == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
DataSetNode dataSetNode = icdDocument.getDataSets().get(dataSetName);
|
||||
if (dataSetNode == null || dataSetNode.getFcdas() == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
Set<String> unique = new LinkedHashSet<String>();
|
||||
for (FcdaNode fcda : dataSetNode.getFcdas()) {
|
||||
if (fcda == null || fcda.getLnInst() == null) {
|
||||
continue;
|
||||
}
|
||||
String lnInst = fcda.getLnInst().trim();
|
||||
if (!lnInst.isEmpty()) {
|
||||
unique.add(lnInst);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> result = new ArrayList<String>(unique);
|
||||
Collections.sort(result, new Comparator<String>() {
|
||||
@Override
|
||||
public int compare(String left, String right) {
|
||||
try {
|
||||
return Integer.valueOf(left).compareTo(Integer.valueOf(right));
|
||||
} catch (Exception ex) {
|
||||
return left.compareTo(right);
|
||||
}
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildGroupKey(DefaultTemplate.ReportCfgItem reportCfg) {
|
||||
String desc = reportCfg.getDesc() == null ? "GROUP" : reportCfg.getDesc();
|
||||
String firstDataSet = (reportCfg.getDataSetList() == null || reportCfg.getDataSetList().isEmpty())
|
||||
? "DEFAULT" : reportCfg.getDataSetList().get(0);
|
||||
return normalize(desc) + "__" + normalize(firstDataSet);
|
||||
}
|
||||
|
||||
private String normalize(String value) {
|
||||
return value.replaceAll("[^0-9A-Za-z\\u4e00-\\u9fa5]+", "_")
|
||||
.replaceAll("_+", "_")
|
||||
.replaceAll("^_", "")
|
||||
.replaceAll("_$", "")
|
||||
.toUpperCase(Locale.ROOT);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package com.njcn.gather.icd.mapping.domain.service;
|
||||
|
||||
import com.njcn.gather.icd.mapping.application.command.IndexBindingCommand;
|
||||
import com.njcn.gather.icd.mapping.application.command.IndexSelectionGroupCommand;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexAnalysis;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidate;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.IndexCandidateReportItem;
|
||||
import com.njcn.gather.icd.mapping.domain.model.analysis.ValidationResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 索引绑定校验服务。
|
||||
*
|
||||
* 校验原则:
|
||||
* 1. 只校验用户明确提交的绑定项;
|
||||
* 2. 不要求模板里的所有标签都必须配置;
|
||||
* 3. label 必须属于当前业务分组的 templateLabels;
|
||||
* 4. lnInst 必须属于当前报告对应的 ICD 候选数字。
|
||||
*/
|
||||
@Service
|
||||
public class IndexValidationService {
|
||||
|
||||
public ValidationResult validate(IndexAnalysis analysis, List<IndexSelectionGroupCommand> selections) {
|
||||
ValidationResult result = new ValidationResult();
|
||||
|
||||
if (analysis == null || analysis.getCandidates() == null || analysis.getCandidates().isEmpty()) {
|
||||
result.getProblems().add("当前 ICD 未解析出任何可配置的候选分组");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (selections == null || selections.isEmpty()) {
|
||||
for (IndexCandidate candidate : analysis.getCandidates()) {
|
||||
result.getProblems().add(
|
||||
"报告组【" + candidate.getGroupDesc() + "】未提交绑定关系,请根据 templateLabels 与 reports[*].availableLnInstValues 完成配置"
|
||||
);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
for (IndexSelectionGroupCommand selection : selections) {
|
||||
IndexCandidate candidate = findCandidate(analysis, selection.getGroupKey(), selection.getGroupDesc());
|
||||
if (candidate == null) {
|
||||
result.getProblems().add("未找到分组配置:groupKey=" + selection.getGroupKey() + ", groupDesc=" + selection.getGroupDesc());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (selection.getBindings() == null || selection.getBindings().isEmpty()) {
|
||||
result.getProblems().add("分组【" + candidate.getGroupDesc() + "】没有任何绑定关系");
|
||||
continue;
|
||||
}
|
||||
|
||||
for (IndexBindingCommand binding : selection.getBindings()) {
|
||||
validateBinding(candidate, binding, result);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.getProblems().isEmpty()) {
|
||||
result.setValid(true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void validateBinding(IndexCandidate candidate, IndexBindingCommand binding, ValidationResult result) {
|
||||
if (binding == null) {
|
||||
result.getProblems().add("存在空的绑定项");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isBlank(binding.getLabel())) {
|
||||
result.getProblems().add("分组【" + candidate.getGroupDesc() + "】存在未填写 label 的绑定项");
|
||||
} else if (!candidate.getTemplateLabels().contains(binding.getLabel())) {
|
||||
result.getProblems().add("分组【" + candidate.getGroupDesc() + "】中 label【" + binding.getLabel() + "】不在模板候选中");
|
||||
}
|
||||
|
||||
IndexCandidateReportItem reportItem = findReport(candidate, binding.getReportName(), binding.getDataSetName());
|
||||
if (reportItem == null) {
|
||||
result.getProblems().add(
|
||||
"分组【" + candidate.getGroupDesc() + "】中未找到报告:reportName=" + binding.getReportName()
|
||||
+ ", dataSetName=" + binding.getDataSetName()
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isBlank(binding.getLnInst())) {
|
||||
result.getProblems().add("报告【" + reportItem.getReportName() + "】未填写 lnInst");
|
||||
} else if (!reportItem.getAvailableLnInstValues().contains(binding.getLnInst())) {
|
||||
result.getProblems().add(
|
||||
"报告【" + reportItem.getReportName() + "】的 lnInst【" + binding.getLnInst() + "】不在可选数字中:"
|
||||
+ reportItem.getAvailableLnInstValues()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private IndexCandidate findCandidate(IndexAnalysis analysis, String groupKey, String groupDesc) {
|
||||
for (IndexCandidate candidate : analysis.getCandidates()) {
|
||||
if (same(candidate.getGroupKey(), groupKey)) {
|
||||
return candidate;
|
||||
}
|
||||
if (same(candidate.getGroupDesc(), groupDesc)) {
|
||||
return candidate;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private IndexCandidateReportItem findReport(IndexCandidate candidate, String reportName, String dataSetName) {
|
||||
if (candidate.getReports() == null) {
|
||||
return null;
|
||||
}
|
||||
for (IndexCandidateReportItem item : candidate.getReports()) {
|
||||
if (same(item.getReportName(), reportName) && (isBlank(dataSetName) || same(item.getDataSetName(), dataSetName))) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean same(String left, String right) {
|
||||
if (left == null && right == null) {
|
||||
return true;
|
||||
}
|
||||
if (left == null || right == null) {
|
||||
return false;
|
||||
}
|
||||
return left.trim().equals(right.trim());
|
||||
}
|
||||
|
||||
private boolean isBlank(String value) {
|
||||
return value == null || value.trim().isEmpty();
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
package com.njcn.gather.icd.mapping.enums;
|
||||
|
||||
/**
|
||||
* 接口生成状态。
|
||||
*/
|
||||
public enum GenerateStatus {
|
||||
/** 生成成功。 */
|
||||
SUCCESS,
|
||||
/** 需要前端重新选择索引。 */
|
||||
NEED_INDEX_SELECTION,
|
||||
/** 生成失败。 */
|
||||
FAILED
|
||||
}
|
||||
@@ -0,0 +1,522 @@
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.*;
|
||||
import com.njcn.gather.icd.mapping.infrastructure.parser.generated.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
/**
|
||||
* JAXB generated 模型读取器。
|
||||
* generated 模型读取器。遍历 SCL/IED/LDevice/LN0/LN/ReportControl/DataSet/DOI 树并转换。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 这里只负责“把 generated 模型读取出来”。
|
||||
* 2. 不直接做接口编排,也不做 JSON 序列化。
|
||||
*/
|
||||
public class SclGeneratedModelReader {
|
||||
|
||||
public IcdDocument read(SCL scl, String fileName) {
|
||||
IcdDocument document = new IcdDocument();
|
||||
document.setFileName(fileName);
|
||||
|
||||
TIED targetIed = null;
|
||||
TLDevice targetDevice = null;
|
||||
|
||||
if (scl.getIED() != null) {
|
||||
for (TIED ied : scl.getIED()) {
|
||||
if (ied.getAccessPoint() == null) {
|
||||
continue;
|
||||
}
|
||||
for (TAccessPoint accessPoint : ied.getAccessPoint()) {
|
||||
TServer server = accessPoint.getServer();
|
||||
if (server == null || server.getLDevice() == null) {
|
||||
continue;
|
||||
}
|
||||
for (TLDevice lDevice : server.getLDevice()) {
|
||||
String inst = lDevice.getInst();
|
||||
if (inst == null || inst.trim().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
if ("LD0".equals(inst) || "PQLD0".equals(inst)) {
|
||||
continue;
|
||||
}
|
||||
targetIed = ied;
|
||||
targetDevice = lDevice;
|
||||
break;
|
||||
}
|
||||
if (targetDevice != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (targetDevice != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (targetIed == null || targetDevice == null) {
|
||||
throw new IllegalArgumentException("未找到可解析的 IED/LDevice 节点");
|
||||
}
|
||||
|
||||
IedNode iedNode = new IedNode();
|
||||
iedNode.setName(targetIed.getName());
|
||||
document.setPrimaryIed(iedNode);
|
||||
document.setIedName(targetIed.getName());
|
||||
document.setLdInst(targetDevice.getInst());
|
||||
document.setLdPrefix(extractLdPrefix(targetDevice.getInst()));
|
||||
|
||||
LogicalDeviceNode logicalDeviceNode = new LogicalDeviceNode();
|
||||
logicalDeviceNode.setInst(targetDevice.getInst());
|
||||
logicalDeviceNode.setLdName(targetDevice.getLdName());
|
||||
document.setLogicalDevice(logicalDeviceNode);
|
||||
|
||||
LN0 ln0 = targetDevice.getLN0();
|
||||
if (ln0 != null) {
|
||||
readReportAndDataSetFromAnyLn(ln0, document);
|
||||
document.getLogicalNodes().add(readLogicalNode(ln0, true));
|
||||
}
|
||||
if (targetDevice.getLN() != null) {
|
||||
for (TLN ln : targetDevice.getLN()) {
|
||||
document.getLogicalNodes().add(readLogicalNode(ln, false));
|
||||
}
|
||||
}
|
||||
// 关键修正:
|
||||
// C# 原版的 icdcout 优先来自 DataTypeTemplates -> LNodeType -> DO -> DOType -> DA.count,
|
||||
// 不是靠 DataSet/FCDA 重复数来反推。
|
||||
// 这里改成:先按模板 count 回填 DOI.sequenceCount,找不到再退回 FCDA。
|
||||
syncDoiSequenceCount(scl, document);
|
||||
|
||||
return document;
|
||||
}
|
||||
|
||||
private void readReportAndDataSetFromAnyLn(TAnyLN anyLn, IcdDocument document) {
|
||||
List<FcdaNode> allFcdas = new ArrayList<FcdaNode>();
|
||||
if (anyLn.getDataSet() != null) {
|
||||
for (TDataSet dataSet : anyLn.getDataSet()) {
|
||||
DataSetNode dataSetNode = new DataSetNode();
|
||||
dataSetNode.setName(dataSet.getName());
|
||||
if (dataSet.getFCDA() != null) {
|
||||
for (TFCDA fcda : dataSet.getFCDA()) {
|
||||
FcdaNode node = toFcdaNode(fcda);
|
||||
dataSetNode.getFcdas().add(node);
|
||||
allFcdas.add(node);
|
||||
}
|
||||
}
|
||||
document.getDataSets().put(dataSetNode.getName(), dataSetNode);
|
||||
}
|
||||
}
|
||||
for (DataSetNode dataSet : document.getDataSets().values()) {
|
||||
for (FcdaNode fcda : dataSet.getFcdas()) {
|
||||
fcda.setSequenceCount(SclTraversalSupport.calculateSequenceCount(allFcdas, fcda));
|
||||
}
|
||||
}
|
||||
|
||||
if (anyLn.getReportControl() != null) {
|
||||
for (TReportControl reportControl : anyLn.getReportControl()) {
|
||||
ReportControlNode report = new ReportControlNode();
|
||||
report.setName(reportControl.getName());
|
||||
report.setRptId(reportControl.getRptID());
|
||||
report.setBuffered(reportControl.isBuffered());
|
||||
report.setDataSetName(reportControl.getDatSet());
|
||||
report.setConfRev(String.valueOf(reportControl.getConfRev()));
|
||||
report.setTrgOps(readTrgOps(reportControl));
|
||||
document.getReportControls().add(report);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String readTrgOps(TReportControl reportControl) {
|
||||
if (reportControl.getTrgOps() == null) {
|
||||
return null;
|
||||
}
|
||||
boolean dchg = Boolean.TRUE.equals(reportControl.getTrgOps().isDchg());
|
||||
boolean qchg = Boolean.TRUE.equals(reportControl.getTrgOps().isQchg());
|
||||
boolean period = Boolean.TRUE.equals(reportControl.getTrgOps().isPeriod());
|
||||
if (period) {
|
||||
return "40";
|
||||
}
|
||||
if (dchg || qchg) {
|
||||
return "96";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取逻辑节点。
|
||||
*
|
||||
* 注意:
|
||||
* 当前这套 JAXB 生成类中,TAnyLN 只提供了通用能力,
|
||||
* prefix / lnClass / inst 这些属性实际定义在子类 TLN / TLN0 上,
|
||||
* 所以这里不能直接对 TAnyLN 调用 getPrefix()/getLnClass()/getInst()。
|
||||
*/
|
||||
private LnNode readLogicalNode(TAnyLN anyLn, boolean isLn0) {
|
||||
LnNode node = new LnNode();
|
||||
node.setLn0(isLn0);
|
||||
|
||||
// lnType 在 TAnyLN 上是存在的,可以直接读取
|
||||
node.setLnType(anyLn.getLnType());
|
||||
|
||||
// prefix / lnClass / inst 需要根据具体子类读取
|
||||
node.setPrefix(resolveLnPrefix(anyLn));
|
||||
node.setLnClass(resolveLnClass(anyLn));
|
||||
node.setLnInst(resolveLnInst(anyLn));
|
||||
|
||||
// DOI 是定义在 TAnyLN 上的,可以直接读取
|
||||
if (anyLn.getDOI() != null) {
|
||||
for (TDOI doi : anyLn.getDOI()) {
|
||||
DoiNode doiNode = new DoiNode();
|
||||
doiNode.setName(doi.getName());
|
||||
doiNode.setIx(doi.getIx());
|
||||
doiNode.setLnClass(node.getLnClass());
|
||||
doiNode.setLnInst(node.getLnInst());
|
||||
|
||||
if (doi.getSDIOrDAI() != null) {
|
||||
for (TUnNaming child : doi.getSDIOrDAI()) {
|
||||
DoiElementNode childNode = readUnNamingNode(child);
|
||||
if (childNode != null) {
|
||||
doiNode.getChildren().add(childNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
node.getDoiList().add(doiNode);
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
/**
|
||||
* 解析逻辑节点 prefix。
|
||||
*
|
||||
* TLN 有 prefix;
|
||||
* TLN0 按这套生成类没有单独 prefix 字段,返回空字符串即可。
|
||||
*/
|
||||
private String resolveLnPrefix(TAnyLN anyLn) {
|
||||
if (anyLn instanceof TLN) {
|
||||
return ((TLN) anyLn).getPrefix();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析逻辑节点 lnClass。
|
||||
*
|
||||
* 当前生成类里:
|
||||
* - TLN.getLnClass() 返回 List<String>
|
||||
* - TLN0.getLnClass() 返回 List<String>
|
||||
*/
|
||||
private String resolveLnClass(TAnyLN anyLn) {
|
||||
if (anyLn instanceof TLN) {
|
||||
return first(((TLN) anyLn).getLnClass());
|
||||
}
|
||||
if (anyLn instanceof TLN0) {
|
||||
return first(((TLN0) anyLn).getLnClass());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析逻辑节点 inst。
|
||||
*
|
||||
* 当前生成类里:
|
||||
* - TLN.getInst() 存在
|
||||
* - TLN0.getInst() 也存在
|
||||
*/
|
||||
private String resolveLnInst(TAnyLN anyLn) {
|
||||
if (anyLn instanceof TLN) {
|
||||
return ((TLN) anyLn).getInst();
|
||||
}
|
||||
if (anyLn instanceof TLN0) {
|
||||
return ((TLN0) anyLn).getInst();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private DoiElementNode readUnNamingNode(TUnNaming source) {
|
||||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
if (source instanceof TSDI) {
|
||||
TSDI sdi = (TSDI) source;
|
||||
DoiElementNode node = new DoiElementNode();
|
||||
node.setKind("SDI");
|
||||
node.setName(sdi.getName());
|
||||
node.setIx(sdi.getIx());
|
||||
if (sdi.getSDIOrDAI() != null) {
|
||||
for (TUnNaming child : sdi.getSDIOrDAI()) {
|
||||
DoiElementNode childNode = readUnNamingNode(child);
|
||||
if (childNode != null) {
|
||||
node.getChildren().add(childNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
if (source instanceof TDAI) {
|
||||
TDAI dai = (TDAI) source;
|
||||
DoiElementNode node = new DoiElementNode();
|
||||
node.setKind("DAI");
|
||||
node.setName(dai.getName());
|
||||
node.setIx(dai.getIx());
|
||||
if (dai.getVal() != null) {
|
||||
for (TVal val : dai.getVal()) {
|
||||
if (val.getValue() != null) {
|
||||
node.getValues().add(val.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private FcdaNode toFcdaNode(TFCDA fcda) {
|
||||
FcdaNode node = new FcdaNode();
|
||||
node.setLdInst(fcda.getLdInst());
|
||||
node.setPrefix(fcda.getPrefix());
|
||||
node.setLnClass(first(fcda.getLnClass()));
|
||||
node.setLnInst(fcda.getLnInst());
|
||||
node.setDoName(fcda.getDoName());
|
||||
node.setDaName(fcda.getDaName());
|
||||
node.setFc(fcda.getFc());
|
||||
node.setIx(fcda.getIx());
|
||||
return node;
|
||||
}
|
||||
|
||||
private String first(List<String> values) {
|
||||
return values == null || values.isEmpty() ? null : values.get(0);
|
||||
}
|
||||
|
||||
private String extractLdPrefix(String ldInst) {
|
||||
if (ldInst == null) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < ldInst.length(); i++) {
|
||||
char c = ldInst.charAt(i);
|
||||
if (Character.isDigit(c)) {
|
||||
break;
|
||||
}
|
||||
builder.append(c);
|
||||
}
|
||||
return builder.length() == 0 ? ldInst : builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 把 DOI 的 sequenceCount 同步出来。
|
||||
*
|
||||
* 规则严格贴近原 C#:
|
||||
* 1. 优先从 DataTypeTemplates -> LNodeType -> DO -> DOType -> DA.count 取值;
|
||||
* 2. 如果模板里没有 count,再退回 DataSet/FCDA 反查;
|
||||
* 3. 这样后续 MappingGenerationService 里的 icdcout 才会和 C# 一致。
|
||||
*/
|
||||
private void syncDoiSequenceCount(SCL scl, IcdDocument document) {
|
||||
if (document == null || document.getLogicalNodes() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 先把 “lnType + doName -> count” 建好缓存
|
||||
Map<String, Integer> templateSequenceCountMap = buildTemplateSequenceCountMap(scl);
|
||||
|
||||
for (LnNode lnNode : document.getLogicalNodes()) {
|
||||
if (lnNode == null || lnNode.getDoiList() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (DoiNode doiNode : lnNode.getDoiList()) {
|
||||
if (doiNode == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int templateCount = 0;
|
||||
if (lnNode.getLnType() != null && doiNode.getName() != null) {
|
||||
Integer value = templateSequenceCountMap.get(buildLnTypeDoKey(lnNode.getLnType(), doiNode.getName()));
|
||||
templateCount = value == null ? 0 : value.intValue();
|
||||
}
|
||||
|
||||
int fcdaCount = findDoiSequenceCountFromFcda(document, doiNode);
|
||||
|
||||
// 关键:优先使用模板 count,保持与 C# 原版一致
|
||||
doiNode.setSequenceCount(templateCount > 0 ? templateCount : fcdaCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 “lnType + doName -> 序列数量” 缓存。
|
||||
*
|
||||
* 来源:
|
||||
* DataTypeTemplates
|
||||
* -> LNodeType(id = lnType)
|
||||
* -> DO(name/type)
|
||||
* -> DOType(id = type)
|
||||
* -> DA.count
|
||||
*
|
||||
* C# 原版本质上就是沿这条链把 doi.tNUM 算出来。
|
||||
*/
|
||||
private Map<String, Integer> buildTemplateSequenceCountMap(SCL scl) {
|
||||
Map<String, Integer> result = new LinkedHashMap<String, Integer>();
|
||||
if (scl == null || scl.getDataTypeTemplates() == null) {
|
||||
return result;
|
||||
}
|
||||
|
||||
TDataTypeTemplates templates = scl.getDataTypeTemplates();
|
||||
if (templates.getLNodeType() == null || templates.getDOType() == null) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// 1. 先建 DOType.id -> count
|
||||
Map<String, Integer> doTypeCountMap = new LinkedHashMap<String, Integer>();
|
||||
for (TDOType doType : templates.getDOType()) {
|
||||
if (doType == null || doType.getId() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int count = extractDoTypeSequenceCount(doType);
|
||||
doTypeCountMap.put(doType.getId(), count);
|
||||
}
|
||||
|
||||
// 2. 再建 lnType + doName -> count
|
||||
for (TLNodeType lNodeType : templates.getLNodeType()) {
|
||||
if (lNodeType == null || lNodeType.getId() == null || lNodeType.getDO() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (TDO tdo : lNodeType.getDO()) {
|
||||
if (tdo == null || tdo.getName() == null || tdo.getType() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Integer count = doTypeCountMap.get(tdo.getType());
|
||||
if (count == null) {
|
||||
count = 0;
|
||||
}
|
||||
|
||||
result.put(buildLnTypeDoKey(lNodeType.getId(), tdo.getName()), count);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从一个 DOType 中提取序列数量。
|
||||
*
|
||||
* C# 原版用的是 DOType 下 DA.count。
|
||||
* 这里取所有顶层 DA 里最大的正整数 count。
|
||||
*/
|
||||
private int extractDoTypeSequenceCount(TDOType doType) {
|
||||
int max = 0;
|
||||
if (doType == null || doType.getSDOOrDA() == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (TUnNaming item : doType.getSDOOrDA()) {
|
||||
if (!(item instanceof TDA)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
TDA da = (TDA) item;
|
||||
int value = parseDaCount(da);
|
||||
if (value > max) {
|
||||
max = value;
|
||||
}
|
||||
}
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析 DA.count。
|
||||
*
|
||||
* JAXB 这套生成类把 count 生成为 List<String>,
|
||||
* 所以这里要做一次安全转换。
|
||||
*/
|
||||
private int parseDaCount(TAbstractDataAttribute dataAttribute) {
|
||||
if (dataAttribute == null || dataAttribute.getCount() == null || dataAttribute.getCount().isEmpty()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int max = 0;
|
||||
for (String raw : dataAttribute.getCount()) {
|
||||
if (raw == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String text = raw.trim();
|
||||
if (text.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
int value = Integer.parseInt(text);
|
||||
if (value > max) {
|
||||
max = value;
|
||||
}
|
||||
} catch (NumberFormatException ignore) {
|
||||
// 非法 count 直接忽略,保持容错
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
/**
|
||||
* 退回到 DataSet/FCDA 的 sequenceCount 反查。
|
||||
*
|
||||
* 这里只作为模板 count 找不到时的兜底逻辑。
|
||||
*/
|
||||
private int findDoiSequenceCountFromFcda(IcdDocument document, DoiNode doiNode) {
|
||||
int max = 0;
|
||||
if (document == null || document.getDataSets() == null || doiNode == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (DataSetNode dataSetNode : document.getDataSets().values()) {
|
||||
if (dataSetNode == null || dataSetNode.getFcdas() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (FcdaNode fcda : dataSetNode.getFcdas()) {
|
||||
if (fcda == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean sameLnClass = equalsTrim(fcda.getLnClass(), doiNode.getLnClass());
|
||||
boolean sameLnInst = equalsTrim(fcda.getLnInst(), doiNode.getLnInst());
|
||||
boolean sameDoName = equalsTrim(fcda.getDoName(), doiNode.getName());
|
||||
|
||||
if (sameLnClass && sameLnInst && sameDoName) {
|
||||
if (fcda.getSequenceCount() > max) {
|
||||
max = fcda.getSequenceCount();
|
||||
}
|
||||
if (fcda.getIx() != null && fcda.getIx() > max) {
|
||||
max = fcda.getIx().intValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
private String buildLnTypeDoKey(String lnType, String doName) {
|
||||
String left = lnType == null ? "" : lnType.trim();
|
||||
String right = doName == null ? "" : doName.trim();
|
||||
return left + "##" + right;
|
||||
}
|
||||
|
||||
/**
|
||||
* 空安全字符串比较。
|
||||
*/
|
||||
private boolean equalsTrim(String left, String right) {
|
||||
if (left == null && right == null) {
|
||||
return true;
|
||||
}
|
||||
if (left == null || right == null) {
|
||||
return false;
|
||||
}
|
||||
return left.trim().equals(right.trim());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.IcdDocument;
|
||||
import com.njcn.gather.icd.mapping.infrastructure.parser.generated.SCL;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBElement;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
||||
/**
|
||||
* SCL 解析适配器。
|
||||
* JAXB 解析适配器。负责把 ICD XML 反序列化为 SCL 根对象,再转成内部模型。
|
||||
*
|
||||
* 说明:
|
||||
* 1. 这是真正会用到的 JAXB 版解析入口。
|
||||
* 2. 这里只负责把 ICD XML 反序列化成 SCL 根对象,再交给 reader 转成内部模型。
|
||||
* 3. 业务层不会直接依赖 JAXB generated 类。
|
||||
*/
|
||||
@Component
|
||||
public class SclParserAdapter {
|
||||
|
||||
private final SclGeneratedModelReader modelReader = new SclGeneratedModelReader();
|
||||
|
||||
public IcdDocument parse(byte[] content, String fileName) {
|
||||
if (content == null || content.length == 0) {
|
||||
throw new IllegalArgumentException("ICD 文件内容不能为空");
|
||||
}
|
||||
try {
|
||||
JAXBContext context = JAXBContext.newInstance(SCL.class);
|
||||
Unmarshaller unmarshaller = context.createUnmarshaller();
|
||||
Object raw = unmarshaller.unmarshal(new ByteArrayInputStream(content));
|
||||
SCL scl = resolveSclRoot(raw);
|
||||
return modelReader.read(scl, fileName);
|
||||
} catch (Exception ex) {
|
||||
throw new IllegalArgumentException("ICD 解析失败:" + ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
private SCL resolveSclRoot(Object raw) {
|
||||
if (raw instanceof SCL) {
|
||||
return (SCL) raw;
|
||||
}
|
||||
if (raw instanceof JAXBElement) {
|
||||
Object value = ((JAXBElement<?>) raw).getValue();
|
||||
if (value instanceof SCL) {
|
||||
return (SCL) value;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("ICD 根节点不是 SCL");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser;
|
||||
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.DoiElementNode;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.DoiNode;
|
||||
import com.njcn.gather.icd.mapping.domain.model.icd.FcdaNode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* SCL 遍历辅助工具。
|
||||
*/
|
||||
public final class SclTraversalSupport {
|
||||
|
||||
private SclTraversalSupport() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计同一个数据对象在同数据集里出现的次数,作为 ICD 实际序列个数参考。
|
||||
*/
|
||||
public static int calculateSequenceCount(List<FcdaNode> allFcdas, FcdaNode current) {
|
||||
int count = 0;
|
||||
for (FcdaNode item : allFcdas) {
|
||||
if (safeEquals(item.getLnClass(), current.getLnClass())
|
||||
&& safeEquals(item.getLnInst(), current.getLnInst())
|
||||
&& safeEquals(item.getDoName(), current.getDoName())) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count <= 1 ? 0 : count;
|
||||
}
|
||||
|
||||
public static List<DoiElementNode> flattenLeafDai(DoiNode doi) {
|
||||
List<DoiElementNode> result = new ArrayList<DoiElementNode>();
|
||||
if (doi == null || doi.getChildren() == null) {
|
||||
return result;
|
||||
}
|
||||
for (DoiElementNode child : doi.getChildren()) {
|
||||
collectLeafDai(child, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void collectLeafDai(DoiElementNode node, List<DoiElementNode> result) {
|
||||
if (node == null) {
|
||||
return;
|
||||
}
|
||||
if ("DAI".equals(node.getKind())) {
|
||||
result.add(node);
|
||||
}
|
||||
if (node.getChildren() != null) {
|
||||
for (DoiElementNode child : node.getChildren()) {
|
||||
collectLeafDai(child, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean safeEquals(String a, String b) {
|
||||
return a == null ? b == null : a.equals(b);
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>anonymous complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType>
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tLN0">
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "")
|
||||
@XmlRootElement(name = "LN0")
|
||||
public class LN0
|
||||
extends TLN0
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,351 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>anonymous complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType>
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tBaseElement">
|
||||
* <sequence>
|
||||
* <element name="Header" type="{http://www.iec.ch/61850/2003/SCL}tHeader"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}Substation" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}Communication" minOccurs="0"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}IED" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}DataTypeTemplates" minOccurs="0"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}Line" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}Process" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="version" use="required" type="{http://www.iec.ch/61850/2003/SCL}tSclVersion" fixed="2007" />
|
||||
* <attribute name="revision" use="required" type="{http://www.iec.ch/61850/2003/SCL}tSclRevision" fixed="C" />
|
||||
* <attribute name="release" use="required" type="{http://www.iec.ch/61850/2003/SCL}tSclRelease" fixed="5" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "", propOrder = {
|
||||
"header",
|
||||
"substation",
|
||||
"communication",
|
||||
"ied",
|
||||
"dataTypeTemplates",
|
||||
"line",
|
||||
"process"
|
||||
})
|
||||
@XmlRootElement(name = "SCL")
|
||||
public class SCL
|
||||
extends TBaseElement
|
||||
{
|
||||
|
||||
@XmlElement(name = "Header", required = true)
|
||||
protected THeader header;
|
||||
@XmlElement(name = "Substation")
|
||||
protected List<TSubstation> substation;
|
||||
@XmlElement(name = "Communication")
|
||||
protected TCommunication communication;
|
||||
@XmlElement(name = "IED")
|
||||
protected List<TIED> ied;
|
||||
@XmlElement(name = "DataTypeTemplates")
|
||||
protected TDataTypeTemplates dataTypeTemplates;
|
||||
@XmlElement(name = "Line")
|
||||
protected List<TLine> line;
|
||||
@XmlElement(name = "Process")
|
||||
protected List<TProcess> process;
|
||||
@XmlAttribute(name = "version", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String version;
|
||||
@XmlAttribute(name = "revision", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String revision;
|
||||
@XmlAttribute(name = "release", required = true)
|
||||
protected short release;
|
||||
|
||||
/**
|
||||
* 获取header属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link THeader }
|
||||
*
|
||||
*/
|
||||
public THeader getHeader() {
|
||||
return header;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置header属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link THeader }
|
||||
*
|
||||
*/
|
||||
public void setHeader(THeader value) {
|
||||
this.header = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the substation property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the substation property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSubstation().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSubstation }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TSubstation> getSubstation() {
|
||||
if (substation == null) {
|
||||
substation = new ArrayList<TSubstation>();
|
||||
}
|
||||
return this.substation;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取communication属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TCommunication }
|
||||
*
|
||||
*/
|
||||
public TCommunication getCommunication() {
|
||||
return communication;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置communication属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TCommunication }
|
||||
*
|
||||
*/
|
||||
public void setCommunication(TCommunication value) {
|
||||
this.communication = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the ied property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the ied property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getIED().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TIED }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TIED> getIED() {
|
||||
if (ied == null) {
|
||||
ied = new ArrayList<TIED>();
|
||||
}
|
||||
return this.ied;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取dataTypeTemplates属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TDataTypeTemplates }
|
||||
*
|
||||
*/
|
||||
public TDataTypeTemplates getDataTypeTemplates() {
|
||||
return dataTypeTemplates;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置dataTypeTemplates属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TDataTypeTemplates }
|
||||
*
|
||||
*/
|
||||
public void setDataTypeTemplates(TDataTypeTemplates value) {
|
||||
this.dataTypeTemplates = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the line property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the line property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLine().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TLine }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TLine> getLine() {
|
||||
if (line == null) {
|
||||
line = new ArrayList<TLine>();
|
||||
}
|
||||
return this.line;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the process property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the process property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getProcess().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TProcess }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TProcess> getProcess() {
|
||||
if (process == null) {
|
||||
process = new ArrayList<TProcess>();
|
||||
}
|
||||
return this.process;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取version属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getVersion() {
|
||||
if (version == null) {
|
||||
return "2007";
|
||||
} else {
|
||||
return version;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置version属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setVersion(String value) {
|
||||
this.version = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取revision属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getRevision() {
|
||||
if (revision == null) {
|
||||
return "C";
|
||||
} else {
|
||||
return revision;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置revision属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setRevision(String value) {
|
||||
this.revision = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取release属性的值。
|
||||
*
|
||||
*/
|
||||
public short getRelease() {
|
||||
return release;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置release属性的值。
|
||||
*
|
||||
*/
|
||||
public void setRelease(short value) {
|
||||
this.release = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAbstractConductingEquipment complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAbstractConductingEquipment">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tEquipment">
|
||||
* <sequence>
|
||||
* <element name="Terminal" type="{http://www.iec.ch/61850/2003/SCL}tTerminal" maxOccurs="2" minOccurs="0"/>
|
||||
* <element name="SubEquipment" type="{http://www.iec.ch/61850/2003/SCL}tSubEquipment" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAbstractConductingEquipment", propOrder = {
|
||||
"terminal",
|
||||
"subEquipment"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TConductingEquipment.class,
|
||||
TTransformerWinding.class
|
||||
})
|
||||
public abstract class TAbstractConductingEquipment
|
||||
extends TEquipment
|
||||
{
|
||||
|
||||
@XmlElement(name = "Terminal")
|
||||
protected List<TTerminal> terminal;
|
||||
@XmlElement(name = "SubEquipment")
|
||||
protected List<TSubEquipment> subEquipment;
|
||||
|
||||
/**
|
||||
* Gets the value of the terminal property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the terminal property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getTerminal().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TTerminal }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TTerminal> getTerminal() {
|
||||
if (terminal == null) {
|
||||
terminal = new ArrayList<TTerminal>();
|
||||
}
|
||||
return this.terminal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the subEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the subEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSubEquipment().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSubEquipment }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TSubEquipment> getSubEquipment() {
|
||||
if (subEquipment == null) {
|
||||
subEquipment = new ArrayList<TSubEquipment>();
|
||||
}
|
||||
return this.subEquipment;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,325 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAbstractDataAttribute complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAbstractDataAttribute">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="Val" type="{http://www.iec.ch/61850/2003/SCL}tVal" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAttributeNameEnum" />
|
||||
* <attribute name="sAddr">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
|
||||
* <maxLength value="255"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="bType" use="required" type="{http://www.iec.ch/61850/2003/SCL}tBasicTypeEnum" />
|
||||
* <attribute name="valKind" type="{http://www.iec.ch/61850/2003/SCL}tValKindEnum" default="Set" />
|
||||
* <attribute name="type" type="{http://www.iec.ch/61850/2003/SCL}tAnyName" />
|
||||
* <attribute name="count" type="{http://www.iec.ch/61850/2003/SCL}tDACount" default="0" />
|
||||
* <attribute name="valImport" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAbstractDataAttribute", propOrder = {
|
||||
"val",
|
||||
"labels"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TDA.class,
|
||||
TBDA.class
|
||||
})
|
||||
public abstract class TAbstractDataAttribute
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Val")
|
||||
protected List<TVal> val;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "sAddr")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String sAddr;
|
||||
@XmlAttribute(name = "bType", required = true)
|
||||
protected TPredefinedBasicTypeEnum bType;
|
||||
@XmlAttribute(name = "valKind")
|
||||
protected TValKindEnum valKind;
|
||||
@XmlAttribute(name = "type")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String type;
|
||||
@XmlAttribute(name = "count")
|
||||
protected List<String> count;
|
||||
@XmlAttribute(name = "valImport")
|
||||
protected Boolean valImport;
|
||||
|
||||
/**
|
||||
* Gets the value of the val property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the val property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getVal().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TVal }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TVal> getVal() {
|
||||
if (val == null) {
|
||||
val = new ArrayList<TVal>();
|
||||
}
|
||||
return this.val;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取sAddr属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getSAddr() {
|
||||
return sAddr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置sAddr属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setSAddr(String value) {
|
||||
this.sAddr = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取bType属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TPredefinedBasicTypeEnum }
|
||||
*
|
||||
*/
|
||||
public TPredefinedBasicTypeEnum getBType() {
|
||||
return bType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置bType属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TPredefinedBasicTypeEnum }
|
||||
*
|
||||
*/
|
||||
public void setBType(TPredefinedBasicTypeEnum value) {
|
||||
this.bType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取valKind属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TValKindEnum }
|
||||
*
|
||||
*/
|
||||
public TValKindEnum getValKind() {
|
||||
if (valKind == null) {
|
||||
return TValKindEnum.SET;
|
||||
} else {
|
||||
return valKind;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置valKind属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TValKindEnum }
|
||||
*
|
||||
*/
|
||||
public void setValKind(TValKindEnum value) {
|
||||
this.valKind = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取type属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置type属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the count property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the count property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getCount().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getCount() {
|
||||
if (count == null) {
|
||||
count = new ArrayList<String>();
|
||||
}
|
||||
return this.count;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取valImport属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isValImport() {
|
||||
if (valImport == null) {
|
||||
return false;
|
||||
} else {
|
||||
return valImport;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置valImport属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setValImport(Boolean value) {
|
||||
this.valImport = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAbstractEqFuncSubFunc complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAbstractEqFuncSubFunc">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tPowerSystemResource">
|
||||
* <sequence>
|
||||
* <element name="GeneralEquipment" type="{http://www.iec.ch/61850/2003/SCL}tGeneralEquipment" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="EqSubFunction" type="{http://www.iec.ch/61850/2003/SCL}tEqSubFunction" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="type" type="{http://www.w3.org/2001/XMLSchema}normalizedString" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAbstractEqFuncSubFunc", propOrder = {
|
||||
"generalEquipment",
|
||||
"eqSubFunction"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TEqFunction.class,
|
||||
TEqSubFunction.class
|
||||
})
|
||||
public abstract class TAbstractEqFuncSubFunc
|
||||
extends TPowerSystemResource
|
||||
{
|
||||
|
||||
@XmlElement(name = "GeneralEquipment")
|
||||
protected List<TGeneralEquipment> generalEquipment;
|
||||
@XmlElement(name = "EqSubFunction")
|
||||
protected List<TEqSubFunction> eqSubFunction;
|
||||
@XmlAttribute(name = "type")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Gets the value of the generalEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the generalEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getGeneralEquipment().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TGeneralEquipment }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TGeneralEquipment> getGeneralEquipment() {
|
||||
if (generalEquipment == null) {
|
||||
generalEquipment = new ArrayList<TGeneralEquipment>();
|
||||
}
|
||||
return this.generalEquipment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the eqSubFunction property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the eqSubFunction property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getEqSubFunction().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TEqSubFunction }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TEqSubFunction> getEqSubFunction() {
|
||||
if (eqSubFunction == null) {
|
||||
eqSubFunction = new ArrayList<TEqSubFunction>();
|
||||
}
|
||||
return this.eqSubFunction;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取type属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置type属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAccessControl complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAccessControl">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tAnyContentFromOtherNamespace">
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAccessControl")
|
||||
public class TAccessControl
|
||||
extends TAnyContentFromOtherNamespace
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,436 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAccessPoint complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAccessPoint">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <choice minOccurs="0">
|
||||
* <element name="Server" type="{http://www.iec.ch/61850/2003/SCL}tServer"/>
|
||||
* <element ref="{http://www.iec.ch/61850/2003/SCL}LN" maxOccurs="unbounded"/>
|
||||
* <element name="ServerAt" type="{http://www.iec.ch/61850/2003/SCL}tServerAt"/>
|
||||
* </choice>
|
||||
* <element name="Services" type="{http://www.iec.ch/61850/2003/SCL}tServices" minOccurs="0"/>
|
||||
* <element name="GOOSESecurity" type="{http://www.iec.ch/61850/2003/SCL}tCertificate" maxOccurs="7" minOccurs="0"/>
|
||||
* <element name="SMVSecurity" type="{http://www.iec.ch/61850/2003/SCL}tCertificate" maxOccurs="7" minOccurs="0"/>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agUuid"/>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* <attribute name="router" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="clock" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="kdc" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAccessPoint", propOrder = {
|
||||
"server",
|
||||
"ln",
|
||||
"serverAt",
|
||||
"services",
|
||||
"gooseSecurity",
|
||||
"smvSecurity",
|
||||
"labels"
|
||||
})
|
||||
public class TAccessPoint
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Server")
|
||||
protected TServer server;
|
||||
@XmlElement(name = "LN")
|
||||
protected List<TLN> ln;
|
||||
@XmlElement(name = "ServerAt")
|
||||
protected TServerAt serverAt;
|
||||
@XmlElement(name = "Services")
|
||||
protected TServices services;
|
||||
@XmlElement(name = "GOOSESecurity")
|
||||
protected List<TCertificate> gooseSecurity;
|
||||
@XmlElement(name = "SMVSecurity")
|
||||
protected List<TCertificate> smvSecurity;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "router")
|
||||
protected Boolean router;
|
||||
@XmlAttribute(name = "clock")
|
||||
protected Boolean clock;
|
||||
@XmlAttribute(name = "kdc")
|
||||
protected Boolean kdc;
|
||||
@XmlAttribute(name = "uuid")
|
||||
protected String uuid;
|
||||
@XmlAttribute(name = "templateUuid")
|
||||
protected String templateUuid;
|
||||
|
||||
/**
|
||||
* 获取server属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TServer }
|
||||
*
|
||||
*/
|
||||
public TServer getServer() {
|
||||
return server;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置server属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TServer }
|
||||
*
|
||||
*/
|
||||
public void setServer(TServer value) {
|
||||
this.server = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the ln property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the ln property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLN().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TLN }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TLN> getLN() {
|
||||
if (ln == null) {
|
||||
ln = new ArrayList<TLN>();
|
||||
}
|
||||
return this.ln;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取serverAt属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TServerAt }
|
||||
*
|
||||
*/
|
||||
public TServerAt getServerAt() {
|
||||
return serverAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置serverAt属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TServerAt }
|
||||
*
|
||||
*/
|
||||
public void setServerAt(TServerAt value) {
|
||||
this.serverAt = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取services属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TServices }
|
||||
*
|
||||
*/
|
||||
public TServices getServices() {
|
||||
return services;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置services属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TServices }
|
||||
*
|
||||
*/
|
||||
public void setServices(TServices value) {
|
||||
this.services = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the gooseSecurity property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the gooseSecurity property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getGOOSESecurity().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TCertificate }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TCertificate> getGOOSESecurity() {
|
||||
if (gooseSecurity == null) {
|
||||
gooseSecurity = new ArrayList<TCertificate>();
|
||||
}
|
||||
return this.gooseSecurity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the smvSecurity property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the smvSecurity property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSMVSecurity().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TCertificate }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TCertificate> getSMVSecurity() {
|
||||
if (smvSecurity == null) {
|
||||
smvSecurity = new ArrayList<TCertificate>();
|
||||
}
|
||||
return this.smvSecurity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取router属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isRouter() {
|
||||
if (router == null) {
|
||||
return false;
|
||||
} else {
|
||||
return router;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置router属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setRouter(Boolean value) {
|
||||
this.router = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取clock属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isClock() {
|
||||
if (clock == null) {
|
||||
return false;
|
||||
} else {
|
||||
return clock;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置clock属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setClock(Boolean value) {
|
||||
this.clock = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取kdc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isKdc() {
|
||||
if (kdc == null) {
|
||||
return false;
|
||||
} else {
|
||||
return kdc;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置kdc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setKdc(Boolean value) {
|
||||
this.kdc = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取uuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置uuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUuid(String value) {
|
||||
this.uuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取templateUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTemplateUuid() {
|
||||
return templateUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置templateUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTemplateUuid(String value) {
|
||||
this.templateUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAddress complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAddress">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <sequence>
|
||||
* <element name="P" type="{http://www.iec.ch/61850/2003/SCL}tP" maxOccurs="unbounded"/>
|
||||
* </sequence>
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAddress", propOrder = {
|
||||
"p"
|
||||
})
|
||||
public class TAddress {
|
||||
|
||||
@XmlElement(name = "P", required = true)
|
||||
protected List<TP> p;
|
||||
|
||||
/**
|
||||
* Gets the value of the p property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the p property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getP().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TP }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TP> getP() {
|
||||
if (p == null) {
|
||||
p = new ArrayList<TP>();
|
||||
}
|
||||
return this.p;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAnyAttribute;
|
||||
import javax.xml.bind.annotation.XmlAnyElement;
|
||||
import javax.xml.bind.annotation.XmlMixed;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.namespace.QName;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAnyContentFromOtherNamespace complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAnyContentFromOtherNamespace">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <sequence maxOccurs="unbounded" minOccurs="0">
|
||||
* <any processContents='lax' namespace='##other'/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAnyContentFromOtherNamespace", propOrder = {
|
||||
"content"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TText.class,
|
||||
TPrivate.class,
|
||||
THitem.class,
|
||||
TAccessControl.class
|
||||
})
|
||||
public abstract class TAnyContentFromOtherNamespace {
|
||||
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
@XmlAnyAttribute
|
||||
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Element }
|
||||
* {@link Object }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a map that contains attributes that aren't bound to any typed property on this class.
|
||||
*
|
||||
* <p>
|
||||
* the map is keyed by the name of the attribute and
|
||||
* the value is the string value of the attribute.
|
||||
*
|
||||
* the map returned by this method is live, and you can add new attribute
|
||||
* by updating the map directly. Because of this design, there's no setter.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
* always non-null
|
||||
*/
|
||||
public Map<QName, String> getOtherAttributes() {
|
||||
return otherAttributes;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,384 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAnyLN complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAnyLN">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="DataSet" type="{http://www.iec.ch/61850/2003/SCL}tDataSet" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="ReportControl" type="{http://www.iec.ch/61850/2003/SCL}tReportControl" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="LogControl" type="{http://www.iec.ch/61850/2003/SCL}tLogControl" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="DOI" type="{http://www.iec.ch/61850/2003/SCL}tDOI" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Inputs" type="{http://www.iec.ch/61850/2003/SCL}tInputs" minOccurs="0"/>
|
||||
* <element name="Outputs" type="{http://www.iec.ch/61850/2003/SCL}tOutputs" minOccurs="0"/>
|
||||
* <element name="Log" type="{http://www.iec.ch/61850/2003/SCL}tLog" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agUuid"/>
|
||||
* <attribute name="lnType" use="required" type="{http://www.iec.ch/61850/2003/SCL}tName" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAnyLN", propOrder = {
|
||||
"dataSet",
|
||||
"reportControl",
|
||||
"logControl",
|
||||
"doi",
|
||||
"inputs",
|
||||
"outputs",
|
||||
"log",
|
||||
"labels"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TLN.class,
|
||||
TLN0 .class
|
||||
})
|
||||
public abstract class TAnyLN
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "DataSet")
|
||||
protected List<TDataSet> dataSet;
|
||||
@XmlElement(name = "ReportControl")
|
||||
protected List<TReportControl> reportControl;
|
||||
@XmlElement(name = "LogControl")
|
||||
protected List<TLogControl> logControl;
|
||||
@XmlElement(name = "DOI")
|
||||
protected List<TDOI> doi;
|
||||
@XmlElement(name = "Inputs")
|
||||
protected TInputs inputs;
|
||||
@XmlElement(name = "Outputs")
|
||||
protected TOutputs outputs;
|
||||
@XmlElement(name = "Log")
|
||||
protected List<TLog> log;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "lnType", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String lnType;
|
||||
@XmlAttribute(name = "uuid")
|
||||
protected String uuid;
|
||||
@XmlAttribute(name = "templateUuid")
|
||||
protected String templateUuid;
|
||||
|
||||
/**
|
||||
* Gets the value of the dataSet property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the dataSet property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDataSet().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TDataSet }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TDataSet> getDataSet() {
|
||||
if (dataSet == null) {
|
||||
dataSet = new ArrayList<TDataSet>();
|
||||
}
|
||||
return this.dataSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the reportControl property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the reportControl property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getReportControl().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TReportControl }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TReportControl> getReportControl() {
|
||||
if (reportControl == null) {
|
||||
reportControl = new ArrayList<TReportControl>();
|
||||
}
|
||||
return this.reportControl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the logControl property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the logControl property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLogControl().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TLogControl }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TLogControl> getLogControl() {
|
||||
if (logControl == null) {
|
||||
logControl = new ArrayList<TLogControl>();
|
||||
}
|
||||
return this.logControl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the doi property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the doi property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDOI().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TDOI }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TDOI> getDOI() {
|
||||
if (doi == null) {
|
||||
doi = new ArrayList<TDOI>();
|
||||
}
|
||||
return this.doi;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取inputs属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TInputs }
|
||||
*
|
||||
*/
|
||||
public TInputs getInputs() {
|
||||
return inputs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置inputs属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TInputs }
|
||||
*
|
||||
*/
|
||||
public void setInputs(TInputs value) {
|
||||
this.inputs = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取outputs属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TOutputs }
|
||||
*
|
||||
*/
|
||||
public TOutputs getOutputs() {
|
||||
return outputs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置outputs属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TOutputs }
|
||||
*
|
||||
*/
|
||||
public void setOutputs(TOutputs value) {
|
||||
this.outputs = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the log property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the log property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLog().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TLog }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TLog> getLog() {
|
||||
if (log == null) {
|
||||
log = new ArrayList<TLog>();
|
||||
}
|
||||
return this.log;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnType属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnType() {
|
||||
return lnType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnType属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnType(String value) {
|
||||
this.lnType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取uuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置uuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUuid(String value) {
|
||||
this.uuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取templateUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTemplateUuid() {
|
||||
return templateUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置templateUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTemplateUuid(String value) {
|
||||
this.templateUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAssociation complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tAssociation">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agLNRef"/>
|
||||
* <attribute name="apRef" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* <attribute name="kind" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAssociationKindEnum" />
|
||||
* <attribute name="associationID" type="{http://www.iec.ch/61850/2003/SCL}tAssociationID" />
|
||||
* <attribute name="initiator" type="{http://www.iec.ch/61850/2003/SCL}tAssociationInitiator" default="client" />
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tAssociation")
|
||||
public class TAssociation {
|
||||
|
||||
@XmlAttribute(name = "apRef", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String apRef;
|
||||
@XmlAttribute(name = "kind", required = true)
|
||||
protected TAssociationKindEnum kind;
|
||||
@XmlAttribute(name = "associationID")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String associationID;
|
||||
@XmlAttribute(name = "initiator")
|
||||
protected TAssociationInitiator initiator;
|
||||
@XmlAttribute(name = "prefix")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String prefix;
|
||||
@XmlAttribute(name = "lnClass", required = true)
|
||||
protected List<String> lnClass;
|
||||
@XmlAttribute(name = "lnInst", required = true)
|
||||
protected String lnInst;
|
||||
@XmlAttribute(name = "lnUuid")
|
||||
protected String lnUuid;
|
||||
@XmlAttribute(name = "iedName", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String iedName;
|
||||
@XmlAttribute(name = "ldInst", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String ldInst;
|
||||
@XmlAttribute(name = "desc")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String desc;
|
||||
|
||||
/**
|
||||
* 获取apRef属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApRef() {
|
||||
return apRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apRef属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApRef(String value) {
|
||||
this.apRef = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取kind属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TAssociationKindEnum }
|
||||
*
|
||||
*/
|
||||
public TAssociationKindEnum getKind() {
|
||||
return kind;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置kind属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TAssociationKindEnum }
|
||||
*
|
||||
*/
|
||||
public void setKind(TAssociationKindEnum value) {
|
||||
this.kind = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取associationID属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAssociationID() {
|
||||
return associationID;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置associationID属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAssociationID(String value) {
|
||||
this.associationID = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取initiator属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TAssociationInitiator }
|
||||
*
|
||||
*/
|
||||
public TAssociationInitiator getInitiator() {
|
||||
if (initiator == null) {
|
||||
return TAssociationInitiator.CLIENT;
|
||||
} else {
|
||||
return initiator;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置initiator属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TAssociationInitiator }
|
||||
*
|
||||
*/
|
||||
public void setInitiator(TAssociationInitiator value) {
|
||||
this.initiator = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取prefix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPrefix() {
|
||||
if (prefix == null) {
|
||||
return "";
|
||||
} else {
|
||||
return prefix;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置prefix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPrefix(String value) {
|
||||
this.prefix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLnClass().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getLnClass() {
|
||||
if (lnClass == null) {
|
||||
lnClass = new ArrayList<String>();
|
||||
}
|
||||
return this.lnClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnInst(String value) {
|
||||
this.lnInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnUuid() {
|
||||
return lnUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnUuid(String value) {
|
||||
this.lnUuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取iedName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedName() {
|
||||
return iedName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedName(String value) {
|
||||
this.iedName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdInst(String value) {
|
||||
this.ldInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取desc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDesc() {
|
||||
if (desc == null) {
|
||||
return "";
|
||||
} else {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置desc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDesc(String value) {
|
||||
this.desc = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlEnumValue;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAssociationInitiator的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tAssociationInitiator">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}token">
|
||||
* <enumeration value="client"/>
|
||||
* <enumeration value="server"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tAssociationInitiator")
|
||||
@XmlEnum
|
||||
public enum TAssociationInitiator {
|
||||
|
||||
@XmlEnumValue("client")
|
||||
CLIENT("client"),
|
||||
@XmlEnumValue("server")
|
||||
SERVER("server");
|
||||
private final String value;
|
||||
|
||||
TAssociationInitiator(String v) {
|
||||
value = v;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static TAssociationInitiator fromValue(String v) {
|
||||
for (TAssociationInitiator c: TAssociationInitiator.values()) {
|
||||
if (c.value.equals(v)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlEnumValue;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAssociationKindEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tAssociationKindEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}token">
|
||||
* <enumeration value="pre-established"/>
|
||||
* <enumeration value="predefined"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tAssociationKindEnum")
|
||||
@XmlEnum
|
||||
public enum TAssociationKindEnum {
|
||||
|
||||
@XmlEnumValue("pre-established")
|
||||
PRE_ESTABLISHED("pre-established"),
|
||||
@XmlEnumValue("predefined")
|
||||
PREDEFINED("predefined");
|
||||
private final String value;
|
||||
|
||||
TAssociationKindEnum(String v) {
|
||||
value = v;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static TAssociationKindEnum fromValue(String v) {
|
||||
for (TAssociationKindEnum c: TAssociationKindEnum.values()) {
|
||||
if (c.value.equals(v)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlEnumValue;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tAuthenticationEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tAuthenticationEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}Name">
|
||||
* <enumeration value="none"/>
|
||||
* <enumeration value="password"/>
|
||||
* <enumeration value="weak"/>
|
||||
* <enumeration value="strong"/>
|
||||
* <enumeration value="certificate"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tAuthenticationEnum")
|
||||
@XmlEnum
|
||||
public enum TAuthenticationEnum {
|
||||
|
||||
@XmlEnumValue("none")
|
||||
NONE("none"),
|
||||
@XmlEnumValue("password")
|
||||
PASSWORD("password"),
|
||||
@XmlEnumValue("weak")
|
||||
WEAK("weak"),
|
||||
@XmlEnumValue("strong")
|
||||
STRONG("strong"),
|
||||
@XmlEnumValue("certificate")
|
||||
CERTIFICATE("certificate");
|
||||
private final String value;
|
||||
|
||||
TAuthenticationEnum(String v) {
|
||||
value = v;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static TAuthenticationEnum fromValue(String v) {
|
||||
for (TAuthenticationEnum c: TAuthenticationEnum.values()) {
|
||||
if (c.value.equals(v)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tBDA complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tBDA">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tAbstractDataAttribute">
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tBDA")
|
||||
public class TBDA
|
||||
extends TAbstractDataAttribute
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAnyAttribute;
|
||||
import javax.xml.bind.annotation.XmlAnyElement;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.namespace.QName;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tBaseElement complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tBaseElement">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <sequence>
|
||||
* <any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Text" type="{http://www.iec.ch/61850/2003/SCL}tText" minOccurs="0"/>
|
||||
* <element name="Private" type="{http://www.iec.ch/61850/2003/SCL}tPrivate" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tBaseElement", propOrder = {
|
||||
"any",
|
||||
"text",
|
||||
"_private"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
THeaderSclRef.class,
|
||||
TIEDSclRef.class,
|
||||
TMinRequestedSCDFiles.class,
|
||||
TDORef.class,
|
||||
TNaming.class,
|
||||
TIDNaming.class,
|
||||
SCL.class,
|
||||
TUnNaming.class
|
||||
})
|
||||
public abstract class TBaseElement {
|
||||
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> any;
|
||||
@XmlElement(name = "Text")
|
||||
protected TText text;
|
||||
@XmlElement(name = "Private")
|
||||
protected List<TPrivate> _private;
|
||||
@XmlAnyAttribute
|
||||
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
|
||||
|
||||
/**
|
||||
* Gets the value of the any property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the any property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getAny().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Element }
|
||||
* {@link Object }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getAny() {
|
||||
if (any == null) {
|
||||
any = new ArrayList<Object>();
|
||||
}
|
||||
return this.any;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取text属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TText }
|
||||
*
|
||||
*/
|
||||
public TText getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置text属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TText }
|
||||
*
|
||||
*/
|
||||
public void setText(TText value) {
|
||||
this.text = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the private property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the private property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getPrivate().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TPrivate }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TPrivate> getPrivate() {
|
||||
if (_private == null) {
|
||||
_private = new ArrayList<TPrivate>();
|
||||
}
|
||||
return this._private;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a map that contains attributes that aren't bound to any typed property on this class.
|
||||
*
|
||||
* <p>
|
||||
* the map is keyed by the name of the attribute and
|
||||
* the value is the string value of the attribute.
|
||||
*
|
||||
* the map returned by this method is live, and you can add new attribute
|
||||
* by updating the map directly. Because of this design, there's no setter.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
* always non-null
|
||||
*/
|
||||
public Map<QName, String> getOtherAttributes() {
|
||||
return otherAttributes;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tBay complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tBay">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tEquipmentContainer">
|
||||
* <sequence>
|
||||
* <element name="ConductingEquipment" type="{http://www.iec.ch/61850/2003/SCL}tConductingEquipment" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="ConnectivityNode" type="{http://www.iec.ch/61850/2003/SCL}tConnectivityNode" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Function" type="{http://www.iec.ch/61850/2003/SCL}tFunction" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tBay", propOrder = {
|
||||
"conductingEquipment",
|
||||
"connectivityNode",
|
||||
"function"
|
||||
})
|
||||
public class TBay
|
||||
extends TEquipmentContainer
|
||||
{
|
||||
|
||||
@XmlElement(name = "ConductingEquipment")
|
||||
protected List<TConductingEquipment> conductingEquipment;
|
||||
@XmlElement(name = "ConnectivityNode")
|
||||
protected List<TConnectivityNode> connectivityNode;
|
||||
@XmlElement(name = "Function")
|
||||
protected List<TFunction> function;
|
||||
|
||||
/**
|
||||
* Gets the value of the conductingEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the conductingEquipment property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getConductingEquipment().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TConductingEquipment }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TConductingEquipment> getConductingEquipment() {
|
||||
if (conductingEquipment == null) {
|
||||
conductingEquipment = new ArrayList<TConductingEquipment>();
|
||||
}
|
||||
return this.conductingEquipment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the connectivityNode property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the connectivityNode property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getConnectivityNode().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TConnectivityNode }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TConnectivityNode> getConnectivityNode() {
|
||||
if (connectivityNode == null) {
|
||||
connectivityNode = new ArrayList<TConnectivityNode>();
|
||||
}
|
||||
return this.connectivityNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the function property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the function property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getFunction().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TFunction }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TFunction> getFunction() {
|
||||
if (function == null) {
|
||||
function = new ArrayList<TFunction>();
|
||||
}
|
||||
return this.function;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.XmlValue;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tBitRateInMbPerSec complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tBitRateInMbPerSec">
|
||||
* <simpleContent>
|
||||
* <extension base="<http://www.w3.org/2001/XMLSchema>decimal">
|
||||
* <attribute name="unit" type="{http://www.w3.org/2001/XMLSchema}normalizedString" fixed="b/s" />
|
||||
* <attribute name="multiplier" type="{http://www.iec.ch/61850/2003/SCL}tUnitMultiplierEnum" fixed="M" />
|
||||
* </extension>
|
||||
* </simpleContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tBitRateInMbPerSec", propOrder = {
|
||||
"value"
|
||||
})
|
||||
public class TBitRateInMbPerSec {
|
||||
|
||||
@XmlValue
|
||||
protected BigDecimal value;
|
||||
@XmlAttribute(name = "unit")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String unit;
|
||||
@XmlAttribute(name = "multiplier")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String multiplier;
|
||||
|
||||
/**
|
||||
* 获取value属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link BigDecimal }
|
||||
*
|
||||
*/
|
||||
public BigDecimal getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置value属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link BigDecimal }
|
||||
*
|
||||
*/
|
||||
public void setValue(BigDecimal value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取unit属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUnit() {
|
||||
if (unit == null) {
|
||||
return "b/s";
|
||||
} else {
|
||||
return unit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置unit属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUnit(String value) {
|
||||
this.unit = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取multiplier属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getMultiplier() {
|
||||
if (multiplier == null) {
|
||||
return "M";
|
||||
} else {
|
||||
return multiplier;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置multiplier属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setMultiplier(String value) {
|
||||
this.multiplier = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tCert complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tCert">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <attribute name="commonName" use="required">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
|
||||
* <minLength value="4"/>
|
||||
* <pattern value="none"/>
|
||||
* <pattern value="CN=.+"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="idHierarchy" use="required">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
|
||||
* <minLength value="1"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tCert")
|
||||
public class TCert {
|
||||
|
||||
@XmlAttribute(name = "commonName", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String commonName;
|
||||
@XmlAttribute(name = "idHierarchy", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String idHierarchy;
|
||||
|
||||
/**
|
||||
* 获取commonName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getCommonName() {
|
||||
return commonName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置commonName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setCommonName(String value) {
|
||||
this.commonName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取idHierarchy属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIdHierarchy() {
|
||||
return idHierarchy;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置idHierarchy属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIdHierarchy(String value) {
|
||||
this.idHierarchy = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tCertificate complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tCertificate">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tNaming">
|
||||
* <sequence>
|
||||
* <element name="Subject" type="{http://www.iec.ch/61850/2003/SCL}tCert"/>
|
||||
* <element name="IssuerName" type="{http://www.iec.ch/61850/2003/SCL}tCert"/>
|
||||
* </sequence>
|
||||
* <attribute name="xferNumber" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
|
||||
* <attribute name="serialNumber" use="required">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
|
||||
* <minLength value="1"/>
|
||||
* <pattern value="[0-9]+"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tCertificate", propOrder = {
|
||||
"subject",
|
||||
"issuerName"
|
||||
})
|
||||
public class TCertificate
|
||||
extends TNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Subject", required = true)
|
||||
protected TCert subject;
|
||||
@XmlElement(name = "IssuerName", required = true)
|
||||
protected TCert issuerName;
|
||||
@XmlAttribute(name = "xferNumber")
|
||||
@XmlSchemaType(name = "unsignedInt")
|
||||
protected Long xferNumber;
|
||||
@XmlAttribute(name = "serialNumber", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String serialNumber;
|
||||
|
||||
/**
|
||||
* 获取subject属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TCert }
|
||||
*
|
||||
*/
|
||||
public TCert getSubject() {
|
||||
return subject;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置subject属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TCert }
|
||||
*
|
||||
*/
|
||||
public void setSubject(TCert value) {
|
||||
this.subject = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取issuerName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TCert }
|
||||
*
|
||||
*/
|
||||
public TCert getIssuerName() {
|
||||
return issuerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置issuerName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TCert }
|
||||
*
|
||||
*/
|
||||
public void setIssuerName(TCert value) {
|
||||
this.issuerName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取xferNumber属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getXferNumber() {
|
||||
return xferNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置xferNumber属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setXferNumber(Long value) {
|
||||
this.xferNumber = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取serialNumber属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getSerialNumber() {
|
||||
return serialNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置serialNumber属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setSerialNumber(String value) {
|
||||
this.serialNumber = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,273 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tClientLN complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tClientLN">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agLNRef"/>
|
||||
* <attribute name="apRef" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tClientLN")
|
||||
public class TClientLN {
|
||||
|
||||
@XmlAttribute(name = "apRef", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String apRef;
|
||||
@XmlAttribute(name = "prefix")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String prefix;
|
||||
@XmlAttribute(name = "lnClass", required = true)
|
||||
protected List<String> lnClass;
|
||||
@XmlAttribute(name = "lnInst", required = true)
|
||||
protected String lnInst;
|
||||
@XmlAttribute(name = "lnUuid")
|
||||
protected String lnUuid;
|
||||
@XmlAttribute(name = "iedName", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String iedName;
|
||||
@XmlAttribute(name = "ldInst", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String ldInst;
|
||||
@XmlAttribute(name = "desc")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String desc;
|
||||
|
||||
/**
|
||||
* 获取apRef属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApRef() {
|
||||
return apRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apRef属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApRef(String value) {
|
||||
this.apRef = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取prefix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPrefix() {
|
||||
if (prefix == null) {
|
||||
return "";
|
||||
} else {
|
||||
return prefix;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置prefix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPrefix(String value) {
|
||||
this.prefix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLnClass().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getLnClass() {
|
||||
if (lnClass == null) {
|
||||
lnClass = new ArrayList<String>();
|
||||
}
|
||||
return this.lnClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnInst(String value) {
|
||||
this.lnInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnUuid() {
|
||||
return lnUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnUuid(String value) {
|
||||
this.lnUuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取iedName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedName() {
|
||||
return iedName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedName(String value) {
|
||||
this.iedName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdInst(String value) {
|
||||
this.ldInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取desc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDesc() {
|
||||
if (desc == null) {
|
||||
return "";
|
||||
} else {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置desc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDesc(String value) {
|
||||
this.desc = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,623 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tClientServices complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tClientServices">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <sequence>
|
||||
* <element name="TimeSyncProt" type="{http://www.iec.ch/61850/2003/SCL}tTimeSyncProt" minOccurs="0"/>
|
||||
* <element name="GOOSEMcSecurity" type="{http://www.iec.ch/61850/2003/SCL}tMcSecurity" minOccurs="0"/>
|
||||
* <element name="SVMcSecurity" type="{http://www.iec.ch/61850/2003/SCL}tMcSecurity" minOccurs="0"/>
|
||||
* <element name="Security" type="{http://www.iec.ch/61850/2003/SCL}tSecurity" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="goose" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="gsse" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="bufReport" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="unbufReport" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="readLog" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="sv" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="supportsLdName" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="maxAttributes">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}unsignedInt">
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="maxReports">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}unsignedInt">
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="maxGOOSE">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}unsignedInt">
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="maxSMV">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}unsignedInt">
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="rGOOSE" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="rSV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="noIctBinding" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="acceptServerInitiatedAssociation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tClientServices", propOrder = {
|
||||
"timeSyncProt",
|
||||
"gooseMcSecurity",
|
||||
"svMcSecurity",
|
||||
"security"
|
||||
})
|
||||
public class TClientServices {
|
||||
|
||||
@XmlElement(name = "TimeSyncProt")
|
||||
protected TTimeSyncProt timeSyncProt;
|
||||
@XmlElement(name = "GOOSEMcSecurity")
|
||||
protected TMcSecurity gooseMcSecurity;
|
||||
@XmlElement(name = "SVMcSecurity")
|
||||
protected TMcSecurity svMcSecurity;
|
||||
@XmlElement(name = "Security")
|
||||
protected TSecurity security;
|
||||
@XmlAttribute(name = "goose")
|
||||
protected Boolean goose;
|
||||
@XmlAttribute(name = "gsse")
|
||||
protected Boolean gsse;
|
||||
@XmlAttribute(name = "bufReport")
|
||||
protected Boolean bufReport;
|
||||
@XmlAttribute(name = "unbufReport")
|
||||
protected Boolean unbufReport;
|
||||
@XmlAttribute(name = "readLog")
|
||||
protected Boolean readLog;
|
||||
@XmlAttribute(name = "sv")
|
||||
protected Boolean sv;
|
||||
@XmlAttribute(name = "supportsLdName")
|
||||
protected Boolean supportsLdName;
|
||||
@XmlAttribute(name = "maxAttributes")
|
||||
protected Long maxAttributes;
|
||||
@XmlAttribute(name = "maxReports")
|
||||
protected Long maxReports;
|
||||
@XmlAttribute(name = "maxGOOSE")
|
||||
protected Long maxGOOSE;
|
||||
@XmlAttribute(name = "maxSMV")
|
||||
protected Long maxSMV;
|
||||
@XmlAttribute(name = "rGOOSE")
|
||||
protected Boolean rgoose;
|
||||
@XmlAttribute(name = "rSV")
|
||||
protected Boolean rsv;
|
||||
@XmlAttribute(name = "noIctBinding")
|
||||
protected Boolean noIctBinding;
|
||||
@XmlAttribute(name = "acceptServerInitiatedAssociation")
|
||||
protected Boolean acceptServerInitiatedAssociation;
|
||||
|
||||
/**
|
||||
* 获取timeSyncProt属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TTimeSyncProt }
|
||||
*
|
||||
*/
|
||||
public TTimeSyncProt getTimeSyncProt() {
|
||||
return timeSyncProt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置timeSyncProt属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TTimeSyncProt }
|
||||
*
|
||||
*/
|
||||
public void setTimeSyncProt(TTimeSyncProt value) {
|
||||
this.timeSyncProt = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取gooseMcSecurity属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TMcSecurity }
|
||||
*
|
||||
*/
|
||||
public TMcSecurity getGOOSEMcSecurity() {
|
||||
return gooseMcSecurity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置gooseMcSecurity属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TMcSecurity }
|
||||
*
|
||||
*/
|
||||
public void setGOOSEMcSecurity(TMcSecurity value) {
|
||||
this.gooseMcSecurity = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取svMcSecurity属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TMcSecurity }
|
||||
*
|
||||
*/
|
||||
public TMcSecurity getSVMcSecurity() {
|
||||
return svMcSecurity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置svMcSecurity属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TMcSecurity }
|
||||
*
|
||||
*/
|
||||
public void setSVMcSecurity(TMcSecurity value) {
|
||||
this.svMcSecurity = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取security属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TSecurity }
|
||||
*
|
||||
*/
|
||||
public TSecurity getSecurity() {
|
||||
return security;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置security属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TSecurity }
|
||||
*
|
||||
*/
|
||||
public void setSecurity(TSecurity value) {
|
||||
this.security = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取goose属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isGoose() {
|
||||
if (goose == null) {
|
||||
return false;
|
||||
} else {
|
||||
return goose;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置goose属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setGoose(Boolean value) {
|
||||
this.goose = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取gsse属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isGsse() {
|
||||
if (gsse == null) {
|
||||
return false;
|
||||
} else {
|
||||
return gsse;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置gsse属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setGsse(Boolean value) {
|
||||
this.gsse = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取bufReport属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isBufReport() {
|
||||
if (bufReport == null) {
|
||||
return false;
|
||||
} else {
|
||||
return bufReport;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置bufReport属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setBufReport(Boolean value) {
|
||||
this.bufReport = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取unbufReport属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isUnbufReport() {
|
||||
if (unbufReport == null) {
|
||||
return false;
|
||||
} else {
|
||||
return unbufReport;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置unbufReport属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setUnbufReport(Boolean value) {
|
||||
this.unbufReport = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取readLog属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isReadLog() {
|
||||
if (readLog == null) {
|
||||
return false;
|
||||
} else {
|
||||
return readLog;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置readLog属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setReadLog(Boolean value) {
|
||||
this.readLog = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取sv属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isSv() {
|
||||
if (sv == null) {
|
||||
return false;
|
||||
} else {
|
||||
return sv;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置sv属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setSv(Boolean value) {
|
||||
this.sv = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取supportsLdName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isSupportsLdName() {
|
||||
if (supportsLdName == null) {
|
||||
return false;
|
||||
} else {
|
||||
return supportsLdName;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置supportsLdName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setSupportsLdName(Boolean value) {
|
||||
this.supportsLdName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取maxAttributes属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getMaxAttributes() {
|
||||
return maxAttributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置maxAttributes属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setMaxAttributes(Long value) {
|
||||
this.maxAttributes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取maxReports属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getMaxReports() {
|
||||
return maxReports;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置maxReports属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setMaxReports(Long value) {
|
||||
this.maxReports = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取maxGOOSE属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getMaxGOOSE() {
|
||||
return maxGOOSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置maxGOOSE属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setMaxGOOSE(Long value) {
|
||||
this.maxGOOSE = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取maxSMV属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getMaxSMV() {
|
||||
return maxSMV;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置maxSMV属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setMaxSMV(Long value) {
|
||||
this.maxSMV = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取rgoose属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isRGOOSE() {
|
||||
if (rgoose == null) {
|
||||
return false;
|
||||
} else {
|
||||
return rgoose;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置rgoose属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setRGOOSE(Boolean value) {
|
||||
this.rgoose = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取rsv属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isRSV() {
|
||||
if (rsv == null) {
|
||||
return false;
|
||||
} else {
|
||||
return rsv;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置rsv属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setRSV(Boolean value) {
|
||||
this.rsv = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取noIctBinding属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isNoIctBinding() {
|
||||
if (noIctBinding == null) {
|
||||
return false;
|
||||
} else {
|
||||
return noIctBinding;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置noIctBinding属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setNoIctBinding(Boolean value) {
|
||||
this.noIctBinding = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取acceptServerInitiatedAssociation属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isAcceptServerInitiatedAssociation() {
|
||||
if (acceptServerInitiatedAssociation == null) {
|
||||
return false;
|
||||
} else {
|
||||
return acceptServerInitiatedAssociation;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置acceptServerInitiatedAssociation属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setAcceptServerInitiatedAssociation(Boolean value) {
|
||||
this.acceptServerInitiatedAssociation = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tCommProt complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tCommProt">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tServiceYesNo">
|
||||
* <attribute name="ipv6" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tCommProt")
|
||||
public class TCommProt
|
||||
extends TServiceYesNo
|
||||
{
|
||||
|
||||
@XmlAttribute(name = "ipv6")
|
||||
protected Boolean ipv6;
|
||||
|
||||
/**
|
||||
* 获取ipv6属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isIpv6() {
|
||||
if (ipv6 == null) {
|
||||
return false;
|
||||
} else {
|
||||
return ipv6;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ipv6属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setIpv6(Boolean value) {
|
||||
this.ipv6 = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tCommunication complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tCommunication">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="SubNetwork" type="{http://www.iec.ch/61850/2003/SCL}tSubNetwork" maxOccurs="unbounded"/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tCommunication", propOrder = {
|
||||
"subNetwork"
|
||||
})
|
||||
public class TCommunication
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "SubNetwork", required = true)
|
||||
protected List<TSubNetwork> subNetwork;
|
||||
|
||||
/**
|
||||
* Gets the value of the subNetwork property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the subNetwork property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSubNetwork().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSubNetwork }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TSubNetwork> getSubNetwork() {
|
||||
if (subNetwork == null) {
|
||||
subNetwork = new ArrayList<TSubNetwork>();
|
||||
}
|
||||
return this.subNetwork;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tConductingEquipment complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tConductingEquipment">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tAbstractConductingEquipment">
|
||||
* <sequence>
|
||||
* <element name="EqFunction" type="{http://www.iec.ch/61850/2003/SCL}tEqFunction" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="type" use="required" type="{http://www.iec.ch/61850/2003/SCL}tCommonConductingEquipmentEnum" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tConductingEquipment", propOrder = {
|
||||
"eqFunction"
|
||||
})
|
||||
public class TConductingEquipment
|
||||
extends TAbstractConductingEquipment
|
||||
{
|
||||
|
||||
@XmlElement(name = "EqFunction")
|
||||
protected List<TEqFunction> eqFunction;
|
||||
@XmlAttribute(name = "type", required = true)
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Gets the value of the eqFunction property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the eqFunction property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getEqFunction().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TEqFunction }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TEqFunction> getEqFunction() {
|
||||
if (eqFunction == null) {
|
||||
eqFunction = new ArrayList<TEqFunction>();
|
||||
}
|
||||
return this.eqFunction;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取type属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置type属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tConfLNs complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tConfLNs">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <attribute name="fixPrefix" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <attribute name="fixLnInst" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tConfLNs")
|
||||
public class TConfLNs {
|
||||
|
||||
@XmlAttribute(name = "fixPrefix")
|
||||
protected Boolean fixPrefix;
|
||||
@XmlAttribute(name = "fixLnInst")
|
||||
protected Boolean fixLnInst;
|
||||
|
||||
/**
|
||||
* 获取fixPrefix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isFixPrefix() {
|
||||
if (fixPrefix == null) {
|
||||
return false;
|
||||
} else {
|
||||
return fixPrefix;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置fixPrefix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setFixPrefix(Boolean value) {
|
||||
this.fixPrefix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取fixLnInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isFixLnInst() {
|
||||
if (fixLnInst == null) {
|
||||
return false;
|
||||
} else {
|
||||
return fixLnInst;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置fixLnInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setFixLnInst(Boolean value) {
|
||||
this.fixLnInst = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,287 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tConnectedAP complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tConnectedAP">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="Address" type="{http://www.iec.ch/61850/2003/SCL}tAddress" minOccurs="0"/>
|
||||
* <element name="GSE" type="{http://www.iec.ch/61850/2003/SCL}tGSE" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="SMV" type="{http://www.iec.ch/61850/2003/SCL}tSMV" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="PhysConn" type="{http://www.iec.ch/61850/2003/SCL}tPhysConn" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="iedName" use="required" type="{http://www.iec.ch/61850/2003/SCL}tIEDName" />
|
||||
* <attribute name="apName" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* <attribute name="redProt" type="{http://www.iec.ch/61850/2003/SCL}tRedProtEnum" />
|
||||
* <attribute name="apUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tConnectedAP", propOrder = {
|
||||
"address",
|
||||
"gse",
|
||||
"smv",
|
||||
"physConn"
|
||||
})
|
||||
public class TConnectedAP
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Address")
|
||||
protected TAddress address;
|
||||
@XmlElement(name = "GSE")
|
||||
protected List<TGSE> gse;
|
||||
@XmlElement(name = "SMV")
|
||||
protected List<TSMV> smv;
|
||||
@XmlElement(name = "PhysConn")
|
||||
protected List<TPhysConn> physConn;
|
||||
@XmlAttribute(name = "iedName", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String iedName;
|
||||
@XmlAttribute(name = "apName", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String apName;
|
||||
@XmlAttribute(name = "redProt")
|
||||
protected TRedProtEnum redProt;
|
||||
@XmlAttribute(name = "apUuid")
|
||||
protected String apUuid;
|
||||
|
||||
/**
|
||||
* 获取address属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TAddress }
|
||||
*
|
||||
*/
|
||||
public TAddress getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置address属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TAddress }
|
||||
*
|
||||
*/
|
||||
public void setAddress(TAddress value) {
|
||||
this.address = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the gse property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the gse property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getGSE().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TGSE }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TGSE> getGSE() {
|
||||
if (gse == null) {
|
||||
gse = new ArrayList<TGSE>();
|
||||
}
|
||||
return this.gse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the smv property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the smv property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSMV().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSMV }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TSMV> getSMV() {
|
||||
if (smv == null) {
|
||||
smv = new ArrayList<TSMV>();
|
||||
}
|
||||
return this.smv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the physConn property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the physConn property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getPhysConn().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TPhysConn }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TPhysConn> getPhysConn() {
|
||||
if (physConn == null) {
|
||||
physConn = new ArrayList<TPhysConn>();
|
||||
}
|
||||
return this.physConn;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取iedName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedName() {
|
||||
return iedName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedName(String value) {
|
||||
this.iedName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取apName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApName() {
|
||||
return apName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApName(String value) {
|
||||
this.apName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取redProt属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TRedProtEnum }
|
||||
*
|
||||
*/
|
||||
public TRedProtEnum getRedProt() {
|
||||
return redProt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置redProt属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TRedProtEnum }
|
||||
*
|
||||
*/
|
||||
public void setRedProt(TRedProtEnum value) {
|
||||
this.redProt = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取apUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApUuid() {
|
||||
return apUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApUuid(String value) {
|
||||
this.apUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tConnectivityNode complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tConnectivityNode">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tLNodeContainer">
|
||||
* <attribute name="pathName" use="required" type="{http://www.iec.ch/61850/2003/SCL}tConnectivityNodeReference" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tConnectivityNode")
|
||||
public class TConnectivityNode
|
||||
extends TLNodeContainer
|
||||
{
|
||||
|
||||
@XmlAttribute(name = "pathName", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String pathName;
|
||||
|
||||
/**
|
||||
* 获取pathName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPathName() {
|
||||
return pathName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置pathName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPathName(String value) {
|
||||
this.pathName = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tControl complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tControl">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agUuid"/>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tCBName" />
|
||||
* <attribute name="datSet" type="{http://www.iec.ch/61850/2003/SCL}tDataSetName" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tControl")
|
||||
@XmlSeeAlso({
|
||||
TControlWithTriggerOpt.class,
|
||||
TControlWithIEDName.class
|
||||
})
|
||||
public abstract class TControl
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "datSet")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String datSet;
|
||||
@XmlAttribute(name = "uuid")
|
||||
protected String uuid;
|
||||
@XmlAttribute(name = "templateUuid")
|
||||
protected String templateUuid;
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取datSet属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDatSet() {
|
||||
return datSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置datSet属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDatSet(String value) {
|
||||
this.datSet = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取uuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置uuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUuid(String value) {
|
||||
this.uuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取templateUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTemplateUuid() {
|
||||
return templateUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置templateUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTemplateUuid(String value) {
|
||||
this.templateUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tControlBlock complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tControlBlock">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="Address" type="{http://www.iec.ch/61850/2003/SCL}tAddress" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="ldInst" use="required" type="{http://www.iec.ch/61850/2003/SCL}tLDInst" />
|
||||
* <attribute name="cbName" use="required" type="{http://www.iec.ch/61850/2003/SCL}tCBName" />
|
||||
* <attribute name="cbUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tControlBlock", propOrder = {
|
||||
"address"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TGSE.class,
|
||||
TSMV.class
|
||||
})
|
||||
public abstract class TControlBlock
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Address")
|
||||
protected TAddress address;
|
||||
@XmlAttribute(name = "ldInst", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String ldInst;
|
||||
@XmlAttribute(name = "cbName", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String cbName;
|
||||
@XmlAttribute(name = "cbUuid")
|
||||
protected String cbUuid;
|
||||
|
||||
/**
|
||||
* 获取address属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TAddress }
|
||||
*
|
||||
*/
|
||||
public TAddress getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置address属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TAddress }
|
||||
*
|
||||
*/
|
||||
public void setAddress(TAddress value) {
|
||||
this.address = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdInst(String value) {
|
||||
this.ldInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取cbName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getCbName() {
|
||||
return cbName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置cbName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setCbName(String value) {
|
||||
this.cbName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取cbUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getCbUuid() {
|
||||
return cbUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置cbUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setCbUuid(String value) {
|
||||
this.cbUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,411 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.XmlValue;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tControlWithIEDName complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tControlWithIEDName">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tControl">
|
||||
* <sequence>
|
||||
* <element name="IEDName" maxOccurs="unbounded" minOccurs="0">
|
||||
* <complexType>
|
||||
* <simpleContent>
|
||||
* <extension base="<http://www.iec.ch/61850/2003/SCL>tIEDName">
|
||||
* <attribute name="apRef" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* <attribute name="ldInst" type="{http://www.iec.ch/61850/2003/SCL}tLDInst" />
|
||||
* <attribute name="prefix" type="{http://www.iec.ch/61850/2003/SCL}tPrefix" />
|
||||
* <attribute name="lnClass" type="{http://www.iec.ch/61850/2003/SCL}tLNClassEnum" />
|
||||
* <attribute name="lnInst" type="{http://www.iec.ch/61850/2003/SCL}tLNInst" />
|
||||
* <attribute name="apUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <attribute name="ldUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <attribute name="lnUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* </extension>
|
||||
* </simpleContent>
|
||||
* </complexType>
|
||||
* </element>
|
||||
* </sequence>
|
||||
* <attribute name="confRev" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tControlWithIEDName", propOrder = {
|
||||
"iedName"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TGSEControl.class,
|
||||
TSampledValueControl.class
|
||||
})
|
||||
public class TControlWithIEDName
|
||||
extends TControl
|
||||
{
|
||||
|
||||
@XmlElement(name = "IEDName")
|
||||
protected List<TControlWithIEDName.IEDName> iedName;
|
||||
@XmlAttribute(name = "confRev")
|
||||
@XmlSchemaType(name = "unsignedInt")
|
||||
protected Long confRev;
|
||||
|
||||
/**
|
||||
* Gets the value of the iedName property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the iedName property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getIEDName().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TControlWithIEDName.IEDName }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TControlWithIEDName.IEDName> getIEDName() {
|
||||
if (iedName == null) {
|
||||
iedName = new ArrayList<TControlWithIEDName.IEDName>();
|
||||
}
|
||||
return this.iedName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取confRev属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getConfRev() {
|
||||
return confRev;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置confRev属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setConfRev(Long value) {
|
||||
this.confRev = value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>anonymous complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType>
|
||||
* <simpleContent>
|
||||
* <extension base="<http://www.iec.ch/61850/2003/SCL>tIEDName">
|
||||
* <attribute name="apRef" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAccessPointName" />
|
||||
* <attribute name="ldInst" type="{http://www.iec.ch/61850/2003/SCL}tLDInst" />
|
||||
* <attribute name="prefix" type="{http://www.iec.ch/61850/2003/SCL}tPrefix" />
|
||||
* <attribute name="lnClass" type="{http://www.iec.ch/61850/2003/SCL}tLNClassEnum" />
|
||||
* <attribute name="lnInst" type="{http://www.iec.ch/61850/2003/SCL}tLNInst" />
|
||||
* <attribute name="apUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <attribute name="ldUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <attribute name="lnUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* </extension>
|
||||
* </simpleContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "", propOrder = {
|
||||
"value"
|
||||
})
|
||||
public static class IEDName {
|
||||
|
||||
@XmlValue
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String value;
|
||||
@XmlAttribute(name = "apRef", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String apRef;
|
||||
@XmlAttribute(name = "ldInst")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String ldInst;
|
||||
@XmlAttribute(name = "prefix")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String prefix;
|
||||
@XmlAttribute(name = "lnClass")
|
||||
protected List<String> lnClass;
|
||||
@XmlAttribute(name = "lnInst")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String lnInst;
|
||||
@XmlAttribute(name = "apUuid")
|
||||
protected String apUuid;
|
||||
@XmlAttribute(name = "ldUuid")
|
||||
protected String ldUuid;
|
||||
@XmlAttribute(name = "lnUuid")
|
||||
protected String lnUuid;
|
||||
|
||||
/**
|
||||
* 获取value属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置value属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取apRef属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApRef() {
|
||||
return apRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apRef属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApRef(String value) {
|
||||
this.apRef = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdInst(String value) {
|
||||
this.ldInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取prefix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置prefix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPrefix(String value) {
|
||||
this.prefix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLnClass().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getLnClass() {
|
||||
if (lnClass == null) {
|
||||
lnClass = new ArrayList<String>();
|
||||
}
|
||||
return this.lnClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnInst(String value) {
|
||||
this.lnInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取apUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getApUuid() {
|
||||
return apUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置apUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setApUuid(String value) {
|
||||
this.apUuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdUuid() {
|
||||
return ldUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdUuid(String value) {
|
||||
this.ldUuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnUuid() {
|
||||
return lnUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnUuid(String value) {
|
||||
this.lnUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tControlWithTriggerOpt complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tControlWithTriggerOpt">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tControl">
|
||||
* <sequence>
|
||||
* <element name="TrgOps" type="{http://www.iec.ch/61850/2003/SCL}tTrgOps" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="intgPd" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" default="0" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tControlWithTriggerOpt", propOrder = {
|
||||
"trgOps"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
TReportControl.class,
|
||||
TLogControl.class
|
||||
})
|
||||
public abstract class TControlWithTriggerOpt
|
||||
extends TControl
|
||||
{
|
||||
|
||||
@XmlElement(name = "TrgOps")
|
||||
protected TTrgOps trgOps;
|
||||
@XmlAttribute(name = "intgPd")
|
||||
@XmlSchemaType(name = "unsignedInt")
|
||||
protected Long intgPd;
|
||||
|
||||
/**
|
||||
* 获取trgOps属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TTrgOps }
|
||||
*
|
||||
*/
|
||||
public TTrgOps getTrgOps() {
|
||||
return trgOps;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置trgOps属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TTrgOps }
|
||||
*
|
||||
*/
|
||||
public void setTrgOps(TTrgOps value) {
|
||||
this.trgOps = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取intgPd属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public long getIntgPd() {
|
||||
if (intgPd == null) {
|
||||
return 0L;
|
||||
} else {
|
||||
return intgPd;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置intgPd属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setIntgPd(Long value) {
|
||||
this.intgPd = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,198 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDA complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDA">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tAbstractDataAttribute">
|
||||
* <sequence>
|
||||
* <element name="ProtNs" type="{http://www.iec.ch/61850/2003/SCL}tProtNs" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agDATrgOp"/>
|
||||
* <attribute name="fc" use="required" type="{http://www.iec.ch/61850/2003/SCL}tFCEnum" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDA", propOrder = {
|
||||
"protNs"
|
||||
})
|
||||
public class TDA
|
||||
extends TAbstractDataAttribute
|
||||
{
|
||||
|
||||
@XmlElement(name = "ProtNs")
|
||||
protected List<TProtNs> protNs;
|
||||
@XmlAttribute(name = "fc", required = true)
|
||||
protected String fc;
|
||||
@XmlAttribute(name = "dchg")
|
||||
protected Boolean dchg;
|
||||
@XmlAttribute(name = "qchg")
|
||||
protected Boolean qchg;
|
||||
@XmlAttribute(name = "dupd")
|
||||
protected Boolean dupd;
|
||||
|
||||
/**
|
||||
* Gets the value of the protNs property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the protNs property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getProtNs().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TProtNs }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TProtNs> getProtNs() {
|
||||
if (protNs == null) {
|
||||
protNs = new ArrayList<TProtNs>();
|
||||
}
|
||||
return this.protNs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取fc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getFc() {
|
||||
return fc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置fc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setFc(String value) {
|
||||
this.fc = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取dchg属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isDchg() {
|
||||
if (dchg == null) {
|
||||
return false;
|
||||
} else {
|
||||
return dchg;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置dchg属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setDchg(Boolean value) {
|
||||
this.dchg = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取qchg属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isQchg() {
|
||||
if (qchg == null) {
|
||||
return false;
|
||||
} else {
|
||||
return qchg;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置qchg属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setQchg(Boolean value) {
|
||||
this.qchg = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取dupd属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isDupd() {
|
||||
if (dupd == null) {
|
||||
return false;
|
||||
} else {
|
||||
return dupd;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置dupd属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setDupd(Boolean value) {
|
||||
this.dupd = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,254 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDAI complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDAI">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="Val" type="{http://www.iec.ch/61850/2003/SCL}tVal" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tAttributeNameEnum" />
|
||||
* <attribute name="sAddr">
|
||||
* <simpleType>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
|
||||
* <maxLength value="255"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </attribute>
|
||||
* <attribute name="valKind" type="{http://www.iec.ch/61850/2003/SCL}tValKindEnum" />
|
||||
* <attribute name="ix" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
|
||||
* <attribute name="valImport" type="{http://www.w3.org/2001/XMLSchema}boolean" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDAI", propOrder = {
|
||||
"val",
|
||||
"labels"
|
||||
})
|
||||
public class TDAI
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Val")
|
||||
protected List<TVal> val;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "sAddr")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String sAddr;
|
||||
@XmlAttribute(name = "valKind")
|
||||
protected TValKindEnum valKind;
|
||||
@XmlAttribute(name = "ix")
|
||||
@XmlSchemaType(name = "unsignedInt")
|
||||
protected Long ix;
|
||||
@XmlAttribute(name = "valImport")
|
||||
protected Boolean valImport;
|
||||
|
||||
/**
|
||||
* Gets the value of the val property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the val property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getVal().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TVal }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TVal> getVal() {
|
||||
if (val == null) {
|
||||
val = new ArrayList<TVal>();
|
||||
}
|
||||
return this.val;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取sAddr属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getSAddr() {
|
||||
return sAddr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置sAddr属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setSAddr(String value) {
|
||||
this.sAddr = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取valKind属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TValKindEnum }
|
||||
*
|
||||
*/
|
||||
public TValKindEnum getValKind() {
|
||||
return valKind;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置valKind属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TValKindEnum }
|
||||
*
|
||||
*/
|
||||
public void setValKind(TValKindEnum value) {
|
||||
this.valKind = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getIx() {
|
||||
return ix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setIx(Long value) {
|
||||
this.ix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取valImport属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isValImport() {
|
||||
return valImport;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置valImport属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setValImport(Boolean value) {
|
||||
this.valImport = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDAType complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDAType">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tIDNaming">
|
||||
* <sequence>
|
||||
* <element name="BDA" type="{http://www.iec.ch/61850/2003/SCL}tBDA" maxOccurs="unbounded"/>
|
||||
* <element name="ProtNs" type="{http://www.iec.ch/61850/2003/SCL}tProtNs" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="iedType" type="{http://www.iec.ch/61850/2003/SCL}tAnyName" default="" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDAType", propOrder = {
|
||||
"bda",
|
||||
"protNs",
|
||||
"labels"
|
||||
})
|
||||
public class TDAType
|
||||
extends TIDNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "BDA", required = true)
|
||||
protected List<TBDA> bda;
|
||||
@XmlElement(name = "ProtNs")
|
||||
protected List<TProtNs> protNs;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "iedType")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String iedType;
|
||||
|
||||
/**
|
||||
* Gets the value of the bda property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the bda property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getBDA().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TBDA }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TBDA> getBDA() {
|
||||
if (bda == null) {
|
||||
bda = new ArrayList<TBDA>();
|
||||
}
|
||||
return this.bda;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the protNs property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the protNs property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getProtNs().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TProtNs }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TProtNs> getProtNs() {
|
||||
if (protNs == null) {
|
||||
protNs = new ArrayList<TProtNs>();
|
||||
}
|
||||
return this.protNs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取iedType属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedType() {
|
||||
if (iedType == null) {
|
||||
return "";
|
||||
} else {
|
||||
return iedType;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedType属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedType(String value) {
|
||||
this.iedType = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDO complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDO">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tDataName" />
|
||||
* <attribute name="type" use="required" type="{http://www.iec.ch/61850/2003/SCL}tName" />
|
||||
* <attribute name="accessControl" type="{http://www.w3.org/2001/XMLSchema}normalizedString" />
|
||||
* <attribute name="transient" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDO", propOrder = {
|
||||
"labels"
|
||||
})
|
||||
public class TDO
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "type", required = true)
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String type;
|
||||
@XmlAttribute(name = "accessControl")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String accessControl;
|
||||
@XmlAttribute(name = "transient")
|
||||
protected Boolean _transient;
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取type属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置type属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取accessControl属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAccessControl() {
|
||||
return accessControl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置accessControl属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAccessControl(String value) {
|
||||
this.accessControl = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取transient属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public boolean isTransient() {
|
||||
if (_transient == null) {
|
||||
return false;
|
||||
} else {
|
||||
return _transient;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置transient属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setTransient(Boolean value) {
|
||||
this._transient = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElements;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDOI complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDOI">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <sequence>
|
||||
* <choice maxOccurs="unbounded" minOccurs="0">
|
||||
* <element name="SDI" type="{http://www.iec.ch/61850/2003/SCL}tSDI"/>
|
||||
* <element name="DAI" type="{http://www.iec.ch/61850/2003/SCL}tDAI"/>
|
||||
* </choice>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tDataName" />
|
||||
* <attribute name="ix" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
|
||||
* <attribute name="accessControl" type="{http://www.w3.org/2001/XMLSchema}normalizedString" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDOI", propOrder = {
|
||||
"sdiOrDAI",
|
||||
"labels"
|
||||
})
|
||||
public class TDOI
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElements({
|
||||
@XmlElement(name = "SDI", type = TSDI.class),
|
||||
@XmlElement(name = "DAI", type = TDAI.class)
|
||||
})
|
||||
protected List<TUnNaming> sdiOrDAI;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "ix")
|
||||
@XmlSchemaType(name = "unsignedInt")
|
||||
protected Long ix;
|
||||
@XmlAttribute(name = "accessControl")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String accessControl;
|
||||
|
||||
/**
|
||||
* Gets the value of the sdiOrDAI property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the sdiOrDAI property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSDIOrDAI().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSDI }
|
||||
* {@link TDAI }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TUnNaming> getSDIOrDAI() {
|
||||
if (sdiOrDAI == null) {
|
||||
sdiOrDAI = new ArrayList<TUnNaming>();
|
||||
}
|
||||
return this.sdiOrDAI;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getIx() {
|
||||
return ix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public void setIx(Long value) {
|
||||
this.ix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取accessControl属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAccessControl() {
|
||||
return accessControl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置accessControl属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAccessControl(String value) {
|
||||
this.accessControl = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,395 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlSchemaType;
|
||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDORef complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDORef">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tBaseElement">
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agDesc"/>
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agUuid"/>
|
||||
* <attribute name="iedName" type="{http://www.iec.ch/61850/2003/SCL}tIEDNameOrRelative" />
|
||||
* <attribute name="ldInst" type="{http://www.iec.ch/61850/2003/SCL}tLDInst" />
|
||||
* <attribute name="prefix" type="{http://www.iec.ch/61850/2003/SCL}tPrefix" />
|
||||
* <attribute name="lnClass" type="{http://www.iec.ch/61850/2003/SCL}tLNClassEnum" />
|
||||
* <attribute name="lnInst" type="{http://www.iec.ch/61850/2003/SCL}tLNInst" />
|
||||
* <attribute name="doName" type="{http://www.iec.ch/61850/2003/SCL}tFullDOName" />
|
||||
* <attribute name="pLN" type="{http://www.iec.ch/61850/2003/SCL}tLNClassEnum" />
|
||||
* <attribute name="pDO" type="{http://www.iec.ch/61850/2003/SCL}tFullDOName" />
|
||||
* <attribute name="lnUuid" type="{http://www.iec.ch/61850/2003/SCL}tUUIDAttribute" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDORef")
|
||||
@XmlSeeAlso({
|
||||
TExtRef.class,
|
||||
TExtCtrl.class
|
||||
})
|
||||
public abstract class TDORef
|
||||
extends TBaseElement
|
||||
{
|
||||
|
||||
@XmlAttribute(name = "iedName")
|
||||
protected String iedName;
|
||||
@XmlAttribute(name = "ldInst")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String ldInst;
|
||||
@XmlAttribute(name = "prefix")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String prefix;
|
||||
@XmlAttribute(name = "lnClass")
|
||||
protected List<String> lnClass;
|
||||
@XmlAttribute(name = "lnInst")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String lnInst;
|
||||
@XmlAttribute(name = "doName")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String doName;
|
||||
@XmlAttribute(name = "pLN")
|
||||
protected List<String> pln;
|
||||
@XmlAttribute(name = "pDO")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String pdo;
|
||||
@XmlAttribute(name = "lnUuid")
|
||||
protected String lnUuid;
|
||||
@XmlAttribute(name = "desc")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
@XmlSchemaType(name = "normalizedString")
|
||||
protected String desc;
|
||||
@XmlAttribute(name = "uuid")
|
||||
protected String uuid;
|
||||
@XmlAttribute(name = "templateUuid")
|
||||
protected String templateUuid;
|
||||
|
||||
/**
|
||||
* 获取iedName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedName() {
|
||||
return iedName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedName(String value) {
|
||||
this.iedName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ldInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLdInst() {
|
||||
return ldInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置ldInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLdInst(String value) {
|
||||
this.ldInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取prefix属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置prefix属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPrefix(String value) {
|
||||
this.prefix = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the lnClass property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLnClass().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getLnClass() {
|
||||
if (lnClass == null) {
|
||||
lnClass = new ArrayList<String>();
|
||||
}
|
||||
return this.lnClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnInst属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnInst() {
|
||||
return lnInst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnInst属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnInst(String value) {
|
||||
this.lnInst = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取doName属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDoName() {
|
||||
return doName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置doName属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDoName(String value) {
|
||||
this.doName = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the pln property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the pln property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getPLN().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getPLN() {
|
||||
if (pln == null) {
|
||||
pln = new ArrayList<String>();
|
||||
}
|
||||
return this.pln;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取pdo属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPDO() {
|
||||
return pdo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置pdo属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPDO(String value) {
|
||||
this.pdo = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lnUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLnUuid() {
|
||||
return lnUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置lnUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLnUuid(String value) {
|
||||
this.lnUuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取desc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDesc() {
|
||||
if (desc == null) {
|
||||
return "";
|
||||
} else {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置desc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDesc(String value) {
|
||||
this.desc = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取uuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置uuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUuid(String value) {
|
||||
this.uuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取templateUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTemplateUuid() {
|
||||
return templateUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置templateUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTemplateUuid(String value) {
|
||||
this.templateUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElements;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDOType complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDOType">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tIDNaming">
|
||||
* <sequence>
|
||||
* <choice maxOccurs="unbounded" minOccurs="0">
|
||||
* <element name="SDO" type="{http://www.iec.ch/61850/2003/SCL}tSDO"/>
|
||||
* <element name="DA" type="{http://www.iec.ch/61850/2003/SCL}tDA"/>
|
||||
* </choice>
|
||||
* <element name="Labels" type="{http://www.iec.ch/61850/2003/SCL}tLabels" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <attribute name="iedType" type="{http://www.iec.ch/61850/2003/SCL}tAnyName" default="" />
|
||||
* <attribute name="cdc" use="required" type="{http://www.iec.ch/61850/2003/SCL}tCDCEnum" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDOType", propOrder = {
|
||||
"sdoOrDA",
|
||||
"labels"
|
||||
})
|
||||
public class TDOType
|
||||
extends TIDNaming
|
||||
{
|
||||
|
||||
@XmlElements({
|
||||
@XmlElement(name = "SDO", type = TSDO.class),
|
||||
@XmlElement(name = "DA", type = TDA.class)
|
||||
})
|
||||
protected List<TUnNaming> sdoOrDA;
|
||||
@XmlElement(name = "Labels")
|
||||
protected TLabels labels;
|
||||
@XmlAttribute(name = "iedType")
|
||||
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
|
||||
protected String iedType;
|
||||
@XmlAttribute(name = "cdc", required = true)
|
||||
protected String cdc;
|
||||
|
||||
/**
|
||||
* Gets the value of the sdoOrDA property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the sdoOrDA property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSDOOrDA().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TSDO }
|
||||
* {@link TDA }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TUnNaming> getSDOOrDA() {
|
||||
if (sdoOrDA == null) {
|
||||
sdoOrDA = new ArrayList<TUnNaming>();
|
||||
}
|
||||
return this.sdoOrDA;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取labels属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public TLabels getLabels() {
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置labels属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TLabels }
|
||||
*
|
||||
*/
|
||||
public void setLabels(TLabels value) {
|
||||
this.labels = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取iedType属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getIedType() {
|
||||
if (iedType == null) {
|
||||
return "";
|
||||
} else {
|
||||
return iedType;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置iedType属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setIedType(String value) {
|
||||
this.iedType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取cdc属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getCdc() {
|
||||
return cdc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置cdc属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setCdc(String value) {
|
||||
this.cdc = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDataSet complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDataSet">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.iec.ch/61850/2003/SCL}tUnNaming">
|
||||
* <choice maxOccurs="unbounded">
|
||||
* <element name="FCDA" type="{http://www.iec.ch/61850/2003/SCL}tFCDA"/>
|
||||
* </choice>
|
||||
* <attGroup ref="{http://www.iec.ch/61850/2003/SCL}agUuid"/>
|
||||
* <attribute name="name" use="required" type="{http://www.iec.ch/61850/2003/SCL}tDataSetName" />
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDataSet", propOrder = {
|
||||
"fcda"
|
||||
})
|
||||
public class TDataSet
|
||||
extends TUnNaming
|
||||
{
|
||||
|
||||
@XmlElement(name = "FCDA")
|
||||
protected List<TFCDA> fcda;
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
protected String name;
|
||||
@XmlAttribute(name = "uuid")
|
||||
protected String uuid;
|
||||
@XmlAttribute(name = "templateUuid")
|
||||
protected String templateUuid;
|
||||
|
||||
/**
|
||||
* Gets the value of the fcda property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the fcda property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getFCDA().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TFCDA }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TFCDA> getFCDA() {
|
||||
if (fcda == null) {
|
||||
fcda = new ArrayList<TFCDA>();
|
||||
}
|
||||
return this.fcda;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置name属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取uuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置uuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUuid(String value) {
|
||||
this.uuid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取templateUuid属性的值。
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTemplateUuid() {
|
||||
return templateUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置templateUuid属性的值。
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTemplateUuid(String value) {
|
||||
this.templateUuid = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDataTypeTemplates complex type的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="tDataTypeTemplates">
|
||||
* <complexContent>
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
|
||||
* <sequence>
|
||||
* <element name="LNodeType" type="{http://www.iec.ch/61850/2003/SCL}tLNodeType" maxOccurs="unbounded"/>
|
||||
* <element name="DOType" type="{http://www.iec.ch/61850/2003/SCL}tDOType" maxOccurs="unbounded"/>
|
||||
* <element name="DAType" type="{http://www.iec.ch/61850/2003/SCL}tDAType" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* <element name="EnumType" type="{http://www.iec.ch/61850/2003/SCL}tEnumType" maxOccurs="unbounded" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* </restriction>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "tDataTypeTemplates", propOrder = {
|
||||
"lNodeType",
|
||||
"doType",
|
||||
"daType",
|
||||
"enumType"
|
||||
})
|
||||
public class TDataTypeTemplates {
|
||||
|
||||
@XmlElement(name = "LNodeType", required = true)
|
||||
protected List<TLNodeType> lNodeType;
|
||||
@XmlElement(name = "DOType", required = true)
|
||||
protected List<TDOType> doType;
|
||||
@XmlElement(name = "DAType")
|
||||
protected List<TDAType> daType;
|
||||
@XmlElement(name = "EnumType")
|
||||
protected List<TEnumType> enumType;
|
||||
|
||||
/**
|
||||
* Gets the value of the lNodeType property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the lNodeType property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getLNodeType().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TLNodeType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TLNodeType> getLNodeType() {
|
||||
if (lNodeType == null) {
|
||||
lNodeType = new ArrayList<TLNodeType>();
|
||||
}
|
||||
return this.lNodeType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the doType property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the doType property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDOType().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TDOType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TDOType> getDOType() {
|
||||
if (doType == null) {
|
||||
doType = new ArrayList<TDOType>();
|
||||
}
|
||||
return this.doType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the daType property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the daType property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDAType().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TDAType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TDAType> getDAType() {
|
||||
if (daType == null) {
|
||||
daType = new ArrayList<TDAType>();
|
||||
}
|
||||
return this.daType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the enumType property.
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the enumType property.
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getEnumType().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link TEnumType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<TEnumType> getEnumType() {
|
||||
if (enumType == null) {
|
||||
enumType = new ArrayList<TEnumType>();
|
||||
}
|
||||
return this.enumType;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDomainLNGroupAEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tDomainLNGroupAEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}Name">
|
||||
* <length value="4"/>
|
||||
* <pattern value="A[A-Z]*"/>
|
||||
* <enumeration value="ANCR"/>
|
||||
* <enumeration value="ARCO"/>
|
||||
* <enumeration value="ARIS"/>
|
||||
* <enumeration value="ATCC"/>
|
||||
* <enumeration value="AVCO"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tDomainLNGroupAEnum")
|
||||
@XmlEnum
|
||||
public enum TDomainLNGroupAEnum {
|
||||
|
||||
ANCR,
|
||||
ARCO,
|
||||
ARIS,
|
||||
ATCC,
|
||||
AVCO;
|
||||
|
||||
public String value() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static TDomainLNGroupAEnum fromValue(String v) {
|
||||
return valueOf(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDomainLNGroupCEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tDomainLNGroupCEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}Name">
|
||||
* <length value="4"/>
|
||||
* <pattern value="C[A-Z]*"/>
|
||||
* <enumeration value="CALH"/>
|
||||
* <enumeration value="CCGR"/>
|
||||
* <enumeration value="CILO"/>
|
||||
* <enumeration value="CPOW"/>
|
||||
* <enumeration value="CSWI"/>
|
||||
* <enumeration value="CSYN"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tDomainLNGroupCEnum")
|
||||
@XmlEnum
|
||||
public enum TDomainLNGroupCEnum {
|
||||
|
||||
CALH,
|
||||
CCGR,
|
||||
CILO,
|
||||
CPOW,
|
||||
CSWI,
|
||||
CSYN;
|
||||
|
||||
public String value() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static TDomainLNGroupCEnum fromValue(String v) {
|
||||
return valueOf(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDomainLNGroupFEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tDomainLNGroupFEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}Name">
|
||||
* <length value="4"/>
|
||||
* <pattern value="F[A-Z]*"/>
|
||||
* <enumeration value="FCNT"/>
|
||||
* <enumeration value="FCSD"/>
|
||||
* <enumeration value="FFIL"/>
|
||||
* <enumeration value="FLIM"/>
|
||||
* <enumeration value="FPID"/>
|
||||
* <enumeration value="FRMP"/>
|
||||
* <enumeration value="FSPT"/>
|
||||
* <enumeration value="FXOT"/>
|
||||
* <enumeration value="FXUT"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tDomainLNGroupFEnum")
|
||||
@XmlEnum
|
||||
public enum TDomainLNGroupFEnum {
|
||||
|
||||
FCNT,
|
||||
FCSD,
|
||||
FFIL,
|
||||
FLIM,
|
||||
FPID,
|
||||
FRMP,
|
||||
FSPT,
|
||||
FXOT,
|
||||
FXUT;
|
||||
|
||||
public String value() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static TDomainLNGroupFEnum fromValue(String v) {
|
||||
return valueOf(v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.3.0 生成的
|
||||
// 请访问 <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
|
||||
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
|
||||
// 生成时间: 2026.03.02 时间 03:10:34 PM CST
|
||||
//
|
||||
|
||||
|
||||
package com.njcn.gather.icd.mapping.infrastructure.parser.generated;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>tDomainLNGroupGEnum的 Java 类。
|
||||
*
|
||||
* <p>以下模式片段指定包含在此类中的预期内容。
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="tDomainLNGroupGEnum">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}Name">
|
||||
* <length value="4"/>
|
||||
* <pattern value="G[A-Z]*"/>
|
||||
* <enumeration value="GAPC"/>
|
||||
* <enumeration value="GGIO"/>
|
||||
* <enumeration value="GLOG"/>
|
||||
* <enumeration value="GSAL"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "tDomainLNGroupGEnum")
|
||||
@XmlEnum
|
||||
public enum TDomainLNGroupGEnum {
|
||||
|
||||
GAPC,
|
||||
GGIO,
|
||||
GLOG,
|
||||
GSAL;
|
||||
|
||||
public String value() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static TDomainLNGroupGEnum fromValue(String v) {
|
||||
return valueOf(v);
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user