001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.io;
003
004 import static org.openstreetmap.josm.tools.I18n.tr;
005
006 import org.xml.sax.Locator;
007 import org.xml.sax.SAXException;
008
009 public class OsmDataParsingException extends SAXException {
010 private int columnNumber;
011 private int lineNumber;
012
013 public OsmDataParsingException() {
014 super();
015 }
016
017 public OsmDataParsingException(Exception e) {
018 super(e);
019 }
020
021 public OsmDataParsingException(String message, Exception e) {
022 super(message, e);
023 }
024
025 public OsmDataParsingException(String message) {
026 super(message);
027 }
028
029 public OsmDataParsingException rememberLocation(Locator locator) {
030 if (locator == null) return this;
031 this.columnNumber = locator.getColumnNumber();
032 this.lineNumber = locator.getLineNumber();
033 return this;
034 }
035
036 @Override
037 public String getMessage() {
038 String msg = super.getMessage();
039 if (lineNumber == 0 && columnNumber == 0)
040 return msg;
041 if (msg == null) {
042 msg = getClass().getName();
043 }
044 msg = msg + " " + tr("(at line {0}, column {1})", lineNumber, columnNumber);
045 return msg;
046 }
047
048 public int getColumnNumber() {
049 return columnNumber;
050 }
051
052 public int getLineNumber() {
053 return lineNumber;
054 }
055 }