Newer
Older
br-data-forwarding / src / main / java / com / casic / common / CasicFrameBuildFactory.java
tanyue on 3 Jul 2024 2 KB 20240703 初始提交
package com.casic.common;

import com.casic.tube.frame.HeartFrame;
import com.casic.tube.frame.brs.DataFrameBRS;
import com.casic.tube.frame.brs.EventFrameBRS;
import com.casic.tube.frame.brs.InfoFrameBRS;
import com.casic.tube.frame.IMEIFrame;
import com.casic.tube.frame.mhk.DataFrameMHK;
import com.casic.tube.frame.mhk.EventFrameMHK;
import com.casic.tube.frame.mhk.InfoFrameMHK;
import com.casic.tube.frame.tp.DataFrameHTTP;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class CasicFrameBuildFactory {

    public static CasicFrame buildCasicFrame(String messageType, String manufacturerCode) {
        switch (messageType) {
            case "00":
                return new HeartFrame();

            case "01":
                return buildEventFrame(manufacturerCode);

            case "02":
                return buildDataFrame(manufacturerCode);

            case "05":
                return new IMEIFrame();

            case "07":
                return buildInfoFrame(manufacturerCode);

            default:
                log.warn("上行消息类型不在范围内[" + messageType + "]");
                return null;
        }
    }

    private static CasicFrame buildDataFrame(String manufacturerCode) {
        switch (manufacturerCode) {
            case "15": // 百瑞生
                return new DataFrameBRS();

            case "16": // 麦哈克
                return new DataFrameMHK();

            case "17": // 航天拓扑
                return new DataFrameHTTP();

            default:
                return null;
        }
    }

    private static CasicFrame buildEventFrame(String manufacturerCode) {
        switch (manufacturerCode) {
            case "15":
                return new EventFrameBRS();

            case "16":
                return new EventFrameMHK();

            default:
                return null;
        }
    }

    private static CasicFrame buildInfoFrame(String manufacturerCode) {
        switch (manufacturerCode) {
            case "14":
                return new InfoFrameMHK();

            case "15":
                return new InfoFrameBRS();

            default:
                return null;
        }
    }
}