package com.njcn.gather.icd.mapping.pojo.bo.icd;

import lombok.Data;
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. 业务层全部依赖这个标准化模型，便于后续替换解析实现。
 */
@Data
public class IcdDocument {
    /** 原始 ICD 文件名。 */
    private String fileName;

    /** 当前选中的 IED 名称。 */
    private String iedName;

    /** 当前选中的逻辑设备实例名。 */
    private String ldInst;

    /** LD 输出前缀，通常去掉实例名尾部数字。 */
    private String ldPrefix;

    /** 当前解析到的主 IED 节点。 */
    private IedNode primaryIed;

    /** 当前参与映射生成的逻辑设备。 */
    private LogicalDeviceNode logicalDevice;

    /** 当前逻辑设备下的 LN0 和 LN 列表。 */
    private List<LnNode> logicalNodes = new ArrayList<LnNode>();

    /** 当前逻辑设备下的报告控制块列表。 */
    private List<ReportControlNode> reportControls = new ArrayList<ReportControlNode>();

    /** 当前逻辑设备下的数据集，key 为 DataSet 名称。 */
    private Map<String, DataSetNode> dataSets = new LinkedHashMap<String, DataSetNode>();
}