OSDN Git Service

Remove Date tag of Subversion
[stigmata/stigmata-core.git] / src / main / java / jp / sourceforge / stigmata / utils / WellknownClassJudgeRule.java
1 package jp.sourceforge.stigmata.utils;
2
3 /*
4  * $Id$
5  */
6
7 /**
8  * A rule for checking wellknown class or not.
9  * 
10  * @author Haruaki TAMADA
11  * @version $Revision$ 
12  */
13 public final class WellknownClassJudgeRule{
14     public enum MatchType{
15         PREFIX, SUFFIX, EXACT, NOT_MATCH,
16     };
17     public enum MatchPartType{
18         FULLY_NAME, PACKAGE_NAME, CLASS_NAME,
19     };
20
21     private MatchType matchType;
22     private MatchPartType partType;
23     private boolean excludeFlag;
24
25     private String pattern;
26
27     public WellknownClassJudgeRule(String pattern, MatchType matchType, MatchPartType partType){
28         this(pattern, matchType, partType, false);
29     }
30
31     public WellknownClassJudgeRule(String pattern, MatchType matchType, MatchPartType partType, boolean excludeFlag){
32         this.pattern = pattern;
33         this.matchType = matchType;
34         this.partType = partType;
35         this.excludeFlag = excludeFlag;
36     }
37
38     public void setExclude(boolean excludeFlag){
39         this.excludeFlag = excludeFlag;
40     }
41
42     public boolean isExclude(){
43         return excludeFlag;
44     }
45
46     public String getPattern(){
47         return pattern;
48     }
49
50     public MatchType getMatchType(){
51         return matchType;
52     }
53
54     public MatchPartType getMatchPartType(){
55         return partType;
56     }
57
58     public int hashCode(){
59         int m = getMatchType().hashCode();
60         int p = getMatchPartType().hashCode();
61         int s = getPattern().hashCode();
62
63         return m + p + s;
64     }
65
66     public boolean equals(Object o){
67         if(o instanceof WellknownClassJudgeRule){
68             WellknownClassJudgeRule wcjr = (WellknownClassJudgeRule)o;
69             return getPattern().equals(wcjr.getPattern())
70                 && getMatchPartType() == wcjr.getMatchPartType()
71                 && getMatchType() == wcjr.getMatchType();
72         }
73         return false;
74     }
75
76     public String toString(){
77         String string = null;
78         switch(getMatchType()){
79         case PREFIX:
80             string = String.format("<prefix>%s</prefix>", getPattern());
81             break;
82         case SUFFIX:
83             string = String.format("<suffix>%s</suffix>", getPattern());
84             break;
85         case EXACT:
86             string = String.format("<match>%s</match>", getPattern());
87             break;
88         case NOT_MATCH:
89             string = String.format("<not-match>%s</not-match>", getPattern());
90             break;
91         }
92         switch(getMatchPartType()){
93         case CLASS_NAME:
94             string = String.format("<class-name>%s</class-name>", string);
95             break;
96         case FULLY_NAME:
97             string = String.format("<fully-name>%s</fully-name>", string);
98             break;
99         case PACKAGE_NAME:
100             string = String.format("<package-name>%s</package-name>", string);
101             break;
102         }
103         if(isExclude()){
104             string = "<exclude>" + string + "</exclude>";
105         }
106         return string;
107     }
108 }