Mercurial > repos > timpalpant > java_genomics_toolkit
diff gui/edu/unc/genomics/JobQueue.java @ 2:e16016635b2a
Uploaded
author | timpalpant |
---|---|
date | Mon, 13 Feb 2012 22:12:06 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gui/edu/unc/genomics/JobQueue.java Mon Feb 13 22:12:06 2012 -0500 @@ -0,0 +1,77 @@ +package edu.unc.genomics; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.ListModel; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; + +import org.apache.log4j.Logger; + +/** + * Model for the queue of SubmittedJobs + * Should be managed through the JobQueueManager controller + * + * @author timpalpant + * + */ +public class JobQueue implements ListModel<SubmittedJob>, Iterable<SubmittedJob> { + + private static final Logger log = Logger.getLogger(JobQueue.class); + + private final List<SubmittedJob> submittedJobs = new ArrayList<>(); + private final List<ListDataListener> dataListeners = new ArrayList<>(); + + public void add(SubmittedJob job) { + int N = submittedJobs.size(); + submittedJobs.add(job); + ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, N, N); + for (ListDataListener l : dataListeners) { + l.intervalAdded(e); + } + } + + public void remove(SubmittedJob job) { + submittedJobs.remove(job); + int N = submittedJobs.size(); + ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, N, N); + for (ListDataListener l : dataListeners) { + l.intervalAdded(e); + } + } + + public void update(SubmittedJob job) { + int index = submittedJobs.indexOf(job); + ListDataEvent e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, index, index); + for (ListDataListener l : dataListeners) { + l.intervalAdded(e); + } + } + + @Override + public int getSize() { + return submittedJobs.size(); + } + + @Override + public SubmittedJob getElementAt(int index) { + return submittedJobs.get(index); + } + + @Override + public void addListDataListener(ListDataListener l) { + dataListeners.add(l); + } + + @Override + public void removeListDataListener(ListDataListener l) { + dataListeners.remove(l); + } + + @Override + public Iterator<SubmittedJob> iterator() { + return submittedJobs.iterator(); + } +}