@Override public Mission getMission(Sergeant s) { if (this.isEmpty()) return null; PriorityBlockingQueue<Mission> relevantQueue; Vector<Mission> temp = new Vector<Mission>(); if (s.getPriority().equals(Sergeant.SHORTEST)) relevantQueue = this.minLength; else if (s.getPriority().equals(Sergeant.LONGEST)) relevantQueue = this.maxLength; else if (s.getPriority().equals(Sergeant.MINITEMS)) relevantQueue = this.minItems; else relevantQueue = this.maxItems; while (!relevantQueue.isEmpty()) { Mission candidate = relevantQueue.poll(); temp.add(candidate); WarSim.LOG.fine("Testing Mission " + candidate.getName() + "(" + candidate.getSkill() + ")"); if (s.getSkills().contains(candidate.getSkill())) { for (Mission tm : temp) relevantQueue.put(tm); return candidate; } else WarSim.LOG.fine( "The sergeant " + s.getName() + " can't execute mission " + candidate.getName()); } for (Mission tm : temp) relevantQueue.put(tm); return null; }
private void delete(Mission m) { String s = "Removing " + m.getName() + " success? "; this.minLength.remove(m); this.maxLength.remove(m); this.minItems.remove(m); this.maxItems.remove(m); s += !(this.minLength.contains(m) || this.maxLength.contains(m)); WarSim.LOG.fine(s); }