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

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

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.MonthlyReport;
import com.dianping.cat.core.dal.MonthlyReportDao;
import com.dianping.cat.core.dal.MonthlyReportEntity;
import com.dianping.cat.home.dal.report.MonthlyReportContent;
import com.dianping.cat.home.dal.report.MonthlyReportContentDao;
import com.dianping.cat.home.dal.report.MonthlyReportContentEntity;
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 MonthlyCapacityUpdater implements CapacityUpdater {

  @Inject
  private MonthlyReportDao m_monthlyReportDao;

  @Inject
  private MonthlyReportContentDao m_monthlyReportContentDao;

  @Inject
  private OverloadDao m_overloadDao;

  public static final String ID = "monthly_capacity_updater";

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

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

    while (true) {
      List<MonthlyReportContent> reports = m_monthlyReportContentDao.findOverloadReport(maxId,
          MonthlyReportContentEntity.READSET_LENGTH);

      for (MonthlyReportContent 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.MONTHLY_TYPE);

            try {
              MonthlyReport report = m_monthlyReportDao.findByPK(reportId, MonthlyReportEntity.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.MonthlyCapacityUpdater

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.