Package com.dianping.cat.report.service

Source Code of com.dianping.cat.report.service.DefaultReportServiceManager

package com.dianping.cat.report.service;

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

import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.dal.jdbc.DalException;
import org.unidal.lookup.ContainerHolder;
import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.Cat;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.cross.CrossAnalyzer;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.dependency.DependencyAnalyzer;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.consumer.event.EventAnalyzer;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.heartbeat.HeartbeatAnalyzer;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.MatrixAnalyzer;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.metric.MetricAnalyzer;
import com.dianping.cat.consumer.metric.model.entity.MetricReport;
import com.dianping.cat.consumer.problem.ProblemAnalyzer;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.state.StateAnalyzer;
import com.dianping.cat.consumer.state.model.entity.StateReport;
import com.dianping.cat.consumer.top.TopAnalyzer;
import com.dianping.cat.consumer.top.model.entity.TopReport;
import com.dianping.cat.consumer.transaction.TransactionAnalyzer;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.core.dal.DailyReport;
import com.dianping.cat.core.dal.DailyReportDao;
import com.dianping.cat.core.dal.HourlyReport;
import com.dianping.cat.core.dal.HourlyReportContent;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.core.dal.MonthlyReport;
import com.dianping.cat.core.dal.MonthlyReportDao;
import com.dianping.cat.core.dal.MonthlyReportEntity;
import com.dianping.cat.core.dal.WeeklyReport;
import com.dianping.cat.core.dal.WeeklyReportDao;
import com.dianping.cat.core.dal.WeeklyReportEntity;
import com.dianping.cat.home.alert.report.entity.AlertReport;
import com.dianping.cat.home.bug.entity.BugReport;
import com.dianping.cat.home.dal.report.DailyReportContent;
import com.dianping.cat.home.dal.report.DailyReportContentDao;
import com.dianping.cat.home.dal.report.MonthlyReportContent;
import com.dianping.cat.home.dal.report.MonthlyReportContentDao;
import com.dianping.cat.home.dal.report.WeeklyReportContent;
import com.dianping.cat.home.dal.report.WeeklyReportContentDao;
import com.dianping.cat.home.heavy.entity.HeavyReport;
import com.dianping.cat.home.nettopo.entity.NetGraphSet;
import com.dianping.cat.home.router.entity.RouterConfig;
import com.dianping.cat.home.service.entity.ServiceReport;
import com.dianping.cat.home.utilization.entity.UtilizationReport;

@SuppressWarnings({ "rawtypes", "unchecked" })
public class DefaultReportServiceManager extends ContainerHolder implements ReportServiceManager, Initializable {

  @Inject
  private HourlyReportDao m_hourlyReportDao;

  @Inject
  private DailyReportDao m_dailyReportDao;

  @Inject
  private WeeklyReportDao m_weeklyReportDao;

  @Inject
  private MonthlyReportDao m_monthlyReportDao;

  @Inject
  private HourlyReportContentDao m_hourlyReportContentDao;

  @Inject
  private DailyReportContentDao m_dailyReportContentDao;

  @Inject
  private WeeklyReportContentDao m_weeklyReportContentDao;

  @Inject
  private MonthlyReportContentDao m_monthlyReportContentDao;

  private Map<String, ReportService> m_reportServices;

  @Override
  public void initialize() throws InitializationException {
    m_reportServices = lookupMap(ReportService.class);
  }

  @Override
  public boolean insertDailyReport(DailyReport report, byte[] content) {
    try {
      report.setContent("");
      m_dailyReportDao.insert(report);

      int id = report.getId();
      DailyReportContent proto = m_dailyReportContentDao.createLocal();

      proto.setReportId(id);
      proto.setContent(content);
      m_dailyReportContentDao.insert(proto);
      return true;
    } catch (DalException e) {
      Cat.logError(e);
      return false;
    }
  }

  @Override
  public boolean insertHourlyReport(HourlyReport report, byte[] content) {
    try {
      report.setContent("");
      m_hourlyReportDao.insert(report);

      int id = report.getId();
      HourlyReportContent proto = m_hourlyReportContentDao.createLocal();

      proto.setReportId(id);
      proto.setContent(content);
      m_hourlyReportContentDao.insert(proto);
      return true;
    } catch (DalException e) {
      Cat.logError(e);
      return false;
    }
  }

  @Override
  public boolean insertMonthlyReport(MonthlyReport report, byte[] content) {
    try {
      MonthlyReport monthReport = m_monthlyReportDao.findReportByDomainNamePeriod(report.getPeriod(),
            report.getDomain(), report.getName(), MonthlyReportEntity.READSET_FULL);

      if (monthReport != null) {
        MonthlyReportContent reportContent = m_monthlyReportContentDao.createLocal();

        reportContent.setKeyReportId(monthReport.getId());
        reportContent.setReportId(monthReport.getId());
        m_monthlyReportDao.deleteReportByDomainNamePeriod(report);
        m_monthlyReportContentDao.deleteByPK(reportContent);
      }
    } catch (Exception e) {
      Cat.logError(e);
    }

    try {
      m_monthlyReportDao.insert(report);

      int id = report.getId();
      MonthlyReportContent proto = m_monthlyReportContentDao.createLocal();

      proto.setReportId(id);
      proto.setContent(content);
      m_monthlyReportContentDao.insert(proto);

      return true;
    } catch (DalException e) {
      Cat.logError(e);
      return false;
    }
  }

  @Override
  public boolean insertWeeklyReport(WeeklyReport report, byte[] content) {
    try {
      WeeklyReport weeklyReport = m_weeklyReportDao.findReportByDomainNamePeriod(report.getPeriod(),
            report.getDomain(), report.getName(), WeeklyReportEntity.READSET_FULL);

      if (weeklyReport != null) {
        WeeklyReportContent reportContent = m_weeklyReportContentDao.createLocal();

        reportContent.setKeyReportId(weeklyReport.getId());
        reportContent.setReportId(weeklyReport.getId());
        m_weeklyReportContentDao.deleteByPK(reportContent);
        m_weeklyReportDao.deleteReportByDomainNamePeriod(report);
      }
    } catch (Exception e) {
      Cat.logError(e);
    }

    try {
      m_weeklyReportDao.insert(report);

      int id = report.getId();
      WeeklyReportContent proto = m_weeklyReportContentDao.createLocal();

      proto.setReportId(id);
      proto.setContent(content);
      m_weeklyReportContentDao.insert(proto);
      return true;
    } catch (DalException e) {
      Cat.logError(e);
      return false;
    }
  }

  @Override
  public AlertReport queryAlertReport(String domain, Date start, Date end) {
    ReportService<AlertReport> reportService = m_reportServices.get(Constants.REPORT_ALERT);

    return reportService.queryReport(domain, start, end);
  }

  public Set<String> queryAllDomainNames(Date start, Date end, String name) {
    ReportService<TransactionReport> reportService = m_reportServices.get(TransactionAnalyzer.ID);

    return reportService.queryAllDomainNames(start, end, name);
  }

  public BugReport queryBugReport(String domain, Date start, Date end) {
    ReportService<BugReport> reportService = m_reportServices.get(Constants.REPORT_BUG);

    return reportService.queryReport(domain, start, end);
  }

  public CrossReport queryCrossReport(String domain, Date start, Date end) {
    ReportService<CrossReport> reportService = m_reportServices.get(CrossAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public DependencyReport queryDependencyReport(String domain, Date start, Date end) {
    ReportService<DependencyReport> reportService = m_reportServices.get(DependencyAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public EventReport queryEventReport(String domain, Date start, Date end) {
    ReportService<EventReport> reportService = m_reportServices.get(EventAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public HeartbeatReport queryHeartbeatReport(String domain, Date start, Date end) {
    ReportService<HeartbeatReport> reportService = m_reportServices.get(HeartbeatAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public HeavyReport queryHeavyReport(String domain, Date start, Date end) {
    ReportService<HeavyReport> reportService = m_reportServices.get(Constants.REPORT_HEAVY);

    return reportService.queryReport(domain, start, end);
  }

  public MatrixReport queryMatrixReport(String domain, Date start, Date end) {
    ReportService<MatrixReport> reportService = m_reportServices.get(MatrixAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public MetricReport queryMetricReport(String domain, Date start, Date end) {
    ReportService<MetricReport> reportService = m_reportServices.get(MetricAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  @Override
  public NetGraphSet queryNetTopologyReport(String domain, Date start, Date end) {
    ReportService<NetGraphSet> reportService = m_reportServices.get(Constants.REPORT_NET_TOPOLOGY);

    return reportService.queryReport(domain, start, end);
  }

  public ProblemReport queryProblemReport(String domain, Date start, Date end) {
    ReportService<ProblemReport> reportService = m_reportServices.get(ProblemAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  @Override
   public RouterConfig queryRouterConfigReport(String domain, Date start, Date end) {
    ReportService<RouterConfig> reportService = m_reportServices.get(Constants.REPORT_ROUTER);

    return reportService.queryReport(domain, start, end);
   }

  public ServiceReport queryServiceReport(String domain, Date start, Date end) {
    ReportService<ServiceReport> reportService = m_reportServices.get(Constants.REPORT_SERVICE);

    return reportService.queryReport(domain, start, end);
  }

  public StateReport queryStateReport(String domain, Date start, Date end) {
    ReportService<StateReport> reportService = m_reportServices.get(StateAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public TopReport queryTopReport(String domain, Date start, Date end) {
    ReportService<TopReport> reportService = m_reportServices.get(TopAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  public TransactionReport queryTransactionReport(String domain, Date start, Date end) {
    ReportService<TransactionReport> reportService = m_reportServices.get(TransactionAnalyzer.ID);

    return reportService.queryReport(domain, start, end);
  }

  @Override
  public UtilizationReport queryUtilizationReport(String domain, Date start, Date end) {
    ReportService<UtilizationReport> reportService = m_reportServices.get(Constants.REPORT_UTILIZATION);

    return reportService.queryReport(domain, start, end);
  }

}
TOP

Related Classes of com.dianping.cat.report.service.DefaultReportServiceManager

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.