package com.github.signed.sandboxes.spring.data.bg; import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; public class JobHistory { public static JobHistory createFromUnsorted(List<Job> unsortedJobs) { List<Job> sortedEarlyFirst = unsortedJobs.stream().sorted(new Comparator<Job>() { @Override public int compare(Job o1, Job o2) { return o1.created.compareTo(o2.created); } }).collect(Collectors.toList()); return new JobHistory(sortedEarlyFirst); } private final List<Job> jobs; public JobHistory(List<Job> jobs) { this.jobs = jobs; } public Job jobAt(int index) { return jobs.get(index); } public Optional<JobInContext> earliestPendingJob() { for (int i = 0; i < jobs.size(); ++i) { Job job = jobs.get(i); if (JobState.Pending.equals(job.state)) { return Optional.of(new JobInContext(i, this)); } } return Optional.empty(); } }