@Override
  protected List<Message> getMessagesFrom(Level level) {
    List<Level> levels = new LinkedList<Level>();

    for (Level iter : Level.values()) {
      if (iter.compareTo(level) == 0) {
        levels.add(iter);
      } else {
        break;
      }
    }

    return getMessages(jobId, 0, levels);
  }
  protected class MessageFilter implements MessageAccessor.MessageFilter {
    List<Level> mLevels = Arrays.asList(Level.values());
    int mSeq = -1;
    int mStart;
    int mEnd;
    boolean getRange = false;

    @Override
    public MessageFilter filterLevels(final Set<Level> levels) {
      mLevels = new LinkedList<Level>(levels);
      return this;
    }

    @Override
    public MessageFilter greaterThan(int idx) {
      mSeq = idx;
      return this;
    }

    @Override
    public MessageFilter inRange(int start, int end) {
      mStart = start;
      mEnd = end;
      getRange = true;
      return this;
    }

    @Override
    public List<Message> getMessages() {
      if (getRange) {
        return PersistentMessageAccessor.this.getMessagesInRange(jobId, mStart, mEnd, mLevels);
      } else {
        return PersistentMessageAccessor.this.getMessages(jobId, mSeq, mLevels);
      }
    }
  }
 @Override
 public List<Message> getAll() {
   return getMessages(jobId, 0, Arrays.asList(Level.values()));
 }