Package com.dianping.cat.report.page.model.event

Source Code of com.dianping.cat.report.page.model.event.HistoricalEventService

package com.dianping.cat.report.page.model.event;

import java.util.Date;

import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.consumer.event.EventAnalyzer;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.TimeHelper;
import com.dianping.cat.report.page.model.spi.internal.BaseHistoricalModelService;
import com.dianping.cat.report.service.ReportServiceManager;
import com.dianping.cat.service.ModelRequest;
import com.dianping.cat.storage.Bucket;
import com.dianping.cat.storage.BucketManager;

public class HistoricalEventService extends BaseHistoricalModelService<EventReport> {
  @Inject
  private BucketManager m_bucketManager;

  @Inject
  private ReportServiceManager m_reportService;

  public HistoricalEventService() {
    super(EventAnalyzer.ID);
  }

  @Override
  protected EventReport buildModel(ModelRequest request) throws Exception {
    String domain = request.getDomain();
    long date = request.getStartTime();
    EventReport report;

    if (isLocalMode()) {
      report = getReportFromLocalDisk(date, domain);
    } else {
      report = getReportFromDatabase(date, domain);
    }

    return report;
  }

  private EventReport getReportFromDatabase(long timestamp, String domain) throws Exception {
    return m_reportService.queryEventReport(domain, new Date(timestamp), new Date(timestamp + TimeHelper.ONE_HOUR));
  }

  private EventReport getReportFromLocalDisk(long timestamp, String domain) throws Exception {
    Bucket<String> bucket = null;

    try {
      bucket = m_bucketManager.getReportBucket(timestamp, EventAnalyzer.ID);
      String xml = bucket.findById(domain);

      return xml == null ? null : DefaultSaxParser.parse(xml);
    } finally {
      if (bucket != null) {
        m_bucketManager.closeBucket(bucket);
      }
    }
  }
}
TOP

Related Classes of com.dianping.cat.report.page.model.event.HistoricalEventService

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.