1   package org.slf4j.converter;
2   
3   import java.util.ArrayList;
4   import java.util.regex.Pattern;
5   
6   
7   public class JCLMatcher extends AbstractMatcher {
8   
9   	public JCLMatcher() {
10  		super();
11  		initRules();
12  	}
13  
14  	protected void initRules() {
15  		//matching : import org.apache.commons.logging.LogFactory; 
16  		PatternWrapper p0 = new PatternWrapper(Pattern.compile("import\\s*+org.apache.commons.logging.LogFactory;"));
17  		//matching : import org.apache.commons.logging.Log; 
18  		PatternWrapper p1 = new PatternWrapper(Pattern.compile("import\\s*+org.apache.commons.logging.Log;"));
19  		//matching declaration and instanciation : protected Log myLog = LogFactory.getFactory().getInstance(MyClass.class); //comment or other instruction 
20  		PatternWrapper p2 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
21  		//matching declaration and instanciation : protected static Log myLog = LogFactory.getLog(MyClass.class); //comment or other instruction 
22  		PatternWrapper p3 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
23  		//matching instanciation without declaration :  myLog = LogFactory.getFactory().getInstance(MyClass.class); //comment or other instruction 
24  		PatternWrapper p4 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
25  		//matching instanciation without declaration :  myLog = LogFactory.getLog(MyClass.class); //comment or other instruction 
26  		PatternWrapper p5 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
27  		//matching declaration without instanciation : public static final Log myLog //comment or other instruction
28  		PatternWrapper p6 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s*+\\w+\\s*+;)((\\w*+\\W*+\\.*)*;*+)"));
29  		//matching incomplete instanciation : protected Log log =
30  		PatternWrapper p7 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s+\\w+\\s*+=*\\s*+)"));
31  		//matching incomlete instanciation : LogFactory.getLog(MyComponent.class);
32  		PatternWrapper p8 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(LogFactory.getLog\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
33  		//matching incomlete instanciation : LogFactory.getFactory().getInstance(MyComponent.class);
34  		PatternWrapper p9 = new PatternWrapper(Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
35  		
36  		p0.addReplacement(Constant.INDEX_0,"import org.slf4j.LoggerFactory;");
37  		p1.addReplacement(Constant.INDEX_0,"import org.slf4j.Logger;");
38  		p2.addReplacement(Constant.INDEX_3,"Logger");
39  		p2.addReplacement(Constant.INDEX_2,"");
40  		p2.addReplacement(Constant.INDEX_5,"LoggerFactory.getLogger(");
41  		p3.addReplacement(Constant.INDEX_3,"Logger");
42  		p3.addReplacement(Constant.INDEX_2,"");
43  		p3.addReplacement(Constant.INDEX_5,"LoggerFactory.getLogger(");
44  		p4.addReplacement(Constant.INDEX_4,"LoggerFactory.getLogger(");
45  		p4.addReplacement(Constant.INDEX_2,"");
46  		p5.addReplacement(Constant.INDEX_4,"LoggerFactory.getLogger(");
47  		p5.addReplacement(Constant.INDEX_2,"");
48  		p6.addReplacement(Constant.INDEX_3,"Logger");
49  		p6.addReplacement(Constant.INDEX_2,"");
50  		p7.addReplacement(Constant.INDEX_3, "Logger");
51  		p7.addReplacement(Constant.INDEX_2, "");
52  		p8.addReplacement(Constant.INDEX_3, "LoggerFactory.getLogger(");
53  		p8.addReplacement(Constant.INDEX_1, "");
54  		p9.addReplacement(Constant.INDEX_3, "LoggerFactory.getLogger(");
55  		p9.addReplacement(Constant.INDEX_1, "");
56  		
57  		
58  		rules = new ArrayList<PatternWrapper>();
59  		rules.add(p0);
60  		rules.add(p1);
61  		rules.add(p2);
62  		rules.add(p3);
63  		rules.add(p4);
64  		rules.add(p5);
65  		rules.add(p6);
66  		rules.add(p7);
67  		rules.add(p8);
68  		rules.add(p9);
69  	}
70  }