ProtocolConverter.java 1.42 KB
package com.bsth.util;

import com.bsth.entity.AlarmData;
import com.bsth.entity.Data;
import com.bsth.entity.PeakData;
import com.bsth.entity.VehicleData;
import com.bsth.socket.protocol.*;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author Hill
 */
public class ProtocolConverter {

    public static Map<String, Object> convert(Message message) {
        Map<String, Object> result = new LinkedHashMap<>();
        IMessageBody messageBody = message.getMessageBody();

        if (messageBody instanceof Message02) {
            for (IMessageBody02 messageBody02 : ((Message02) messageBody).getBody02List()) {
                Data data = convert(messageBody02);
                if (data != null) {
                    result.put(data.getType(), data);
                }
            }

            if (result.size() > 0) {
                result.put("vin", message.getVin());
            }
        }

        return result;
    }

    public static Data convert(IMessageBody02 messageBody02) {

        if (messageBody02 instanceof Message0201) {
            return new VehicleData((Message0201) messageBody02);
        }

        if (messageBody02 instanceof Message0206) {
            return new PeakData((Message0206) messageBody02);
        }

        if (messageBody02 instanceof Message0207) {
            return new AlarmData((Message0207) messageBody02);
        }

        return null;
    }
}