Source for org.xml.sax.helpers.LocatorImpl

   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