001    package com.saelist.stx.operators;
002    
003    import org.apache.log4j.*;
004    import com.saelist.stx.*;
005    
006    
007    /** See {@link com.saelist.stx.Operator} for general description of the Operator
008      * concept in stx. ReplaceOperator performs a regular expression replacement
009      * on each pair it visits.
010      *
011      */
012    public class ReplaceOperator extends AbstractOperator {
013    
014      private String pattern;
015      private String replacement;
016    
017      /** Caches the pattern and replacement settings in variables.
018        */
019      public void init() {
020        pattern = config.eval1("pattern");
021        replacement = config.eval1("replacement");
022        logger.info("init(): pattern='" + pattern + "'.");
023        logger.info("init(): replacement='" + replacement + "'.");
024      }
025    
026      /** Performs the replacement operation on the given pair.
027        * @throws IllegalStateException if this hasn't been initialized.
028        */
029      public void operate(Pair pair) {
030        logger.info("visit(): '" +
031            pair.getText() + "' -> '" +
032            pair.getText().replaceAll(pattern, replacement) + "'.");
033        pair.setText(pair.getText().replaceAll(pattern, replacement));
034      }
035    
036    }