/** * */ package com.ai.cloud.controller; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import com.ai.cloud.service.inter.IQueryTraceLogSer; import com.ai.cloud.util.Constants; import com.ai.cloud.vo.mvo.BuriedPointEntry; import freemarker.template.SimpleSequence; /** * 首面请求处理 * * @author tz * @date 2015年11月10日 下午2:41:30 * @version V0.3 */ @Controller public class HelloSkyWalkingUICtl { @Autowired IQueryTraceLogSer traceLogSer; private static Logger logger = LogManager.getLogger(HelloSkyWalkingUICtl.class); /*** * 默认首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "") public String showDefaultIndexPage(ModelMap root) throws Exception { showIndexPage(root, null); return "index"; } /*** * 默认首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/index") public String showIndexPage(ModelMap root) throws Exception { showIndexPage(root, null); return "index"; } /*** * 处理直接查看指定traceId首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/{traceId}") public String showIndexPageWithTraceId(ModelMap root, @PathVariable("traceId") String traceId) throws Exception { showIndexPage(root, null); root.put("traceId", traceId); return "index"; } private void showIndexPage(ModelMap root, String nullStr) { root.put(Constants.VERSION_STR, Constants.VERSION_VAL); } /*** * 调度链路日志页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/showTraceLog/{traceId}") public String showTraceLog(ModelMap root, @PathVariable("traceId") String traceId) throws Exception { // traceId = "bcb759bc12db474aa54bc4bea605cb81123"; Map traceLogMap = traceLogSer.queryLogByTraceId(traceId); if (traceLogMap != null && traceLogMap.size() > 0) { List valueList = new ArrayList(); valueList.addAll(traceLogMap.values()); final List endTime = new ArrayList(); endTime.add(0, 0l); Collections.sort(valueList, new Comparator() { @Override public int compare(BuriedPointEntry arg0, BuriedPointEntry arg1) { /** 顺道取出日志最大的结束时间 */ if (endTime.get(0) < arg0.getEndDate()) { endTime.set(0, arg0.getEndDate()); } if (endTime.get(0) < arg1.getEndDate()) { endTime.set(0, arg1.getEndDate()); } return arg0.getColId().compareTo(arg1.getColId()); } }); // int m = 1; // for (BuriedPointEntry tmpEntry : valueList) { // logger.info("sort result level:{} : {}", m++, tmpEntry); // } long beginTime = valueList.get(0).getStartDate(); root.put("valueList", valueList); root.put("spanTypeMap", Constants.SPAN_TYPE_MAP); root.put("statusCodeMap", Constants.STATUS_CODE_MAP); root.put("beginTime", beginTime); root.put("endTime", endTime.get(0)); } return "traceLog"; } /*** * 登录页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/login") public String login(ModelMap root) throws Exception { return "login"; } /*** * 退出 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/logout") public String logout(ModelMap root) throws Exception { return "traceLog"; } /*** * 404错误日志 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/404") public String show404Page(ModelMap root) throws Exception { return "404"; } /*** * 500错误日志 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/500") public String show500Page(ModelMap root) throws Exception { return "500"; } }