Package com.dianping.cat.report.task.event

Source Code of com.dianping.cat.report.task.event.DailyEventGraphCreator

package com.dianping.cat.report.task.event;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.dianping.cat.consumer.event.EventAnalyzer;
import com.dianping.cat.consumer.event.model.entity.EventName;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.event.model.entity.EventType;
import com.dianping.cat.consumer.event.model.entity.Machine;
import com.dianping.cat.consumer.event.model.transform.BaseVisitor;
import com.dianping.cat.core.dal.DailyGraph;

public class DailyEventGraphCreator {

  private List<DailyGraph> m_graphs = new ArrayList<DailyGraph>();

  private EventReport m_report;

  public List<DailyGraph> buildDailygraph(EventReport report) {
    m_report = report;
    new EventReportVisitor().visitEventReport(report);

    return m_graphs;
  }

  private DailyGraph buildDailyGraph(String ip) {
    DailyGraph graph = new DailyGraph();

    graph.setDomain(m_report.getDomain());
    graph.setPeriod(m_report.getStartTime());
    graph.setName(EventAnalyzer.ID);
    graph.setIp(ip);
    graph.setType(3);
    graph.setCreationDate(new Date());
    return graph;
  }

  public class EventReportVisitor extends BaseVisitor {

    private String m_currentIp;

    private String m_currentType;

    private DailyGraph m_currentDailygraph;

    private StringBuilder m_summaryContent;

    private StringBuilder m_detailContent;

    @Override
    public void visitMachine(Machine machine) {
      m_currentIp = machine.getIp();
      m_currentDailygraph = buildDailyGraph(m_currentIp);
      m_graphs.add(m_currentDailygraph);
      m_summaryContent = new StringBuilder();
      m_detailContent = new StringBuilder();

      super.visitMachine(machine);
      m_currentDailygraph.setDetailContent(m_detailContent.toString());
      m_currentDailygraph.setSummaryContent(m_summaryContent.toString());
    }

    @Override
    public void visitName(EventName name) {
      // TYPE, NAME, TOTAL_COUNT, FAILURE_COUNT
      m_detailContent.append(m_currentType).append('\t');
      m_detailContent.append(name.getId()).append('\t');
      m_detailContent.append(name.getTotalCount()).append('\t');
      m_detailContent.append(name.getFailCount()).append('\t').append('\n');
      super.visitName(name);
    }

    @Override
    public void visitType(EventType type) {
      // TYPE, TOTAL_COUNT, FAILURE_COUNT
      m_currentType = type.getId();
      m_summaryContent.append(type.getId()).append('\t');
      m_summaryContent.append(type.getTotalCount()).append('\t');
      m_summaryContent.append(type.getFailCount()).append('\t').append('\n');
      super.visitType(type);
    }
  }
}
TOP

Related Classes of com.dianping.cat.report.task.event.DailyEventGraphCreator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.