Skip to content

Commit 8c7468c

Browse files
gdaleckaFylmTM
authored andcommitted
apply variables refactoring in given statement only (#24)
1 parent 1f903e2 commit 8c7468c

File tree

6 files changed

+27
-12
lines changed

6 files changed

+27
-12
lines changed

language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/references/impl/CypherVariableReference.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
import com.intellij.openapi.util.TextRange;
55
import com.intellij.psi.PsiElement;
66
import com.intellij.psi.ResolveResult;
7+
import com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.CypherStatement;
78
import com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.CypherTypes;
89
import com.neueda.jetbrains.plugin.graphdb.language.cypher.references.CypherReferenceBase;
910
import com.neueda.jetbrains.plugin.graphdb.language.cypher.util.CypherUtil;
11+
import com.neueda.jetbrains.plugin.graphdb.language.cypher.util.PsiTraversalUtilities;
1012
import com.neueda.jetbrains.plugin.graphdb.platform.GraphIcons;
1113
import org.jetbrains.annotations.NotNull;
1214

@@ -24,7 +26,8 @@ public CypherVariableReference(@NotNull PsiElement element, TextRange textRange)
2426
@NotNull
2527
@Override
2628
public ResolveResult[] multiResolve(boolean incompleteCode) {
27-
return resolveResults(CypherUtil.findAllByName(myElement.getContainingFile(), CypherTypes.VARIABLE, name));
29+
PsiElement statementElement = PsiTraversalUtilities.getParentOfType(myElement, CypherStatement.class);
30+
return resolveResults(CypherUtil.findAllByName(statementElement, CypherTypes.VARIABLE, name));
2831
}
2932

3033
@NotNull

language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/util/CypherUtil.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.intellij.openapi.project.Project;
44
import com.intellij.openapi.vfs.VirtualFile;
5+
import com.intellij.psi.PsiElement;
56
import com.intellij.psi.PsiFile;
67
import com.intellij.psi.PsiManager;
78
import com.intellij.psi.search.FileTypeIndex;
@@ -42,6 +43,10 @@ public static <T extends CypherNamedElement> List<T> findAllByName(PsiFile file,
4243
return findAllAndFilter(file, elementType, (element) -> name.equals(element.getName()));
4344
}
4445

46+
public static <T extends CypherNamedElement> List<T> findAllByName(PsiElement psiElement, IElementType elementType, String name) {
47+
return findAllAndFilter(psiElement, elementType, (element) -> name.equals(element.getName()));
48+
}
49+
4550
public static <T extends CypherNamedElement> List<T> findAllAndFilter(Project project, IElementType elementType, Filter filter) {
4651
Collection<VirtualFile> virtualFiles = FileBasedIndex.getInstance()
4752
.getContainingFiles(FileTypeIndex.NAME, CypherFileType.INSTANCE, GlobalSearchScope.allScope(project));
@@ -59,9 +64,21 @@ public static <T extends CypherNamedElement> List<T> findAllAndFilter(Project pr
5964
}
6065

6166
public static <T extends CypherNamedElement> List<T> findAllAndFilter(PsiFile file, IElementType elementType, Filter filter) {
62-
List<T> sameElements = null;
6367
List<T> candidates = TraverseUtil.collectPsiElementsByType(file, elementType);
68+
return filterSameElementsFromCandidates(candidates, filter);
69+
}
70+
71+
public static <T extends CypherNamedElement> List<T> findAllAndFilter(PsiElement psiElement, IElementType elementType, Filter filter) {
72+
List<T> candidates = TraverseUtil.collectPsiElementsByType(psiElement, elementType);
73+
return filterSameElementsFromCandidates(candidates, filter);
74+
}
75+
76+
public interface Filter {
77+
boolean filter(CypherNamedElement element);
78+
}
6479

80+
private static <T extends CypherNamedElement> List<T> filterSameElementsFromCandidates(List<T> candidates, Filter filter) {
81+
List<T> sameElements = null;
6582
for (T candidate : candidates) {
6683
if (filter.filter(candidate)) {
6784
if (sameElements == null) {
@@ -72,10 +89,5 @@ public static <T extends CypherNamedElement> List<T> findAllAndFilter(PsiFile fi
7289
}
7390

7491
return sameElements != null ? sameElements : Collections.emptyList();
75-
76-
}
77-
78-
public interface Filter {
79-
boolean filter(CypherNamedElement element);
8092
}
8193
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/psi/PsiTraversalUtilities.java renamed to language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/util/PsiTraversalUtilities.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.neueda.jetbrains.plugin.graphdb.jetbrains.psi;
1+
package com.neueda.jetbrains.plugin.graphdb.language.cypher.util;
22

33
import com.intellij.psi.PsiElement;
44
import com.intellij.psi.PsiFile;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
MATCH (renamed)
2-
RETURN (renamed);
1+
MATCH (renameThis)
2+
RETURN (renameThis);
33

44
MATCH (renamed)
55
RETURN (renamed);

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/actions/execute/ExecuteQueryAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.analytics.Analytics;
1818
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourcesComponent;
1919
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.DataSourceApi;
20-
import com.neueda.jetbrains.plugin.graphdb.jetbrains.psi.PsiTraversalUtilities;
20+
import com.neueda.jetbrains.plugin.graphdb.language.cypher.util.PsiTraversalUtilities;
2121
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.ConsoleToolWindow;
2222
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryParametersRetrievalErrorEvent;
2323
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params.ParametersService;

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/highlighter/SyncedElementHighlighter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.intellij.psi.PsiElement;
1111
import com.intellij.psi.PsiFile;
1212
import com.intellij.ui.Colors;
13-
import com.neueda.jetbrains.plugin.graphdb.jetbrains.psi.PsiTraversalUtilities;
13+
import com.neueda.jetbrains.plugin.graphdb.language.cypher.util.PsiTraversalUtilities;
1414
import com.neueda.jetbrains.plugin.graphdb.platform.GraphLanguages;
1515

1616
public class SyncedElementHighlighter {

0 commit comments

Comments
 (0)