util
Class ReaderLinesTracker
java.lang.Object
util.ReaderLinesTracker
public class ReaderLinesTracker
- extends java.lang.Object
A reader lines tracker is a scanner which maintains a current viewing
"window" on the sequence of lines represented by a given Reader,
this window being defined by "back" and "front" location markers.
Each location is defined by a pair, as defined
by the nested static class ReaderLinesTracker.Loc
.
Note that, in deference to XML locators, both lines and columns
(within documents and lines, respectively) are numbered from 1
rather than 0.
The primary motivation for the definition of this class is
to support the extraction of individual elements from an XML
document under the control of a SAX parser.
The public interface allows the back and front markers defining
the viewing window to be advanced, allows a segment to be extracted
from within the window, and allows a line within the window to be
searched for a given string.
Constructor Summary |
ReaderLinesTracker(java.io.File f)
Constructs a new tracker for the given file. |
ReaderLinesTracker(java.io.Reader rdr)
Constructs a new tracker for the given reader. |
Method Summary |
void |
advanceBack(int lnlo,
int collo)
Advances this tracker's "back" marker to the location with the
specified line and column numbers. |
void |
advanceFront(int lnhi,
int colhi)
Advances this tracker's front marker to the location with the
specified line and column numbers. |
void |
close()
Closes this tracker along with the reader that backs it. |
int |
findInLine(int i,
java.lang.String s)
Given the number of a line within this tracker's current viewing
window, and a search string, this method returns the column
number within the line of the specified line of (the first
occurrence of) the specified string, or -1 if there are
no occurrences of the string in the line. |
int |
lnBack()
Returns the line number of this tracker's current back marker. |
int |
lnFront()
Returns the line number of this tracker's current front marker. |
java.lang.String[] |
segment(int lnlo,
int collo,
int lnhi,
int colhi)
Given the pairs for the start and
finish locations of a segment within this tracker's current
viewing window, this method returns the specifed segment as
an array of strings, one per line or partial line. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ReaderLinesTracker
public ReaderLinesTracker(java.io.Reader rdr)
throws java.io.IOException
- Constructs a new tracker for the given reader.
- Throws:
java.io.IOException
ReaderLinesTracker
public ReaderLinesTracker(java.io.File f)
throws java.io.IOException
- Constructs a new tracker for the given file.
- Throws:
java.io.IOException
close
public void close()
- Closes this tracker along with the reader that backs it.
lnBack
public int lnBack()
- Returns the line number of this tracker's current back marker.
lnFront
public int lnFront()
- Returns the line number of this tracker's current front marker.
advanceBack
public void advanceBack(int lnlo,
int collo)
- Advances this tracker's "back" marker to the location with the
specified line and column numbers.
advanceFront
public void advanceFront(int lnhi,
int colhi)
- Advances this tracker's front marker to the location with the
specified line and column numbers.
findInLine
public int findInLine(int i,
java.lang.String s)
- Given the number of a line within this tracker's current viewing
window, and a search string, this method returns the column
number within the line of the specified line of (the first
occurrence of) the specified string, or
-1
if there are
no occurrences of the string in the line.
segment
public java.lang.String[] segment(int lnlo,
int collo,
int lnhi,
int colhi)
- Given the pairs for the start and
finish locations of a segment within this tracker's current
viewing window, this method returns the specifed segment as
an array of strings, one per line or partial line.