/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import java.io.*;
import java.util.*;

public class MultiIOException extends IOException {
  public MultiIOException () {
  }

  public MultiIOException (String detail) {
    super (detail);
  }

  protected Vector exceptions = new Vector ();
  public void addException (IOException ex) {
    exceptions.addElement (ex);
  }

  protected int index = 0;
  public boolean hasMoreExceptions () {
    return index < exceptions.size ();
  }

  public synchronized IOException getNextException ()
    throws NoSuchElementException {
    if (index >= exceptions.size ())
      throw new NoSuchElementException ("No more exceptions");
    return (IOException) exceptions.elementAt (index ++);
  }

  public String toString () {
    StringBuffer result = new StringBuffer (super.toString ());
    result.append (" {");
    for (int i = 0; i < exceptions.size (); ++ i) {
      if (i > 0)
        result.append (", ");
      result.append (exceptions.elementAt (i));
    }
    result.append ("}");
    return result.toString ();
  }
}
