001 package org.shiftone.jrat.core.criteria;
002
003
004 import org.shiftone.jrat.util.log.Logger;
005 import org.shiftone.jrat.util.regex.GlobMatcher;
006 import org.shiftone.jrat.util.regex.Matcher;
007
008
009 /**
010 * Used by ant task.
011 *
012 * @author jeff@shiftone.org (Jeff Drost)
013 */
014 public class MatcherMethodCriteria implements MethodCriteria {
015
016 private static final Logger LOG = Logger.getLogger(MatcherMethodCriteria.class);
017
018 private Matcher classNameMatcher = Matcher.ALL;
019 private Matcher methodNameMatcher = Matcher.ALL;
020 private Matcher signatureMatcher = Matcher.ALL;
021
022 public void setClassName(String classNameMatcher) {
023 this.classNameMatcher = GlobMatcher.create(classNameMatcher);
024 }
025
026
027 public void setMethodName(String methodNameMatcher) {
028 this.methodNameMatcher = GlobMatcher.create(methodNameMatcher);
029 }
030
031
032 public void setSignature(String signatureMatcher) {
033 this.signatureMatcher = GlobMatcher.create(signatureMatcher);
034 }
035
036
037 public boolean isMatch(String className, long modifier) {
038 return classNameMatcher.isMatch(className);
039 }
040
041
042 public boolean isMatch(String className, String methodName, String signature, long modifier) {
043 return classNameMatcher.isMatch(className)
044 && methodNameMatcher.isMatch(methodName)
045 && signatureMatcher.isMatch(signature);
046 }
047
048 public String toString() {
049 StringBuffer sb = new StringBuffer();
050 sb.append("<MatcherMethodCriteria>");
051 sb.append("<Class>");
052 sb.append(classNameMatcher);
053 sb.append("</Class>");
054 sb.append("<Method>");
055 sb.append(methodNameMatcher);
056 sb.append("</Method>");
057 sb.append("<Signature>");
058 sb.append(signatureMatcher);
059 sb.append("</Signature>");
060 sb.append("</MatcherMethodCriteria>");
061 return sb.toString();
062 }
063 }