| java.lang.Object org.apache.oro.text.MatchActionProcessor
MatchActionProcessor | final public class MatchActionProcessor (Code) | | The MatchActionProcessor class provides AWK-like line by line filtering
of a text stream, pattern action pair association, and field splitting
based on a registered separator. However, the class can be used with
any compatible PatternMatcher/PatternCompiler implementations and
need not use the AWK matching classes in org.apache.oro.text.awk. In fact,
the default matcher and compiler used by the class are Perl5Matcher and
Perl5Compiler from org.apache.oro.text.regex.
To completely understand how to use MatchActionProcessor, you should first
look at
MatchAction and
MatchActionInfo .
A MatchActionProcessor is first initialized with
the desired PatternCompiler and PatternMatcher instances to use to compile
patterns and perform matches. Then, optionally, a field separator may
be registered with
MatchActionProcessor.setFieldSeparator setFieldSeparator() Finally, as many pattern action pairs as desired are registerd with
MatchActionProcessor.addAction addAction() before processing the input
with
MatchActionProcessor.processMatches processMatches() . Pattern action
pairs are processed in the order they were registered.
The look of added actions can closely mirror that of AWK when anonymous
classes are used. Here's an example of how you might use
MatchActionProcessor to extract only the second column of a semicolon
delimited file:
import java.io.*;
import org.apache.oro.text.*;
import org.apache.oro.text.regex.*;
public final class semicolon {
public static final void main(String[] args) {
MatchActionProcessor processor = new MatchActionProcessor();
try {
processor.setFieldSeparator(";");
// Using a null pattern means to perform the action for every line.
processor.addAction(null, new MatchAction() {
public void processMatch(MatchActionInfo info) {
// We assume the second column exists
info.output.println(info.fields.elementAt(1));
}
});
} catch(MalformedPatternException e) {
e.printStackTrace();
System.exit(1);
}
try {
processor.processMatches(System.in, System.out);
} catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
}
}
You can redirect the following sample input to stdin to test the code:
1;Trenton;New Jersey
2;Annapolis;Maryland
3;Austin;Texas
4;Richmond;Virginia
5;Harrisburg;Pennsylvania
6;Honolulu;Hawaii
7;Santa Fe;New Mexico
version: @version@ since: 1.0 See Also: MatchAction See Also: MatchActionInfo |
Method Summary | |
public void | addAction(String pattern, int options, MatchAction action) Registers a pattern action pair, providing options to be used to
compile the pattern. | public void | addAction(String pattern, int options) Binds a patten to the default action, providing options to be
used to compile the pattern. | public void | addAction(String pattern) Binds a patten to the default action. | public void | addAction(String pattern, MatchAction action) Registers a pattern action pair. | public void | processMatches(InputStream input, OutputStream output, String encoding) This method reads the provided input one line at a time and for
every registered pattern that is contained in the line it executes
the associated MatchAction's processMatch() method. | public void | processMatches(InputStream input, OutputStream output) This method reads the provided input one line at a time using the
platform standart character encoding and for every registered
pattern that is contained in the line it executes the associated
MatchAction's processMatch() method. | public void | processMatches(Reader input, Writer output) This method reads the provided input one line at a time and for
every registered pattern that is contained in the line it executes
the associated MatchAction's processMatch() method. | public void | setFieldSeparator(String separator, int options) Sets the field separator to use when splitting a line into fields. | public void | setFieldSeparator(String separator) Sets the field separator to use when splitting a line into fields. |
MatchActionProcessor | public MatchActionProcessor(PatternCompiler compiler, PatternMatcher matcher)(Code) | | Creates a new MatchActionProcessor instance initialized with the specified
pattern compiler and matcher. The field separator is set to null by
default, which means that matched lines will not be split into separate
fields unless the field separator is set with
MatchActionProcessor.setFieldSeparator setFieldSeparator() .
Parameters: compiler - The PatternCompiler to use to compile registeredpatterns. Parameters: matcher - The PatternMatcher to use when searching for matches. |
MatchActionProcessor | public MatchActionProcessor()(Code) | | Default constructor for MatchActionProcessor. Same as calling
MatchActionProcessor(new Perl5Compiler(), new Perl5Matcher());
|
addAction | public void addAction(String pattern, int options, MatchAction action) throws MalformedPatternException(Code) | | Registers a pattern action pair, providing options to be used to
compile the pattern. If a pattern is null, the action
is performed for every line of input.
Parameters: pattern - The pattern to bind to an action. Parameters: options - The compilation options to use for the pattern. Parameters: action - The action to associate with the pattern. exception: MalformedPatternException - If the pattern cannot be compiled. |
addAction | public void addAction(String pattern, int options) throws MalformedPatternException(Code) | | Binds a patten to the default action, providing options to be
used to compile the pattern. The default action is to simply print
the matched line to the output. If a pattern is null, the action
is performed for every line of input.
Parameters: pattern - The pattern to bind to an action. Parameters: options - The compilation options to use for the pattern. exception: MalformedPatternException - If the pattern cannot be compiled. |
addAction | public void addAction(String pattern) throws MalformedPatternException(Code) | | Binds a patten to the default action. The default action is to simply
print the matched line to the output. If a pattern is null, the action
is performed for every line of input.
Parameters: pattern - The pattern to bind to an action. exception: MalformedPatternException - If the pattern cannot be compiled. |
addAction | public void addAction(String pattern, MatchAction action) throws MalformedPatternException(Code) | | Registers a pattern action pair. If a pattern is null, the action
is performed for every line of input.
Parameters: pattern - The pattern to bind to an action. Parameters: action - The action to associate with the pattern. exception: MalformedPatternException - If the pattern cannot be compiled. |
processMatches | public void processMatches(InputStream input, OutputStream output, String encoding) throws IOException(Code) | | This method reads the provided input one line at a time and for
every registered pattern that is contained in the line it executes
the associated MatchAction's processMatch() method. If a field
separator has been defined with
MatchActionProcessor.setFieldSeparator setFieldSeparator() , the
fields member of the MatchActionInfo instance passed to the
processMatch() method is set to a Vector of Strings containing
the split fields of the line. Otherwise the fields member is set
to null. If no match was performed to invoke the action (i.e.,
a null pattern was registered), then the match member is set
to null. Otherwise, the match member will contain the result of
the match.
The input stream, having been exhausted, is closed right before the
method terminates and the output stream is flushed.
See Also: MatchActionInfo Parameters: input - The input stream from which to read lines. Parameters: output - Where to send output. Parameters: encoding - The character encoding of the InputStream source.If you also want to define an output character encoding,you should use MatchActionProcessor.processMatches(Reader,Writer)and specify the encodings when creating the Reader andWriter sources and sinks. exception: IOException - If an error occurs while reading inputor writing output. |
processMatches | public void processMatches(InputStream input, OutputStream output) throws IOException(Code) | | This method reads the provided input one line at a time using the
platform standart character encoding and for every registered
pattern that is contained in the line it executes the associated
MatchAction's processMatch() method. If a field separator has been
defined with
MatchActionProcessor.setFieldSeparator setFieldSeparator() , the
fields member of the MatchActionInfo instance passed to the
processMatch() method is set to a Vector of Strings containing
the split fields of the line. Otherwise the fields member is set
to null. If no match was performed to invoke the action (i.e.,
a null pattern was registered), then the match member is set
to null. Otherwise, the match member will contain the result of
the match.
The input stream, having been exhausted, is closed right before the
method terminates and the output stream is flushed.
See Also: MatchActionInfo Parameters: input - The input stream from which to read lines. Parameters: output - Where to send output. exception: IOException - If an error occurs while reading inputor writing output. |
processMatches | public void processMatches(Reader input, Writer output) throws IOException(Code) | | This method reads the provided input one line at a time and for
every registered pattern that is contained in the line it executes
the associated MatchAction's processMatch() method. If a field
separator has been defined with
MatchActionProcessor.setFieldSeparator setFieldSeparator() , the
fields member of the MatchActionInfo instance passed to the
processMatch() method is set to a Vector of Strings containing
the split fields of the line. Otherwise the fields member is set
to null. If no match was performed to invoke the action (i.e.,
a null pattern was registered), then the match member is set
to null. Otherwise, the match member will contain the result of
the match.
The input stream, having been exhausted, is closed right before the
method terminates and the output stream is flushed.
See Also: MatchActionInfo Parameters: input - The input stream from which to read lines. Parameters: output - Where to send output. exception: IOException - If an error occurs while reading inputor writing output. |
setFieldSeparator | public void setFieldSeparator(String separator, int options) throws MalformedPatternException(Code) | | Sets the field separator to use when splitting a line into fields.
If the field separator is never set, or set to null, matched input
lines are not split into fields.
Parameters: separator - A regular expression defining the field separator. Parameters: options - The options to use when compiling the separator. exception: MalformedPatternException - If the separator cannot be compiled. |
setFieldSeparator | public void setFieldSeparator(String separator) throws MalformedPatternException(Code) | | Sets the field separator to use when splitting a line into fields.
If the field separator is never set, or set to null, matched input
lines are not split into fields.
Parameters: separator - A regular expression defining the field separator. exception: MalformedPatternException - If the separator cannot be compiled. |
|
|