Skip to content

Commit 2187ae4

Browse files
author
banzhe
committed
feat: add mybatis scan result icon and fix some bugs
1 parent 01e4d7d commit 2187ae4

File tree

15 files changed

+449
-14
lines changed

15 files changed

+449
-14
lines changed

src/main/java/io/github/linyimin/plugin/component/SqlParamGenerateComponent.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,16 @@ public static ProcessResult<MybatisSqlConfiguration> generate(PsiElement psiElem
4242

4343
PsiMethod psiMethod = null;
4444

45+
String statementId = "";
46+
4547
if (psiElement instanceof PsiIdentifier && psiElement.getParent() instanceof PsiMethod) {
4648

4749
psiMethod = (PsiMethod) psiElement.getParent();
50+
statementId = acquireMethodName(psiMethod);
4851

4952
}
5053

51-
String statementId = "";
54+
5255

5356
if (psiElement instanceof XmlToken && psiElement.getParent() instanceof XmlTag) {
5457
List<PsiMethod> methods = MapperXmlProcessor.processMapperMethod(psiElement.getParent());
@@ -70,11 +73,10 @@ public static ProcessResult<MybatisSqlConfiguration> generate(PsiElement psiElem
7073
return ProcessResult.fail(String.format("method of %s is not exist.", statementId));
7174
}
7275

73-
String method = acquireMethodName(psiMethod);
7476
String params = generateMethodParam(psiMethod, parser);
7577

7678
if (cache) {
77-
sqlConfig.setMethod(method);
79+
sqlConfig.setMethod(statementId);
7880
sqlConfig.setParams(params);
7981
sqlConfig.setUpdateSql(true);
8082
if (parser instanceof RandomPOJO2JSONParser) {
@@ -89,7 +91,7 @@ public static ProcessResult<MybatisSqlConfiguration> generate(PsiElement psiElem
8991

9092
MybatisSqlConfiguration configuration = new MybatisSqlConfiguration();
9193
configuration.setPsiElement(psiElement);
92-
configuration.setMethod(method);
94+
configuration.setMethod(statementId);
9395
configuration.setParams(params);
9496

9597
return ProcessResult.success(configuration);

src/main/java/io/github/linyimin/plugin/ui/MybatisSqlScannerPanel.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@
3131

3232
import javax.swing.*;
3333
import javax.swing.border.EmptyBorder;
34-
import javax.swing.tree.DefaultTreeModel;
35-
import javax.swing.tree.TreePath;
3634
import java.awt.*;
3735
import java.util.List;
3836
import java.util.Set;
39-
import java.util.function.Consumer;
4037

4138
/**
4239
* @author banzhe
@@ -115,6 +112,12 @@ private void initRadioButtonGroup() {
115112
buttonGroup.add(complianceWithSpecRadioButton);
116113
buttonGroup.add(doesNotMeetSpecRadioButton);
117114
buttonGroup.add(fullTableScanRadioButton);
115+
116+
this.allRadioButton.addMouseListener(new MouseCursorAdapter(this.allRadioButton));
117+
this.complianceWithSpecRadioButton.addMouseListener(new MouseCursorAdapter(this.complianceWithSpecRadioButton));
118+
this.doesNotMeetSpecRadioButton.addMouseListener(new MouseCursorAdapter(this.doesNotMeetSpecRadioButton));
119+
this.fullTableScanRadioButton.addMouseListener(new MouseCursorAdapter(this.fullTableScanRadioButton));
120+
118121
}
119122

120123
private void initText() {
@@ -144,7 +147,17 @@ public void listen() {
144147
backgroundTaskQueue.run(new Task.Backgroundable(project, Constant.APPLICATION_NAME) {
145148
@Override
146149
public void run(@NotNull ProgressIndicator indicator) {
150+
ApplicationManager.getApplication().invokeLater(() -> {
151+
scannerResultPanel.setLayout(new BorderLayout());
152+
scannerResultPanel.remove(scannerResultContentPanel);
153+
scannerResultPanel.add(infoPane.getInfoPane());
154+
infoPane.setText("Scan mybatis sql...");
155+
});
147156
createTree();
157+
ApplicationManager.getApplication().invokeLater(() -> {
158+
scannerResultPanel.remove(infoPane.getInfoPane());
159+
scannerResultPanel.add(scannerResultContentPanel);
160+
});
148161
}
149162
});
150163
}

src/main/java/io/github/linyimin/plugin/ui/MybatisSqlViewerToolWindow.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ public MybatisSqlViewerToolWindow(Project project) {
8383
this.mybatisModePanel.setBorder(Constant.LINE_BORDER);
8484

8585
this.mybatisModeCheckBox.addItemListener(e -> this.mybatisModeCheckBoxListener());
86+
this.mybatisModeCheckBox.addMouseListener(new MouseCursorAdapter(this.mybatisModeCheckBox));
87+
88+
this.totalTabbedPanel.addMouseListener(new MouseCursorAdapter(this.totalTabbedPanel));
8689

8790
}
8891

src/main/java/io/github/linyimin/plugin/ui/ParamTabbedPane.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public void mouseClicked(MouseEvent event) {
5656
}
5757
});
5858

59+
this.paramTabbedPanel.addMouseListener(new MouseCursorAdapter(this.paramTabbedPanel));
60+
5961
}
6062

6163
public JTabbedPane getParamTabbedPanel() {

src/main/java/io/github/linyimin/plugin/ui/SpecifyTableTabbedPane.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ public SpecifyTableTabbedPane(Project project, JTabbedPane parent) {
124124

125125
addButtonListener();
126126
addButtonMouseCursorAdapter();
127+
128+
this.specifyTablePanel.addMouseListener(new MouseCursorAdapter(this.specifyTablePanel));
127129
}
128130

129131
private void initMockTypeCombobox() {

src/main/java/io/github/linyimin/plugin/ui/SqlTabbedPane.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ public void mouseClicked(MouseEvent event) {
112112
sqlTabbedPanelListener(true);
113113
}
114114
});
115+
116+
this.sqlTabbedPanel.addMouseListener(new MouseCursorAdapter(this.sqlTabbedPanel));
115117
}
116118

117119
private void initSqlStressPanel() {

src/main/java/io/github/linyimin/plugin/ui/TableTabbedPane.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class TableTabbedPane implements TabbedChangeListener {
3535
public TableTabbedPane(Project project) {
3636
this.project = project;
3737
this.backgroundTaskQueue = new BackgroundTaskQueue(project, Constant.APPLICATION_NAME);
38+
this.tableTabbedPanel.addMouseListener(new MouseCursorAdapter(this.tableTabbedPanel));
3839
}
3940

4041
public JTabbedPane getTableTabbedPanel() {

src/main/java/io/github/linyimin/plugin/ui/tree/NamespaceTreeNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.linyimin.plugin.ui.tree;
22

33
import com.intellij.ui.treeStructure.SimpleNode;
4+
import io.github.linyimin.plugin.utils.IconUtils;
45

56
import java.util.ArrayList;
67
import java.util.List;
@@ -16,6 +17,7 @@ public class NamespaceTreeNode extends BaseSimpleNode {
1617
public NamespaceTreeNode(SimpleNode aParent, String name) {
1718
// 父节点和name赋值
1819
super(aParent, name);
20+
this.getTemplatePresentation().setIcon(IconUtils.GENERATE_ICON);
1921
}
2022

2123
@Override

src/main/java/io/github/linyimin/plugin/ui/tree/RootTreeNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class RootTreeNode extends BaseSimpleNode {
2626

2727
public RootTreeNode(String name) {
2828
super(null, name);
29-
this.getTemplatePresentation().setIcon(IconUtils.GENERATE_ICON);
29+
this.getTemplatePresentation().setIcon(IconUtils.MAPPER_ICON);
3030
}
3131

3232
/**

src/main/java/io/github/linyimin/plugin/ui/tree/TreeListener.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import com.intellij.openapi.progress.BackgroundTaskQueue;
66
import com.intellij.openapi.progress.ProgressIndicator;
77
import com.intellij.openapi.progress.Task;
8+
import com.intellij.openapi.util.Computable;
89
import com.intellij.psi.PsiElement;
910
import com.intellij.ui.treeStructure.SimpleNode;
1011
import com.intellij.ui.treeStructure.SimpleTree;
1112
import com.intellij.util.PsiNavigateUtil;
1213
import io.github.linyimin.plugin.ProcessResult;
14+
import io.github.linyimin.plugin.component.SqlParamGenerateComponent;
1315
import io.github.linyimin.plugin.configuration.model.MybatisSqlConfiguration;
1416
import io.github.linyimin.plugin.constant.Constant;
1517
import io.github.linyimin.plugin.sql.checker.Checker;
@@ -90,9 +92,15 @@ public void mouseReleased(MouseEvent e) {
9092
}
9193

9294
public void updateSqlPanel(MybatisSqlConfiguration configuration) {
93-
this.updateSql(configuration.getSql());
94-
this.validateSql(configuration.getSql());
95-
this.explainSql(configuration.getSql());
95+
ProcessResult<String> sqlResult = ApplicationManager.getApplication().runReadAction((Computable<ProcessResult<String>>) () -> SqlParamGenerateComponent.generateSql(mybatisSqlScannerPanel.getProject(), configuration.getMethod(), configuration.getParams(), false));
96+
if (sqlResult.isSuccess()) {
97+
this.updateSql(sqlResult.getData());
98+
this.validateSql(sqlResult.getData());
99+
} else {
100+
this.updateSql(sqlResult.getErrorMsg());
101+
this.validateSql(Constant.INPUT_SQL_PROMPT);
102+
}
103+
this.explainSql(sqlResult);
96104
}
97105

98106
private void updateSql(String sql) {
@@ -133,18 +141,26 @@ private void validateSql(String sql) {
133141
}
134142
}
135143

136-
private void explainSql(String sql) {
144+
private void explainSql(ProcessResult<String> sqlResult) {
137145

138146
ApplicationManager.getApplication().invokeLater(() -> {
139147
mybatisSqlScannerPanel.getIndexPanel().setLayout(new BorderLayout());
140148
mybatisSqlScannerPanel.getIndexPanel().remove(mybatisSqlScannerPanel.getIndexScrollPane());
141149
mybatisSqlScannerPanel.getIndexPanel().remove(mybatisSqlScannerPanel.getInfoPane().getInfoPane());
142150
mybatisSqlScannerPanel.getIndexPanel().add(mybatisSqlScannerPanel.getInfoPane().getInfoPane());
143-
mybatisSqlScannerPanel.getInfoPane().setText("Loading explain result...");
151+
if (sqlResult.isSuccess()) {
152+
mybatisSqlScannerPanel.getInfoPane().setText("Loading explain result...");
153+
} else {
154+
mybatisSqlScannerPanel.getInfoPane().setText(Constant.INPUT_SQL_PROMPT);
155+
}
144156
});
145157

158+
if (!sqlResult.isSuccess()) {
159+
return;
160+
}
161+
146162
try {
147-
String explainSql = String.format("explain %s", sql);
163+
String explainSql = String.format("explain %s", sqlResult.getData());
148164
SelectResult executeResult = (SelectResult) SqlExecutor.executeSql(this.mybatisSqlScannerPanel.getProject(), explainSql, false);
149165

150166
ApplicationManager.getApplication().invokeLater(() -> {

0 commit comments

Comments
 (0)