public void buildTrendGraph(Model model, Payload payload) { Date start = payload.getHistoryStartDate(); Date end = payload.getHistoryEndDate(); String type = payload.getType(); String name = payload.getName(); String display = name != null ? name : type; int size = (int) ((end.getTime() - start.getTime()) * 12 / TimeUtil.ONE_HOUR); String queryType = payload.getReportType(); List<Map<String, double[]>> allDatas = new ArrayList<Map<String, double[]>>(); long step = TimeUtil.ONE_MINUTE * 5; if (queryType.equalsIgnoreCase("day")) { Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload); Map<String, double[]> lastDayGraph = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_DAY), new Date(end.getTime() - TimeUtil.ONE_DAY), model, payload); Map<String, double[]> lastWeekGraph = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_WEEK), new Date(end.getTime() - TimeUtil.ONE_WEEK), model, payload); allDatas.add(currentGraph); allDatas.add(lastDayGraph); allDatas.add(lastWeekGraph); } else if (queryType.equalsIgnoreCase("week")) { Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload); Map<String, double[]> lastWeek = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_WEEK), new Date(end.getTime() - TimeUtil.ONE_WEEK), model, payload); allDatas.add(currentGraph); allDatas.add(lastWeek); } else if (queryType.equalsIgnoreCase("month")) { size = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_DAY); step = TimeUtil.ONE_DAY; Map<String, double[]> graphData = getGraphDatasFromDaily(start, end, model, payload); allDatas.add(graphData); } else { throw new RuntimeException("Error graph query type"); } LineChart item = buildTotal(allDatas, start, size, step, display, queryType); model.setHitTrend(item.getJsonString()); item = buildFail(allDatas, start, size, step, display, queryType); model.setFailureTrend(item.getJsonString()); }