private Object convertMapData()

in flink-doris-connector/src/main/java/org/apache/doris/flink/deserialization/converter/DorisRowConverter.java [319:349]


    private Object convertMapData(MapData map, LogicalType type) {
        Map<Object, Object> result = new HashMap<>();
        if (map instanceof GenericMapData) {
            GenericMapData gMap = (GenericMapData)map;
            for (Object key : ((GenericArrayData)gMap.keyArray()).toObjectArray()) {
                result.put(key, gMap.get(key));
            }
            return result;
        }
        if (map instanceof BinaryMapData) {
            BinaryMapData bMap = (BinaryMapData)map;
            LogicalType valueType = ((MapType)type).getValueType();
            Map<?, ?> javaMap = bMap.toJavaMap(((MapType) type).getKeyType(), valueType);
            for (Map.Entry<?,?> entry : javaMap.entrySet()) {
                String key = entry.getKey().toString();
                if (LogicalTypeRoot.MAP.equals(valueType.getTypeRoot())) {
                    result.put(key, convertMapData((MapData)entry.getValue(), valueType));
                }else if (LogicalTypeRoot.DATE.equals(valueType.getTypeRoot())) {
                    result.put(key, Date.valueOf(LocalDate.ofEpochDay((Integer)entry.getValue())).toString());
                }else if (LogicalTypeRoot.ARRAY.equals(valueType.getTypeRoot())) {
                    result.put(key, convertArrayData((ArrayData)entry.getValue(), valueType));
                }else if(entry.getValue() instanceof TimestampData){
                    result.put(key, ((TimestampData)entry.getValue()).toTimestamp().toString());
                }else{
                    result.put(key, entry.getValue().toString());
                }
            }
            return result;
        }
        throw new UnsupportedOperationException("Unsupported map data: " + map.getClass());
    }