1 32 33 package com.jeantessier.dependencyfinder.cli; 34 35 import java.util.*; 36 37 import org.apache.oro.text.perl.*; 38 39 import com.jeantessier.classreader.*; 40 import com.jeantessier.text.*; 41 42 public class ClassMatcher extends LoadListenerBase { 43 private Perl5Util perl = new Perl5Util(new MaximumCapacityPatternCache()); 44 45 private List includes; 46 private List excludes; 47 48 private Map results = new TreeMap(); 49 50 public ClassMatcher(List includes, List excludes) { 51 this.includes = includes; 52 this.excludes = excludes; 53 } 54 55 public Map getResults() { 56 return results; 57 } 58 59 public void endClassfile(LoadEvent event) { 60 super.endClassfile(event); 61 62 String className = event.getClassfile().getClassName(); 63 String groupName = getCurrentGroup().getName(); 64 65 if (matches(className)) { 66 List groups = (List) results.get(className); 67 if (groups == null) { 68 groups = new LinkedList(); 69 results.put(className, groups); 70 } 71 groups.add(groupName); 72 } 73 } 74 75 private boolean matches(String name) { 76 return matches(includes, name) && !matches(excludes, name); 77 } 78 79 private boolean matches(List regularExpressions, String name) { 80 boolean found = false; 81 82 Iterator i = regularExpressions.iterator(); 83 while (!found && i.hasNext()) { 84 String condition = (String ) i.next(); 85 found = perl.match(condition, name); 86 } 87 88 return found; 89 } 90 } 91 | Popular Tags |