Package com.dianping.cat.report.task.overload

Source Code of com.dianping.cat.report.task.overload.DailyCapacityUpdater

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

import java.util.List;

import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.Cat;
import com.dianping.cat.core.dal.DailyReport;
import com.dianping.cat.core.dal.DailyReportDao;
import com.dianping.cat.core.dal.DailyReportEntity;
import com.dianping.cat.home.dal.report.DailyReportContent;
import com.dianping.cat.home.dal.report.DailyReportContentDao;
import com.dianping.cat.home.dal.report.DailyReportContentEntity;
import com.dianping.cat.home.dal.report.Overload;
import com.dianping.cat.home.dal.report.OverloadDao;
import com.dianping.cat.home.dal.report.OverloadEntity;

public class DailyCapacityUpdater implements CapacityUpdater {

  @Inject
  private DailyReportContentDao m_dailyReportContentDao;

  @Inject
  private DailyReportDao m_dailyReportDao;

  @Inject
  private OverloadDao m_overloadDao;

  public static final String ID = "daily_capacity_updater";

  @Override
  public String getId() {
    return ID;
  }

  @Override
  public void updateDBCapacity(double capacity) throws DalException {
    int maxId = m_overloadDao.findMaxIdByType(CapacityUpdater.DAILY_TYPE, OverloadEntity.READSET_MAXID).getMaxId();

    while (true) {
      List<DailyReportContent> reports = m_dailyReportContentDao.findOverloadReport(maxId,
          DailyReportContentEntity.READSET_LENGTH);

      for (DailyReportContent content : reports) {
        try {
          int reportId = content.getReportId();
          double contentLength = content.getContentLength();

          if (contentLength >= CapacityUpdater.CAPACITY) {
            Overload overload = m_overloadDao.createLocal();

            overload.setReportId(reportId);
            overload.setReportSize(contentLength);
            overload.setReportType(CapacityUpdater.DAILY_TYPE);

            try {
              DailyReport report = m_dailyReportDao.findByPK(reportId, DailyReportEntity.READSET_FULL);
              overload.setPeriod(report.getPeriod());
              m_overloadDao.insert(overload);
            } catch (DalNotFoundException e) {
            } catch (Exception e) {
              Cat.logError(e);
            }
          }
        } catch (Exception ex) {
          Cat.logError(ex);
        }
      }

      int size = reports.size();
      if (size == 0) {
        break;
      } else {
        maxId = reports.get(size - 1).getReportId();
      }
    }
  }

}
TOP

Related Classes of com.dianping.cat.report.task.overload.DailyCapacityUpdater

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.