All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.taskurotta.service.hz.config.ComputeMetricsStatDataTask Maven / Gradle / Ivy

The newest version!
package ru.taskurotta.service.hz.config;

import ru.taskurotta.service.console.model.MetricsStatDataVO;
import ru.taskurotta.service.metrics.handler.MetricsDataHandler;
import ru.taskurotta.service.metrics.MetricsDataUtils;
import ru.taskurotta.service.metrics.RateUtils;
import ru.taskurotta.service.metrics.model.DataPointVO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.concurrent.Callable;

/**
 * User: dimadin
 * Date: 08.10.13 17:02
 */
public class ComputeMetricsStatDataTask implements Callable>, Serializable {

    private Collection metricsNames;
    private Collection actorIds;

    public ComputeMetricsStatDataTask(Collection metricsNames, Collection actorIds) {
        this.metricsNames = metricsNames;
        this.actorIds = actorIds;
    }

    @Override
    public Collection call() throws Exception {

        MetricsDataHandler metricsDataRetriever = MetricsDataHandler.getInstance();
        if (metricsDataRetriever == null) {
            return null;
        }

        Collection result = new ArrayList<>();

        for (String actorId: actorIds) {
            for (String metricName: metricsNames) {
                DataPointVO[] hourCounts = metricsDataRetriever.getCountsForLastHour(metricName, actorId);
                DataPointVO[] hourMeans = metricsDataRetriever.getMeansForLastHour(metricName, actorId);

                DataPointVO[] dayCounts = metricsDataRetriever.getCountsForLastDay(metricName, actorId);
                DataPointVO[] dayMeans = metricsDataRetriever.getMeansForLastDay(metricName, actorId);

                Date lastActivity = metricsDataRetriever.getLastActivityTime(metricName, actorId);

                MetricsStatDataVO statData = new MetricsStatDataVO();
                statData.setDatasetName(actorId);
                statData.setMetricName(metricName);
                statData.setLastActivity(lastActivity);

                statData.setMeanTimeDay(RateUtils.round(MetricsDataUtils.getMeanTime(dayMeans), 2));
                statData.setMeanTimeHour(RateUtils.round(MetricsDataUtils.getMeanTime(hourMeans), 2));
                statData.setTotalCountsDay(MetricsDataUtils.getTotalCounts(dayCounts));
                statData.setTotalCountsHour(MetricsDataUtils.getTotalCounts(hourCounts));

                result.add(statData);
            }
        }

        return result;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy