1 10 package org.mmbase.util.transformers; 11 12 import java.util.*; 13 14 import org.mmbase.util.logging.*; 15 import org.mmbase.util.functions.*; 16 17 18 25 26 public class RegexpReplacerFactory implements ParameterizedTransformerFactory { 27 private static final Logger log = Logging.getLoggerInstance(RegexpReplacerFactory.class); 28 29 30 protected static final Parameter[] PARAMS = new Parameter[] { 31 new Parameter("patterns", Collection.class, Collections.EMPTY_LIST), 32 new Parameter("mode", String .class), 33 new Parameter("replacefirst", String .class) 34 }; 35 36 public Parameters createParameters() { 37 return new Parameters(PARAMS); 38 } 39 40 43 public Transformer createTransformer(final Parameters parameters) { 44 parameters.checkRequiredParameters(); 45 if (log.isDebugEnabled()) { 46 log.debug("Creating transformer, with " + parameters); 47 } 48 RegexpReplacer trans = new RegexpReplacer() { 49 private Collection patterns = new ArrayList(); 50 { 51 addPatterns((Collection) parameters.get("patterns"), patterns); 52 } 53 public Collection getPatterns() { 54 return patterns; 55 } 56 }; 57 String mode = (String ) parameters.get("mode"); 58 if (mode == null) mode = "WORDS"; 59 Config c = (Config)trans.transformers().get("REGEXPS_" + mode.toUpperCase()); 60 if (c == null) c = (Config)trans.transformers().get(mode); 61 if (c == null) throw new IllegalArgumentException ("" + mode + " cannot be found in " + trans.transformers()); 62 String firstParam = (String ) parameters.get("replacefirst"); 63 boolean replaceFirst = "true".equals(firstParam); 64 boolean replaceFirstAll = "all".equals(firstParam); 65 trans.configure(c.config + 66 (replaceFirst ? RegexpReplacer.REPLACE_FIRST : 0) + 67 (replaceFirstAll ? RegexpReplacer.REPLACE_FIRST_ALL : 0) 68 ); 69 return trans; 70 } 71 72 73 74 75 76 } 77 | Popular Tags |