KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xml > Filter


1 package jfun.yan.xml;
2
3 final class Filter {
4   private final String JavaDoc[] includes;
5   private final String JavaDoc[] excludes;
6   
7   Filter(String JavaDoc[] includes, String JavaDoc[] excludes) {
8     this.excludes = excludes;
9     this.includes = includes;
10   }
11   
12   String JavaDoc[] getExcludes() {
13     return excludes;
14   }
15
16   String JavaDoc[] getIncludes() {
17     return includes;
18   }
19
20   StringPredicate getPredicate(){
21     if(excludes==null){
22       return StringPredicates.never();
23     }
24     else{
25       final StringPredicate ip = toPredicate(includes);
26       final StringPredicate ep = toPredicate(excludes);
27       return new StringPredicate(){
28         public boolean isString(String JavaDoc s){
29           return !ep.isString(s) && ip.isString(s);
30         }
31         public String JavaDoc toString(){
32           return "!"+ep+"&&"+ip;
33         }
34       };
35     }
36   }
37   static StringPredicate toPredicate(String JavaDoc[] names){
38     if(names==null)
39       return StringPredicates.always();
40     final StringPredicate[] preds = new StringPredicate[names.length];
41     for(int i=0; i<names.length; i++){
42       preds[i] = toPredicate(names[i]);
43     }
44     return StringPredicates.or(preds);
45   }
46   static StringPredicate toPredicate(String JavaDoc name){
47     if(name==null)
48       return StringPredicates.always();
49     if(Constants.WILDCARD.equals(name)){
50       return StringPredicates.always();
51     }
52     if(name.endsWith(Constants.WILDCARD)){
53       return StringPredicates.startsWith(name.substring(0, name.length()-1));
54     }
55     else{
56       return StringPredicates.equals(name);
57     }
58   }
59 }
60
Popular Tags