package org.kxml.io;

import java.io.IOException;

//   FIXME: would adding a file name make sense ?? 

/** a possibly chained exception, indicatin a line and column number. */

public class ParseException extends IOException {

    protected int lineNumber = -1;
    protected int columnNumber = -1;
    protected Exception chained; 


    /** Builds a new ParseException with the given message text, 
	chained Exception, lineNumber, columNumber. Set message text
	or chained exception to null and lineNumber and
	columNumber to -1 if not applicable. */


    public ParseException (String msg, Exception chained, 
			   int lineNumber, int columnNumber) {
    
	super ((msg == null ? "ParseException" : msg) 
	       + " @"+lineNumber+":" +columnNumber);

	this.chained = chained;
 	this.lineNumber = lineNumber;
	this.columnNumber = columnNumber;
    }

    
    /* Removed since super is not available in MIDP :( 

       prints the own
       stack trace followed by the stack trace of the original
       exception to the given PrintStream

    public void printStackTrace (PrintStream p) {
	super.printStackTrace (p);
	if (chained != null) 
	    chained.printStackTrace (p);
    }


    /** prints the own stack trace followed by the stack trace of the
	original exception to the given PrintWriter 

    public void printStackTrace (PrintWriter p) {
	super.printStackTrace (p);
	if (chained != null)
	    chained.printStackTrace (p);
	    } */

    /** prints the own stack trace followed by the stack trace of the
	original exception. */

    public void printStackTrace () {
	super.printStackTrace ();
	if (chained != null) 
	    chained.printStackTrace ();
    }


    public int getLineNumber () {
	return lineNumber;
    }

}

