Skip to content

Commit

Permalink
Merge pull request #6 from actiontech/feat/more_detail
Browse files Browse the repository at this point in the history
Feat/more detail
  • Loading branch information
sjjian authored Jul 14, 2023
2 parents 23f341c + 8d3444a commit f3301b4
Show file tree
Hide file tree
Showing 19 changed files with 747 additions and 184 deletions.
7 changes: 7 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.2'
}

setupDependencies {
doLast {
// Fixes IDEA-298989.
fileTree("$buildDir/instrumented/instrumentCode") { include("**/*Form.class") }.files.forEach { delete(it) }
}
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
pluginName = "SQLE"
Expand Down
49 changes: 37 additions & 12 deletions src/main/java/com/actiontech/sqle/action/Audit.java
Original file line number Diff line number Diff line change
@@ -1,34 +1,59 @@
package com.actiontech.sqle.action;

import com.actiontech.sqle.config.SQLEAuditResult;
import com.actiontech.sqle.config.SQLESQLAnalysisResult;
import com.actiontech.sqle.config.SQLESettings;
import com.actiontech.sqle.from.SQLEAuditResultUI;
import com.actiontech.sqle.util.HttpClientUtil;
import com.actiontech.sqle.util.NotifyUtil;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.ui.DialogBuilder;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.openapi.wm.ToolWindowType;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentFactory;

import java.util.List;

public class Audit {
public static void Audit(AnActionEvent e, String sql, HttpClientUtil.AuditType type) {

SQLESettings settings = SQLESettings.getInstance();


HttpClientUtil client = new HttpClientUtil(settings);
try {
SQLEAuditResult result = client.AuditSQL(sql, type);
SQLEAuditResultUI ui = new SQLEAuditResultUI(result);

ApplicationManager.getApplication().invokeLater(() -> {
DialogBuilder builder = new DialogBuilder();
builder.setTitle("SQLE");
builder.centerPanel(ui.getRootPanel());
builder.show();
});

String projectName = settings.getProjectName();
String dataSourceName = settings.getDataSourceName();
String schemaName = settings.getSchemaName();

List<SQLESQLAnalysisResult> analysisResult = client.GetSQLAnalysis(sql, projectName, dataSourceName, schemaName);
SQLEAuditResultUI ui = new SQLEAuditResultUI(result, analysisResult);

Project project = e.getData(LangDataKeys.PROJECT);
ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project);

String title = String.format("审核结果(评分:%s)", result.getScore());
toolWindowManager.unregisterToolWindow(title);
ToolWindow toolWindow = toolWindowManager.registerToolWindow(title, true, ToolWindowAnchor.BOTTOM);
createToolWindow(toolWindow, ui);
} catch (Exception exception) {
String errMessage = NotifyUtil.getExceptionMessage(exception);
NotifyUtil.showErrorMessageDialog("Audit SQL Failed", errMessage);
}
}

public static void createToolWindow(ToolWindow toolWindow, SQLEAuditResultUI ui) {
ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
Content content = contentFactory.createContent(ui.getRootPanel(), "", false);
toolWindow.getContentManager().addContent(content);

toolWindow.setType(ToolWindowType.DOCKED, null);
toolWindow.setAvailable(true);
toolWindow.show(null);
}
}
18 changes: 18 additions & 0 deletions src/main/java/com/actiontech/sqle/config/ExplainClassicResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

import java.util.List;
import java.util.Map;

@Data
@ToString
public class ExplainClassicResult {
@SerializedName("rows")
private List<Map<String, String>> rows;

@SerializedName("head")
private List<TableMetaItemHeadResV1> head;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class SQLEDataSourceNameListResult {
@SerializedName("instance_name")
private String instanceName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class SQLEProjectNameListResult {
@SerializedName("name")
private String Name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

import java.util.List;

@Data
@ToString
public class SQLESQLAnalysisResult {
@SerializedName("sql_explain")
private SQLExplain sqlExplain;

@SerializedName("table_meta")
private List<TableMeta> tableMeta;
}
3 changes: 3 additions & 0 deletions src/main/java/com/actiontech/sqle/config/SQLESettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public class SQLESettings implements PersistentStateComponent<SQLESettings> {
private String UserName;
private String Password;
private String DBType;
private String ProjectName;
private String DataSourceName;
private String SchemaName;
private String Token;

public static SQLESettings getInstance() {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/com/actiontech/sqle/config/SQLExplain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class SQLExplain {
@SerializedName("sql")
private String SQL;

@SerializedName("classic_result")
private ExplainClassicResult classicResult;
}
19 changes: 19 additions & 0 deletions src/main/java/com/actiontech/sqle/config/TableColumns.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.actiontech.sqle.config;


import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

import java.util.List;
import java.util.Map;

@Data
@ToString
public class TableColumns {
@SerializedName("rows")
private List<Map<String, String>> rows;

@SerializedName("head")
private List<TableMetaItemHeadResV1> head;
}
18 changes: 18 additions & 0 deletions src/main/java/com/actiontech/sqle/config/TableIndexes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

import java.util.List;
import java.util.Map;

@Data
@ToString
public class TableIndexes {
@SerializedName("rows")
private List<Map<String, String>> rows;

@SerializedName("head")
private List<TableMetaItemHeadResV1> head;
}
21 changes: 21 additions & 0 deletions src/main/java/com/actiontech/sqle/config/TableMeta.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class TableMeta {
@SerializedName("name")
private String Name;

@SerializedName("schema")
private String Schema;

@SerializedName("columns")
private TableColumns Columns;

@SerializedName("indexes")
private TableIndexes Indexes;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.actiontech.sqle.config;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class TableMetaItemHeadResV1 {
@SerializedName("field_name")
private String fieldName;
}
Loading

0 comments on commit f3301b4

Please sign in to comment.