diff options
Diffstat (limited to 'java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java')
-rw-r--r-- | java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java new file mode 100644 index 000000000000..042912e0354c --- /dev/null +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java @@ -0,0 +1,62 @@ +package com.intellij.structuralsearch.impl.matcher; + +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.structuralsearch.MatchOptions; +import com.intellij.structuralsearch.MatchVariableConstraint; +import com.intellij.structuralsearch.impl.matcher.handlers.MatchPredicate; +import com.intellij.structuralsearch.impl.matcher.predicates.*; + +import java.util.Set; + +public class JavaMatchPredicateProvider extends MatchPredicateProvider{ + @Override + public void collectPredicates(MatchVariableConstraint constraint, String name, MatchOptions options, Set<MatchPredicate> predicates) { + if (constraint.isReadAccess()) { + MatchPredicate predicate = new ReadPredicate(); + + if (constraint.isInvertReadAccess()) { + predicate = new NotPredicate(predicate); + } + predicates.add(predicate); + } + + if (constraint.isWriteAccess()) { + MatchPredicate predicate = new WritePredicate(); + + if (constraint.isInvertWriteAccess()) { + predicate = new NotPredicate(predicate); + } + predicates.add(predicate); + } + + if (!StringUtil.isEmptyOrSpaces(constraint.getNameOfExprType())) { + MatchPredicate predicate = new ExprTypePredicate( + constraint.getNameOfExprType(), + name, + constraint.isExprTypeWithinHierarchy(), + options.isCaseSensitiveMatch(), + constraint.isPartOfSearchResults() + ); + + if (constraint.isInvertExprType()) { + predicate = new NotPredicate(predicate); + } + predicates.add(predicate); + } + + if (!StringUtil.isEmptyOrSpaces(constraint.getNameOfFormalArgType())) { + MatchPredicate predicate = new FormalArgTypePredicate( + constraint.getNameOfFormalArgType(), + name, + constraint.isFormalArgTypeWithinHierarchy(), + options.isCaseSensitiveMatch(), + constraint.isPartOfSearchResults() + ); + if (constraint.isInvertFormalType()) { + predicate = new NotPredicate(predicate); + } + predicates.add(predicate); + } + + } +} |