public Object getValueAt(int row, int column) {
   synchronized (allocations) {
     Allocation[] ary = getAllocationArray();
     if (row >= ary.length) return null;
     Allocation a = ary[row];
     AllocationResult ar = a.getEstimatedResult();
     switch (column) {
       case 0: // The task id
         return a.getTask().getUID();
       case 1: // The failed status
         return ar.isSuccess() ? "Succeeded" : "Failed";
       case 2: // The confidence rating
         return confidenceFormat.format(ar.getConfidenceRating());
     }
     return "???";
   }
 }
 public int compare(Object l, Object r) {
   Allocation la = (Allocation) l;
   Allocation ra = (Allocation) r;
   return la.getTask().getUID().compareTo(ra.getTask().getUID());
 }