001    package org.shiftone.jrat.core.config;
002    
003    import org.shiftone.jrat.core.criteria.IncludeExcludeMethodCriteria;
004    import org.shiftone.jrat.core.criteria.MatcherMethodCriteria;
005    import org.shiftone.jrat.core.criteria.MethodCriteria;
006    import org.shiftone.jrat.util.log.Logger;
007    
008    import java.util.ArrayList;
009    import java.util.List;
010    
011    
012    /**
013     * @author jeff@shiftone.org (Jeff Drost)
014     */
015    public class Profile implements MethodCriteria {
016    
017        private static final Logger LOG = Logger.getLogger(Profile.class);
018        private IncludeExcludeMethodCriteria methodCriteria = new IncludeExcludeMethodCriteria();
019        private String name;
020        private List factories = new ArrayList();
021    
022        public MatcherMethodCriteria createInclude() {
023            MatcherMethodCriteria newCriteria = new MatcherMethodCriteria();
024            methodCriteria.addPositive(newCriteria);
025            return newCriteria;
026        }
027    
028    
029        public MatcherMethodCriteria createExclude() {
030            MatcherMethodCriteria newCriteria = new MatcherMethodCriteria();
031            methodCriteria.addNegative(newCriteria);
032            return newCriteria;
033        }
034    
035        public Handler createFactory() {
036            Handler handler = new Handler();
037            factories.add(handler);
038            return handler;
039        }
040    
041        public boolean isMatch(String className, long modifier) {
042            return methodCriteria.isMatch(className, modifier);
043        }
044    
045        public boolean isMatch(String className, String methodName, String signature, long modifier) {
046            return methodCriteria.isMatch(className, methodName, signature, modifier);
047        }
048    
049    
050        public String getName() {
051            return name;
052        }
053    
054        public void setName(String name) {
055            this.name = name;
056        }
057    
058        public List getFactories() {
059            return factories;
060        }
061    }