1 package mircoders.global;
5 // important: objects passed as data must not be altered once put into a job
7 public class JobQueue {
11 public static final int STATUS_PENDING = 0;
12 public static final int STATUS_PROCESSING = 1;
13 public static final int STATUS_PROCESSED = 2;
17 dataToJob = new HashMap();
20 public void appendJob(Object aData) {
22 Job job = new Job(aData);
24 dataToJob.put(aData, job);
28 public Object acquirePendingJob() {
30 Iterator i = jobs.iterator();
33 Job job = (Job) i.next();
35 if (job.setProcessing()) {
44 public void flagOffJob(Object aData) {
46 Job job = (Job) dataToJob.get(aData);
54 public void cleanupJobs() {
56 Iterator i = jobs.iterator();
59 Job job = (Job) i.next();
61 if (job.hasBeenProcessed()) {
71 private int identifier;
73 public Job(Object aData) {
75 status = STATUS_PENDING;
78 public Object getData() {
82 public int getStatus() {
88 public boolean setProcessing() {
89 return setStatus(STATUS_PENDING, STATUS_PROCESSING);
92 public void setProcessed() {
93 setStatus(STATUS_PROCESSING, STATUS_PROCESSED);
96 public boolean hasBeenProcessed() {
97 return getStatus() == STATUS_PROCESSED;
100 public boolean isPending() {
101 return getStatus() == STATUS_PENDING;
104 private boolean setStatus(int anOldStatus, int aNewStatus) {
106 if (status == anOldStatus) {