package schedframe.scheduling.manager.tasks; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import schedframe.scheduling.tasks.Job; import schedframe.scheduling.tasks.JobInterface; import schedframe.scheduling.tasks.Task; import schedframe.scheduling.tasks.TaskInterface; public abstract class AbstractJobRegistry /*extends ConcurrentHashMap*/ implements JobRegistry, Cloneable{ private static final long serialVersionUID = 8409060063583755824L; protected static final ConcurrentHashMap> jobs = new ConcurrentHashMap>(); protected AbstractJobRegistry(){ } public boolean addJob(JobInterface job) { jobs.put(job.getId(), job); return true; } public boolean addTask(TaskInterface task) { if(jobs.containsKey(task.getJobId())){ getJob(task.getJobId()).add((Task)task); return true; } else { return false; } } public JobInterface getJobInfo(String jobId) { return jobs.get(jobId); } public TaskInterface getTaskInfo(String jobId, String taskId) { Task task = null; Job job = getJob(jobId); if(job == null) return null; try { task = job.getTask(taskId); } catch (NoSuchFieldException e) { } return task; } public Job getJob(String jobId){ return (Job)jobs.get(jobId); } public List> getJobs(){ List> jobList = new ArrayList>(); for(String jobId:jobs.keySet()) { jobList.add(jobs.get(jobId)); } return jobList; } public List> getJobs(int status) { List> jobList = new ArrayList>(); synchronized (jobs) { for(String jobId:jobs.keySet()){ JobInterface job = jobs.get(jobId); if (job.getStatus() == status) { jobList.add(job); } } } return jobList; } }