annotate gui/edu/unc/genomics/JobQueue.java @ 2:e16016635b2a

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