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.6 2002/01/30 20:52:27 dbrownell 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 */ LocatorImpl()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 */ LocatorImpl(Locator locator)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 */ getPublicId()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 */ getSystemId()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 */ getLineNumber()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 */ getColumnNumber()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 */ setPublicId(String publicId)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 */ setSystemId(String systemId)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 */ setLineNumber(int lineNumber)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 */ setColumnNumber(int columnNumber)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 215