Frames | No Frames |
1: // SAX default implementation for Locator. 2: // http://www.saxproject.org 3: // No warranty; no copyright -- use this as you will. 4: // $Id: LocatorImpl.java,v 1.1 2004/12/23 22:38:42 mark Exp $ 5: 6: package org.xml.sax.helpers; 7: 8: import org.xml.sax.Locator; 9: 10: 11: /** 12: * Provide an optional convenience implementation of Locator. 13: * 14: * <blockquote> 15: * <em>This module, both source code and documentation, is in the 16: * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> 17: * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a> 18: * for further information. 19: * </blockquote> 20: * 21: * <p>This class is available mainly for application writers, who 22: * can use it to make a persistent snapshot of a locator at any 23: * point during a document parse:</p> 24: * 25: * <pre> 26: * Locator locator; 27: * Locator startloc; 28: * 29: * public void setLocator (Locator locator) 30: * { 31: * // note the locator 32: * this.locator = locator; 33: * } 34: * 35: * public void startDocument () 36: * { 37: * // save the location of the start of the document 38: * // for future use. 39: * Locator startloc = new LocatorImpl(locator); 40: * } 41: *</pre> 42: * 43: * <p>Normally, parser writers will not use this class, since it 44: * is more efficient to provide location information only when 45: * requested, rather than constantly updating a Locator object.</p> 46: * 47: * @since SAX 1.0 48: * @author David Megginson 49: * @version 2.0.1 (sax2r2) 50: * @see org.xml.sax.Locator Locator 51: */ 52: public class LocatorImpl implements Locator 53: { 54: 55: 56: /** 57: * Zero-argument constructor. 58: * 59: * <p>This will not normally be useful, since the main purpose 60: * of this class is to make a snapshot of an existing Locator.</p> 61: */ 62: public LocatorImpl () 63: { 64: } 65: 66: 67: /** 68: * Copy constructor. 69: * 70: * <p>Create a persistent copy of the current state of a locator. 71: * When the original locator changes, this copy will still keep 72: * the original values (and it can be used outside the scope of 73: * DocumentHandler methods).</p> 74: * 75: * @param locator The locator to copy. 76: */ 77: public LocatorImpl (Locator locator) 78: { 79: setPublicId(locator.getPublicId()); 80: setSystemId(locator.getSystemId()); 81: setLineNumber(locator.getLineNumber()); 82: setColumnNumber(locator.getColumnNumber()); 83: } 84: 85: 86: 87: //////////////////////////////////////////////////////////////////// 88: // Implementation of org.xml.sax.Locator 89: //////////////////////////////////////////////////////////////////// 90: 91: 92: /** 93: * Return the saved public identifier. 94: * 95: * @return The public identifier as a string, or null if none 96: * is available. 97: * @see org.xml.sax.Locator#getPublicId 98: * @see #setPublicId 99: */ 100: public String getPublicId () 101: { 102: return publicId; 103: } 104: 105: 106: /** 107: * Return the saved system identifier. 108: * 109: * @return The system identifier as a string, or null if none 110: * is available. 111: * @see org.xml.sax.Locator#getSystemId 112: * @see #setSystemId 113: */ 114: public String getSystemId () 115: { 116: return systemId; 117: } 118: 119: 120: /** 121: * Return the saved line number (1-based). 122: * 123: * @return The line number as an integer, or -1 if none is available. 124: * @see org.xml.sax.Locator#getLineNumber 125: * @see #setLineNumber 126: */ 127: public int getLineNumber () 128: { 129: return lineNumber; 130: } 131: 132: 133: /** 134: * Return the saved column number (1-based). 135: * 136: * @return The column number as an integer, or -1 if none is available. 137: * @see org.xml.sax.Locator#getColumnNumber 138: * @see #setColumnNumber 139: */ 140: public int getColumnNumber () 141: { 142: return columnNumber; 143: } 144: 145: 146: 147: //////////////////////////////////////////////////////////////////// 148: // Setters for the properties (not in org.xml.sax.Locator) 149: //////////////////////////////////////////////////////////////////// 150: 151: 152: /** 153: * Set the public identifier for this locator. 154: * 155: * @param publicId The new public identifier, or null 156: * if none is available. 157: * @see #getPublicId 158: */ 159: public void setPublicId (String publicId) 160: { 161: this.publicId = publicId; 162: } 163: 164: 165: /** 166: * Set the system identifier for this locator. 167: * 168: * @param systemId The new system identifier, or null 169: * if none is available. 170: * @see #getSystemId 171: */ 172: public void setSystemId (String systemId) 173: { 174: this.systemId = systemId; 175: } 176: 177: 178: /** 179: * Set the line number for this locator (1-based). 180: * 181: * @param lineNumber The line number, or -1 if none is available. 182: * @see #getLineNumber 183: */ 184: public void setLineNumber (int lineNumber) 185: { 186: this.lineNumber = lineNumber; 187: } 188: 189: 190: /** 191: * Set the column number for this locator (1-based). 192: * 193: * @param columnNumber The column number, or -1 if none is available. 194: * @see #getColumnNumber 195: */ 196: public void setColumnNumber (int columnNumber) 197: { 198: this.columnNumber = columnNumber; 199: } 200: 201: 202: 203: //////////////////////////////////////////////////////////////////// 204: // Internal state. 205: //////////////////////////////////////////////////////////////////// 206: 207: private String publicId; 208: private String systemId; 209: private int lineNumber; 210: private int columnNumber; 211: 212: } 213: 214: // end of LocatorImpl.java