/**
 * Copyright 2019 DH
 * All right reserved.
 * 项目名称: 大恒泰山系统
 * 创建日期:2024/1/31
 */
package org.ts.ddcs.metadata;

/***
 * Date:2024/1/31
 * Title: 数据流缓存表定义
 * Description：用于定义报文解析过程中产生的缓存数据参数
 * @author dylan
 * @version 1.0
 * Remark：认为有必要的其他信息
 */
public enum DataStreamCacheMetadata {
    /**
     * 包头数据,BYTE[] 数组
     */
    METADATA_PACKET_HEADER(0x00, "packet_header"),
    /**
     * 测站编码,BYTE[] 数组
     */
    METADATA_RTU_CODE(0x01, "rtu_code"),
    /**
     * 中心站地址,BYTE[] 数组
     */
    METADATA_CENTER_STATION_CODE(0x02, "center_station_code"),
    /**
     * 上报时间,BYTE[] 数组
     */
    METADATA_UP_TIME_BYTE(0x03, "up_time_byte"),
    /**
     * 水文密码
     */
    METADATA_SW_PW(0x04, "sw_pw"),
    /**
     * 接收时间,STRING,yyyyMMddHHmmss
     */
    METADATA_PICK_TIME(0x05, "pick_packet_time"),
    /**
     * 上报时间,STRING,yyyyMMddHHmmss
     */
    METADATA_UP_TIME(0x06, "up_time"),
    /**
     * 观测时间,STRING,yyyyMMddHHmmss
     */
    METADATA_COLLECT_TIME(0x07, "collect_time"),
    /**
     * 水资源规约传输方向位,0 下行报文 ，1 上行报文（RTU上报），INT
     */
    METADATA_SZY_CA_DIR(0x08, "szy_ca_dir"),

    /**
     * 水资源规约拆分标志位,0 单帧，1 多帧（控制域后增加一个字节，表示帧计数,255-1 ,1为最后一帧），INT
     */
    METADATA_SZY_CA_DIV(0x09, "szy_ca_div"),

    /**
     * 水资源规约拆分包数量,INT
     */
    METADATA_SZY_CA_DIV_COUNT(0x0A, "szy_ca_divs"),

    /**
     * 水资源规约帧计数位,重试发送计数，可设定一个值，发一次减1，0时发送失败,INT
     */
    METADATA_SZY_CA_FCB(0x0B, "szy_ca_fcb"),

    /**
     * 水资源规约控制码,INT
     */
    METADATA_SZY_CA_CODE(0x0C, "szy_ca_code"),

    /**
     * 水资源规约功能码 ,BYTE[] 数组
     */
    METADATA_SZY_AFN(0x0D, "szy_afn"),

    /**
     *
     */
    METADATA_SW_AFN(0x0E, "sw_afn"),
    /**
     * 数据域内容长度,BYTE[] 数组
     */
    METADATA_DATA_AREA_LEN(0x0F, "data_area_len"),
    /**
     * 数据域内容,BYTE[] 数组
     */
    METADATA_DATA_AREA(0x10, "data_area"),
    /**
     * 数据域内容开始标记
     */
    METADATA_DATA_AREA_START_FLAG(0x11, "data_area_start_flag"),
    /**
     * 数据域内容结束标记
     */
    METADATA_DATA_AREA_END_FLAG(0x12, "data_area_end_flag"),

    /**
     * CRC码,BYTE[] 数组
     */
    METADATA_CRC(0x13, "crc"),
    /**
     * 流水号
     */
    METADATA_SERIAL_NO(0x14, "serial_no"),

    /**
     * 测站类型
     */
    METADATA_SITE_KIND(0x15, "site_kind")
    ;

    private int code;

    private String name;

    DataStreamCacheMetadata(int code, String name) {
        this.code = code;
        this.name = name;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * 根据CODE查名称
     *
     * @param code
     * @return
     */
    public static String getName(int code) {
        for (DataStreamCacheMetadata point : DataStreamCacheMetadata.values()) {
            if (point.code == code) {
                return point.name;
            }
        }
        return "";
    }

    /**
     * 根据名称查代码
     *
     * @param name
     * @return
     */
    public static int getCode(String name) {
        for (DataStreamCacheMetadata point : DataStreamCacheMetadata.values()) {
            if (point.name.equals(name)) {
                return point.code;
            }
        }
        return -1;
    }
}
