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    }