Package com.dianping.cat.report.task.metric

Source Code of com.dianping.cat.report.task.metric.MetricPointParser

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

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.dianping.cat.consumer.metric.model.entity.MetricItem;
import com.dianping.cat.consumer.metric.model.entity.Segment;
import com.dianping.cat.report.task.alert.MetricType;

public class MetricPointParser {

  private static final int POINT_NUMBER = 60;

  public double[] buildDailyData(List<MetricItem> items, MetricType type) {
    int size = items.size();
    double[] values = new double[24 * POINT_NUMBER];

    for (int i = 0; i < 24 * POINT_NUMBER; i++) {
      values[i] = -1;
    }
    for (int hour = 0; hour < size; hour++) {
      MetricItem item = items.get(hour);
      try {
        double[] oneHourValues = buildHourlyData(item, type);

        for (int minute = 0; minute < 60; minute++) {
          int index = hour * 60 + minute;
          values[index] = oneHourValues[minute];
        }
      } catch (Exception e) {
        continue;
      }
    }
    return values;
  }

  public double[] buildHourlyData(MetricItem item, MetricType type) {
    double[] result = new double[POINT_NUMBER];
    Map<Integer, Segment> map = item.getSegments();

    for (Entry<Integer, Segment> entry : map.entrySet()) {
      Integer minute = entry.getKey();
      Segment seg = entry.getValue();

      if (type == MetricType.AVG) {
        result[minute] = seg.getAvg();
      } else if (type == MetricType.COUNT) {
        result[minute] = (double) seg.getCount();
      } else if (type == MetricType.SUM) {
        result[minute] = seg.getSum();
      }
    }
    return result;
  }

}
TOP

Related Classes of com.dianping.cat.report.task.metric.MetricPointParser

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.