package org.anodyneos.xp;
import org.xml.sax.SAXParseException;
public class XpTranslationException extends XpException{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 3834032437427713081L;
long lineNumber = -1;
long colNumber = -1;
String fileName;
String internalMessage;
public XpTranslationException(Throwable rootCause) {
super(rootCause);
// if it's a SAXParseException, let's take whatever info we can from it
if (rootCause instanceof SAXParseException) {
SAXParseException saxException = (SAXParseException) rootCause;
setLineNumber(saxException.getLineNumber());
setColNumber(saxException.getColumnNumber());
setFileName(saxException.getSystemId());
// generate an informative/useful error message
StringBuffer retVal = new StringBuffer("XpTranslationException: ");
retVal.append(rootCause.getMessage());
retVal.append(" [File: ");
retVal.append(getFileName());
retVal.append("] [Line: ");
retVal.append(getLineNumber());
retVal.append("] [Column: ");
retVal.append(getColNumber());
retVal.append("] ");
setInternalMessage(retVal.toString());
}
}
public XpTranslationException(String message) {
super(message);
}
public String getMessage(){
String myMessage = getInternalMessage();
if (myMessage == null) {
myMessage = super.getMessage();
}
return myMessage;
}
/**
* @return Returns the lineNumber.
*/
public long getLineNumber() {
return lineNumber;
}
/**
* @param lineNumber The lineNumber to set.
*/
public void setLineNumber(long lineNumber) {
this.lineNumber = lineNumber;
}
/**
* @return Returns the colNumber.
*/
public long getColNumber() {
return colNumber;
}
/**
* @param colNumber The colNumber to set.
*/
public void setColNumber(long colNumber) {
this.colNumber = colNumber;
}
/**
* @return Returns the fileName.
*/
public String getFileName() {
return fileName;
}
/**
* @param fileName The fileName to set.
*/
public void setFileName(String fileName) {
this.fileName = fileName;
}
/**
* @return Returns the internalMessage.
*/
public String getInternalMessage() {
return internalMessage;
}
/**
* @param internalMessage The internalMessage to set.
*/
private void setInternalMessage(String internalMessage) {
this.internalMessage = internalMessage;
}
}