KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > transformers > RegexpReplacerFactory


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

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 /**
19  * Factories new instances of extensions of {@link RegexpReplacer}, for which the replace patterns
20  * are parameterized (using the 'patterns' parameter).
21  *
22  * @author Michiel Meeuwissen
23  * @since MMBase-1.8
24  */

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 JavaDoc.class),
33         new Parameter("replacefirst", String JavaDoc.class)
34     };
35
36     public Parameters createParameters() {
37         return new Parameters(PARAMS);
38     }
39
40     /**
41      * Creates a parameterized transformer.
42      */

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 JavaDoc mode = (String JavaDoc) 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 JavaDoc("" + mode + " cannot be found in " + trans.transformers());
62         String JavaDoc firstParam = (String JavaDoc) 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