private void checkTasks(JobInfo info) { if (keep(info)) { TaskInfo tinfo = info.getTaskInfo(); if (tinfo != null) { JobTreeElement[] toBeRemoved = null; boolean fire = false; JobTreeElement element = (JobTreeElement) tinfo.getParent(); synchronized (keptjobinfos) { if (element == info && !keptjobinfos.contains(tinfo)) { toBeRemoved = findJobsToRemove(element); keptjobinfos.add(tinfo); finishedTime.put(tinfo, new Long(System.currentTimeMillis())); } } if (toBeRemoved != null) { for (int i = 0; i < toBeRemoved.length; i++) { remove(toBeRemoved[i]); } } if (fire) { Object l[] = getListeners(); for (int i = 0; i < l.length; i++) { KeptJobsListener jv = (KeptJobsListener) l[i]; jv.finished(info); } } } } }
/** Add given Job to list of kept jobs. */ private void add(JobInfo info) { boolean fire = false; synchronized (keptjobinfos) { if (!keptjobinfos.contains(info)) { keptjobinfos.add(info); long now = System.currentTimeMillis(); finishedTime.put(info, new Long(now)); Object parent = info.getParent(); if (parent != null && !keptjobinfos.contains(parent)) { keptjobinfos.add(parent); finishedTime.put(parent, new Long(now)); } fire = true; } } if (fire) { Object l[] = getListeners(); for (int i = 0; i < l.length; i++) { KeptJobsListener jv = (KeptJobsListener) l[i]; jv.finished(info); } } }