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

fi.evolver.basics.spring.status.component.TaskStatusReporter Maven / Gradle / Ivy

There is a newer version: 6.7.0
Show newest version
package fi.evolver.basics.spring.status.component;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import fi.evolver.basics.spring.job.JobStatusRepository;
import fi.evolver.basics.spring.job.entity.JobStatus;
import fi.evolver.basics.spring.status.model.ComponentStatus;
import fi.evolver.basics.spring.status.model.Reportable;


@Component
public class TaskStatusReporter implements Reportable {

    private final JobStatusRepository jobStatusRepository;


    @Autowired
    public TaskStatusReporter(JobStatusRepository jobStatusRepository) {
        this.jobStatusRepository = jobStatusRepository;
    }


    @Override
    public List getStatus() {
        return jobStatusRepository.findAll().stream()
                .map(TaskStatusReporter::getStatus)
                .collect(Collectors.toList());
    }


    private static ComponentStatus getStatus(JobStatus job) {
        LocalDateTime now = LocalDateTime.now();
        Map properties = new LinkedHashMap<>();
        properties.put("SuccessRate", Math.round(job.getSuccessRate() * 100));
        if (job.getLastFailureStart() != null)
            properties.put("TimeSinceFailureMs", Math.max(0L, ChronoUnit.MILLIS.between(job.getLastFailureStart(), now)));
        if (job.getLastSuccessStart() != null)
            properties.put("TimeSinceSuccessMs", Math.max(0L, ChronoUnit.MILLIS.between(job.getLastSuccessStart(), now)));
        if (job.getLastActualActivity() != null)
            properties.put("TimeSinceActivityMs", Math.max(0L, ChronoUnit.MILLIS.between(job.getLastActualActivity(), now)));
        return new ComponentStatus("Task", job.getName(), properties);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy