package com.zdjizhi.utils.functions.map; import cn.hutool.log.Log; import cn.hutool.log.LogFactory; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONWriter; import com.zdjizhi.common.config.GlobalConfig; import com.zdjizhi.common.pojo.AppProtocol; import com.zdjizhi.utils.StringUtil; import com.zdjizhi.utils.general.FormatConverterUtil; import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.util.Collector; /** * @author qidaijie * @Package com.zdjizhi.utils.functions * @Description: * @date 2021/7/2114:52 */ public class ResultFlatMap implements FlatMapFunction { private static final Log logger = LogFactory.get(); @Override @SuppressWarnings("unchecked") public void flatMap(AppProtocol appProtocol, Collector out) throws Exception { try { JSONObject tags = FormatConverterUtil.getTags(appProtocol); JSONObject conversion = FormatConverterUtil.structureConversion(appProtocol); String protocolStackId = tags.getString("protocol_stack_id"); out.collect(FormatConverterUtil.updateTagsData(conversion, tags)); tags.remove("app_name"); StringBuilder stringBuilder = new StringBuilder(); String[] protocolIds = protocolStackId.split(GlobalConfig.PROTOCOL_SPLITTER); int protocolIdsNum = protocolIds.length; for (int i = 0; i < protocolIdsNum - 1; i++) { if (StringUtil.isBlank(stringBuilder.toString())) { stringBuilder.append(protocolIds[i]); tags.put("protocol_stack_id", stringBuilder.toString()); out.collect(FormatConverterUtil.updateTagsData(conversion, tags)); } else { stringBuilder.append(".").append(protocolIds[i]); tags.put("protocol_stack_id", stringBuilder.toString()); conversion.put("tags", tags); out.collect(FormatConverterUtil.updateTagsData(conversion, tags)); } } } catch (RuntimeException e) { logger.error("An exception occurred during parsing the result data,error message is:" + e); e.printStackTrace(); } } }