ORO, Inc. Logo  All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class com.oroinc.text.MatchActionProcessor

java.lang.Object
   |
   +----com.oroinc.text.MatchActionProcessor

public final class MatchActionProcessor
extends Object
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 com.oroinc.text.awk. In fact, the default matcher and compiler used by the class are Perl5Matcher and Perl5Compiler from com.oroinc.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 setFieldSeparator() Finally, as many pattern action pairs as desired are registerd with addAction() before processing the input with 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 com.oroinc.text.*;
 import com.oroinc.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
 

Copyright © 1997 Original Resuable Objects, Inc. All rights reserved.

See Also:
MatchAction, MatchActionInfo

Constructor Index

 o MatchActionProcessor()
Default constructor for MatchActionProcessor.
 o MatchActionProcessor(PatternCompiler, PatternMatcher)
Creates a new MatchActionProcessor instance initialized with the specified pattern compiler and matcher.

Method Index

 o addAction(String)
Binds a patten to the default action.
 o addAction(String, int)
Binds a patten to the default action, providing options to be used to compile the pattern.
 o addAction(String, int, MatchAction)
Registers a pattern action pair, providing options to be used to compile the pattern.
 o addAction(String, MatchAction)
Registers a pattern action pair.
 o processMatches(InputStream, OutputStream)
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.
 o setFieldSeparator(String)
Sets the field separator to use when splitting a line into fields.
 o setFieldSeparator(String, int)
Sets the field separator to use when splitting a line into fields.

Constructors

 o MatchActionProcessor
 public MatchActionProcessor(PatternCompiler compiler,
                             PatternMatcher matcher)
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 setFieldSeparator() .

Parameters:
compiler - The PatternCompiler to use to compile registered patterns.
matcher - The PatternMatcher to use when searching for matches.
 o MatchActionProcessor
 public MatchActionProcessor()
Default constructor for MatchActionProcessor. Same as calling
MatchActionProcessor(new Perl5Compiler(), new Perl5Matcher());

Methods

 o addAction
 public void addAction(String pattern,
                       int options,
                       MatchAction action) throws MalformedPatternException
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.
options - The compilation options to use for the pattern.
action - The action to associate with the pattern.
Throws: MalformedPatternException
If the pattern cannot be compiled.
 o addAction
 public void addAction(String pattern,
                       int options) throws MalformedPatternException
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.
options - The compilation options to use for the pattern.
Throws: MalformedPatternException
If the pattern cannot be compiled.
 o addAction
 public void addAction(String pattern) throws MalformedPatternException
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.
Throws: MalformedPatternException
If the pattern cannot be compiled.
 o addAction
 public void addAction(String pattern,
                       MatchAction action) throws MalformedPatternException
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.
action - The action to associate with the pattern.
Throws: MalformedPatternException
If the pattern cannot be compiled.
 o setFieldSeparator
 public void setFieldSeparator(String separator,
                               int options) throws MalformedPatternException
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.
options - The options to use when compiling the separator.
Throws: MalformedPatternException
If the separator cannot be compiled.
 o setFieldSeparator
 public void setFieldSeparator(String separator) throws MalformedPatternException
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.
Throws: MalformedPatternException
If the separator cannot be compiled.
 o processMatches
 public void processMatches(InputStream input,
                            OutputStream output) throws IOException
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 MatchActionInfo

ORO, Inc. Logo  All Packages  Class Hierarchy  This Package  Previous  Next  Index