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

Source Code of com.dianping.cat.report.page.model.dependency.HistoricalDependencyService

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

import java.util.Date;

import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.consumer.dependency.DependencyAnalyzer;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.consumer.dependency.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 HistoricalDependencyService extends BaseHistoricalModelService<DependencyReport> {
  @Inject
  private BucketManager m_bucketManager;

  @Inject
  private ReportServiceManager m_reportService;

  public HistoricalDependencyService() {
    super(DependencyAnalyzer.ID);
  }

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

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

    return report;
  }

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

  private DependencyReport getReportFromLocalDisk(long timestamp, String domain) throws Exception {
    Bucket<String> bucket = null;
    try {
      bucket = m_bucketManager.getReportBucket(timestamp, DependencyAnalyzer.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.dependency.HistoricalDependencyService

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.