package com.openseedbox.models; import com.openseedbox.jobs.JobName; import com.openseedbox.jobs.LoggedJob; import java.util.*; import siena.Column; import siena.Table; @Table("job_event") public class JobEvent extends EventBase { @Column("job_class") private String jobClass; @Column("job_title") private String jobTitle; public JobEvent(LoggedJob job) { startDate = new Date(); jobClass = job.getClass().getName(); JobName n = job.getClass().getAnnotation(JobName.class); jobTitle = (n != null) ? n.value() : jobClass; this.insert(); } public static List<JobEvent> getLast30() { return JobEvent.all().order("-startDate").limit(30).fetch(); } public static List<JobEvent> getLast(Class<? extends LoggedJob> jobClass, int limit) { List<Class<? extends LoggedJob>> oneList = new ArrayList<Class<? extends LoggedJob>>(); oneList.add(jobClass); return getLastList(oneList, limit); } public static List<JobEvent> getLastList(List<Class<? extends LoggedJob>> jobClasses, int limit) { List<String> jobClassNames = new ArrayList<String>(); for (Class jobClass: jobClasses) { jobClassNames.add(jobClass.getName()); } return JobEvent.all().filter("jobClass IN", jobClassNames) .order("-startDate").limit(limit).fetch(); } public static void deleteOlderThan(Date date) { JobEvent.all().filter("startDate <", date).delete(); } /* Getters and Setters */ public String getJobClass() { return jobClass; } public void setJobClass(String jobClass) { this.jobClass = jobClass; } public String getJobTitle() { return jobTitle; } public void setJobTitle(String jobTitle) { this.jobTitle = jobTitle; } }