package com.sohu.cache.web.chart.model; import java.text.ParseException; import java.util.Date; import java.util.concurrent.TimeUnit; import com.sohu.cache.entity.AppCommandGroup; import com.sohu.cache.entity.AppCommandStats; import com.sohu.cache.entity.AppStats; import com.sohu.cache.web.util.DateUtil; /** * 用于显示chart的简单对象 * * @author leifu * @Time 2014年8月31日 */ public class SimpleChartData { /** * 时间戳 */ private Long x; /** * 用于表示y轴数量 */ private Long y; /** * 命令名 */ private String commandName; /** * 日期 */ private String date; public Long getX() { return x; } public void setX(Long x) { this.x = x; } public Long getY() { return y; } public void setY(Long y) { this.y = y; } public String getCommandName() { return commandName; } public void setCommandName(String commandName) { this.commandName = commandName; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } /** * AppCommandStats转换为SimpleChartData * * @param appCommandStats * @return * @throws ParseException */ public static SimpleChartData getFromAppCommandStats( AppCommandStats appCommandStats, Integer addDay) throws ParseException { SimpleChartData chartData = new SimpleChartData(); long collectTime = appCommandStats.getCollectTime(); String commandName = appCommandStats.getCommandName(); long commandCount = appCommandStats.getCommandCount(); Date dateTime = null; try { dateTime = DateUtil.parseYYYYMMddHHMM(String.valueOf(collectTime)); } catch (Exception e) { dateTime = DateUtil.parseYYYYMMddHH(String.valueOf(collectTime)); } Long x = dateTime.getTime(); if(addDay != null){ x += TimeUnit.DAYS.toMillis(1) * addDay; } Long y = commandCount; String date = null; try { date = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH:mm"); } catch (Exception e) { date = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH"); } chartData.setX(x); chartData.setY(y); chartData.setDate(date); chartData.setCommandName(commandName); return chartData; } /** * AppStats转换为SimpleChartData * * @param appStat * @param statName * 命中数、丢失数的字段 * @return * @throws ParseException */ public static SimpleChartData getFromAppStats(AppStats appStat, String statName) throws ParseException { SimpleChartData chartData = new SimpleChartData(); long collectTime = appStat.getCollectTime(); long count = 0; if ("hits".equals(statName)) { count = appStat.getHits(); } else if ("misses".equals(statName)) { count = appStat.getMisses(); } else if ("usedMemory".equals(statName)){ count = appStat.getUsedMemory() / 1024 / 1024; } else if ("netInput".equals(statName)) { count = appStat.getNetInputByte(); } else if ("netOutput".equals(statName)) { count = appStat.getNetOutputByte(); } Date dateTime = null; try { dateTime = DateUtil.parseYYYYMMddHHMM(String.valueOf(collectTime)); } catch (Exception e) { dateTime = DateUtil.parseYYYYMMddHH(String.valueOf(collectTime)); } Long x = dateTime.getTime(); Long y = count; String date = null; try { date = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH:mm"); } catch (Exception e) { date = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH"); } chartData.setX(x); chartData.setY(y); chartData.setDate(date); return chartData; } /** * AppCommandGroup转换为SimpleChartData用于显示pie图 * * @param appCommandGroup * @return */ public static SimpleChartData getFromAppCommandGroup( AppCommandGroup appCommandGroup) { SimpleChartData chartData = new SimpleChartData(); chartData.setCommandName(appCommandGroup.getCommandName()); chartData.setY(appCommandGroup.getCount()); return chartData; } @Override public String toString() { return "SimpleChartData [x=" + x + ", y=" + y + ", commandName=" + commandName + "]"; } }