Package com.rupertjones.globalcron.server.web.service

Source Code of com.rupertjones.globalcron.server.web.service.ExecutionsMuninReport

package com.rupertjones.globalcron.server.web.service;

import com.rupertjones.globalcron.common.domain.JobDescriptor;
import com.rupertjones.globalcron.common.domain.JobExecutionLog;
import com.rupertjones.globalcron.server.dao.JobDescriptorDAO;
import com.rupertjones.globalcron.server.dao.JobExecutionLogDAO;
import com.rupertjones.globalcron.server.web.munin.MuninGraphConfig;
import com.rupertjones.globalcron.server.web.munin.MuninGraphValueConfig;
import com.rupertjones.globalcron.server.web.munin.MuninReport;
import com.rupertjones.globalcron.server.web.munin.MuninResult;
import com.rupertjones.globalcron.server.web.munin.MuninResults;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

/**
* <p>&copy Rupert Jones 2011,2012</p>
*
* @author rup
*/
@Service
public class ExecutionsMuninReport implements MuninReport {

    public static final int RESULTS_PERIOD_MINUTES = 5;
    @Autowired
    private JobExecutionLogDAO jobExecutionLogDAO;

    @Autowired
    private JobDescriptorDAO jobDescriptorDAO;

    @Override
    public MuninGraphConfig getConfig() {
        MuninGraphConfig config = new MuninGraphConfig();
        config.setCategory("global-cron");
        config.setTitle("Executions");
        config.setVerticalLabel("Number of executions");

        int count = 1;

        for (JobDescriptor job : jobDescriptorDAO.findAll()) {
            MuninGraphValueConfig drawConfig = new MuninGraphValueConfig();
            drawConfig.setValueKey(job.getKey());
            drawConfig.setValueConfig("draw");
            drawConfig.setConfigValue((count == 1 ? "AREA" : "STACK"));
            drawConfig.setObject(job);
            config.addValueConfig(drawConfig);

            MuninGraphValueConfig labelConfig = new MuninGraphValueConfig();
            labelConfig.setValueKey(job.getKey());
            labelConfig.setValueConfig("label");
            labelConfig.setConfigValue(job.getKey());
            labelConfig.setObject(job);
            config.addValueConfig(labelConfig);
            count++;
        }

        return config;
    }

    @Override
    public MuninResults getResults() {
        DateTime then = new DateTime().minusMinutes(RESULTS_PERIOD_MINUTES);
        Collection<JobExecutionLog> logs = jobExecutionLogDAO.findAllSince(then);
        Map<String, AtomicInteger> record = new HashMap<String, AtomicInteger>();

        for (JobExecutionLog log : logs) {
            JobDescriptor job = log.getJob();
            if (record.containsKey(job.getKey())) {
                record.get(job.getKey()).getAndIncrement();
            } else {
                record.put(job.getKey(), new AtomicInteger(1));
            }
        }

        MuninResults results = new MuninResults();
        for (JobDescriptor job : jobDescriptorDAO.findAll()) {
            MuninResult result = new MuninResult();
            result.setKey(job.getKey());
            if (record.containsKey(job.getKey())) {
                AtomicInteger count = record.get(job.getKey());
                result.setValue(String.valueOf(count.get()));
            } else {
                result.setValue("0");
            }
            results.add(result);
        }
        return results;
    }
}
TOP

Related Classes of com.rupertjones.globalcron.server.web.service.ExecutionsMuninReport

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.