2
|
1 package edu.unc.genomics;
|
|
2
|
|
3 import java.util.ArrayList;
|
|
4 import java.util.Iterator;
|
|
5 import java.util.List;
|
|
6
|
|
7 import javax.swing.ListModel;
|
|
8 import javax.swing.event.ListDataEvent;
|
|
9 import javax.swing.event.ListDataListener;
|
|
10
|
|
11 import org.apache.log4j.Logger;
|
|
12
|
|
13 /**
|
|
14 * Model for the queue of SubmittedJobs
|
|
15 * Should be managed through the JobQueueManager controller
|
|
16 *
|
|
17 * @author timpalpant
|
|
18 *
|
|
19 */
|
|
20 public class JobQueue implements ListModel<SubmittedJob>, Iterable<SubmittedJob> {
|
|
21
|
|
22 private static final Logger log = Logger.getLogger(JobQueue.class);
|
|
23
|
|
24 private final List<SubmittedJob> submittedJobs = new ArrayList<>();
|
|
25 private final List<ListDataListener> dataListeners = new ArrayList<>();
|
|
26
|
|
27 public void add(SubmittedJob job) {
|
|
28 int N = submittedJobs.size();
|
|
29 submittedJobs.add(job);
|
|
30 ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, N, N);
|
|
31 for (ListDataListener l : dataListeners) {
|
|
32 l.intervalAdded(e);
|
|
33 }
|
|
34 }
|
|
35
|
|
36 public void remove(SubmittedJob job) {
|
|
37 submittedJobs.remove(job);
|
|
38 int N = submittedJobs.size();
|
|
39 ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, N, N);
|
|
40 for (ListDataListener l : dataListeners) {
|
|
41 l.intervalAdded(e);
|
|
42 }
|
|
43 }
|
|
44
|
|
45 public void update(SubmittedJob job) {
|
|
46 int index = submittedJobs.indexOf(job);
|
|
47 ListDataEvent e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, index, index);
|
|
48 for (ListDataListener l : dataListeners) {
|
|
49 l.intervalAdded(e);
|
|
50 }
|
|
51 }
|
|
52
|
|
53 @Override
|
|
54 public int getSize() {
|
|
55 return submittedJobs.size();
|
|
56 }
|
|
57
|
|
58 @Override
|
|
59 public SubmittedJob getElementAt(int index) {
|
|
60 return submittedJobs.get(index);
|
|
61 }
|
|
62
|
|
63 @Override
|
|
64 public void addListDataListener(ListDataListener l) {
|
|
65 dataListeners.add(l);
|
|
66 }
|
|
67
|
|
68 @Override
|
|
69 public void removeListDataListener(ListDataListener l) {
|
|
70 dataListeners.remove(l);
|
|
71 }
|
|
72
|
|
73 @Override
|
|
74 public Iterator<SubmittedJob> iterator() {
|
|
75 return submittedJobs.iterator();
|
|
76 }
|
|
77 }
|