Sunday, February 19, 2017

SeqValidator

class SeqValidator<T> {

  private static int iMin = 0;
  private int iMax = 0;

  public void assertSeqNotEmpty(T[] seq)
  throws IllegalArgumentException {
    if (seq == null) {
      throw new IllegalArgumentException("seq cannot be null");
    }
    iMax = seq.length - 1;
    if (iMax < 0) {
      throw new IllegalArgumentException("seq cannot be empty");
    }
  }

  public void assertValidRange(T[] seq, int from, int to)
  throws IllegalArgumentException, IndexOutOfBoundsException {
    assertSeqNotEmpty(seq);
    if (from < iMin || from > iMax) {
      throw new IndexOutOfBoundsException("from is out of bounds");
    }
    if (to < iMin || to > iMax) {
      throw new IndexOutOfBoundsException("to is out of bounds");
    }
  }

}