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

Uploaded
author timpalpant
date Mon, 13 Feb 2012 22:12:06 -0500
parents
children
comparison
equal deleted inserted replaced
1:a54db233ee3d 2:e16016635b2a
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 }