Package com.dianping.cat.report.task.dependency

Source Code of com.dianping.cat.report.task.dependency.DependencyReportBuilder

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

import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.Cat;
import com.dianping.cat.configuration.NetworkInterfaceManager;
import com.dianping.cat.consumer.dependency.DependencyAnalyzer;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.helper.TimeHelper;
import com.dianping.cat.home.dal.report.TopologyGraphDao;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
import com.dianping.cat.home.dependency.graph.transform.DefaultNativeBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder;
import com.dianping.cat.report.service.ReportServiceManager;
import com.dianping.cat.report.task.spi.ReportTaskBuilder;

public class DependencyReportBuilder implements ReportTaskBuilder {

  public static final String ID = DependencyAnalyzer.ID;

  @Inject
  private ReportServiceManager m_reportService;

  @Inject
  private TopologyGraphBuilder m_graphBuilder;

  @Inject
  private TopologyGraphDao m_topologyGraphDao;

  @Override
  public boolean buildDailyTask(String name, String reportDomain, Date reportPeriod) {
    throw new UnsupportedOperationException("no daily report builder for dependency!");
  }

  @Override
  public boolean buildHourlyTask(String name, String reportDomain, Date reportPeriod) {
    Date end = new Date(reportPeriod.getTime() + TimeHelper.ONE_HOUR);
    Set<String> domains = m_reportService.queryAllDomainNames(reportPeriod, end, DependencyAnalyzer.ID);
    boolean result = true;

    m_graphBuilder.getGraphs().clear();
    for (String domain : domains) {
      DependencyReport report = m_reportService.queryDependencyReport(domain, reportPeriod, end);

      m_graphBuilder.visitDependencyReport(report);
    }

    Map<Long, TopologyGraph> graphs = m_graphBuilder.getGraphs();
    for (Entry<Long, TopologyGraph> entry : graphs.entrySet()) {
      try {
        Date date = new Date(entry.getKey());
        TopologyGraph graph = entry.getValue();

        com.dianping.cat.home.dal.report.TopologyGraph proto = m_topologyGraphDao.createLocal();
        String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress();

        proto.setType(3);
        proto.setPeriod(date);
        proto.setCreationDate(new Date());
        proto.setIp(ip);
        proto.setContent(DefaultNativeBuilder.build(graph));

        m_topologyGraphDao.insert(proto);
      } catch (Exception e) {
        result = false;
        Cat.logError(e);
      }
    }
    return result;
  }

  @Override
  public boolean buildMonthlyTask(String name, String reportDomain, Date reportPeriod) {
    throw new UnsupportedOperationException("no month report builder for dependency!");
  }

  @Override
  public boolean buildWeeklyTask(String name, String reportDomain, Date reportPeriod) {
    throw new UnsupportedOperationException("no week report builder for dependency!");
  }

}
TOP

Related Classes of com.dianping.cat.report.task.dependency.DependencyReportBuilder

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.