View Javadoc

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.5 2004/03/19 20:17:54 maartenc 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