summaryrefslogtreecommitdiff
path: root/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchPredicateProvider.java
diff options
context:
space:
mode:
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.java62
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);
+ }
+
+ }
+}