Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
a6d55fd5
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a6d55fd5
编写于
6月 30, 2021
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#11533 Query variables: variables panel + model
上级
de83933f
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
336 addition
and
26 deletion
+336
-26
plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/SQLScriptContext.java
...sql/src/org/jkiss/dbeaver/model/sql/SQLScriptContext.java
+23
-13
plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/registry/SQLQueryParameterRegistry.java
...dbeaver/model/sql/registry/SQLQueryParameterRegistry.java
+5
-3
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/exec/DBCScriptContext.java
...el/src/org/jkiss/dbeaver/model/exec/DBCScriptContext.java
+31
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/OSGI-INF/l10n/bundle.properties
...ss.dbeaver.ui.editors.sql/OSGI-INF/l10n/bundle.properties
+2
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/plugin.xml
plugins/org.jkiss.dbeaver.ui.editors.sql/plugin.xml
+5
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
...s.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+35
-10
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java
...c/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java
+1
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerSwitchPanel.java
.../ui/editors/sql/handlers/SQLEditorHandlerSwitchPanel.java
+3
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/internal/SQLEditorMessages.java
...ss/dbeaver/ui/editors/sql/internal/SQLEditorMessages.java
+2
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/internal/SQLEditorMessages.properties
...aver/ui/editors/sql/internal/SQLEditorMessages.properties
+2
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/variables/SQLVariablesPanel.java
...s/dbeaver/ui/editors/sql/variables/SQLVariablesPanel.java
+226
-0
plugins/org.jkiss.dbeaver.ui/icons/sql/variables.png
plugins/org.jkiss.dbeaver.ui/icons/sql/variables.png
+0
-0
plugins/org.jkiss.dbeaver.ui/icons/sql/variables@2x.png
plugins/org.jkiss.dbeaver.ui/icons/sql/variables@2x.png
+0
-0
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java
...org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java
+1
-0
未找到文件。
plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/SQLScriptContext.java
浏览文件 @
a6d55fd5
...
...
@@ -30,17 +30,14 @@ import org.jkiss.utils.CommonUtils;
import
java.io.File
;
import
java.io.PrintWriter
;
import
java.io.Writer
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* SQL script execution context
*/
public
class
SQLScriptContext
implements
DBCScriptContext
{
private
final
Map
<
String
,
Object
>
variables
=
new
HashMap
<>();
private
final
Map
<
String
,
VariableInfo
>
variables
=
new
Linked
HashMap
<>();
private
final
Map
<
String
,
Object
>
defaultParameters
=
new
HashMap
<>();
private
final
Map
<
String
,
Object
>
pragmas
=
new
HashMap
<>();
private
Map
<
String
,
Object
>
statementPragmas
;
...
...
@@ -93,16 +90,16 @@ public class SQLScriptContext implements DBCScriptContext {
@Override
public
Object
getVariable
(
String
name
)
{
Object
value
=
variables
.
get
(
name
);
if
(
va
lue
==
null
&&
parentContext
!=
null
)
{
value
=
parentContext
.
getVariable
(
name
);
VariableInfo
variableInfo
=
variables
.
get
(
name
);
if
(
va
riableInfo
==
null
&&
parentContext
!=
null
)
{
return
parentContext
.
getVariable
(
name
);
}
return
value
;
return
va
riableInfo
==
null
?
null
:
variableInfo
.
va
lue
;
}
@Override
public
void
setVariable
(
String
name
,
Object
value
)
{
variables
.
put
(
name
,
value
);
variables
.
put
(
name
,
new
VariableInfo
(
name
,
value
,
VariableType
.
VARIABLE
)
);
if
(
parentContext
!=
null
)
{
parentContext
.
setVariable
(
name
,
value
);
}
...
...
@@ -116,9 +113,18 @@ public class SQLScriptContext implements DBCScriptContext {
}
}
@Override
public
List
<
VariableInfo
>
getVariables
()
{
return
new
ArrayList
<>(
variables
.
values
());
}
public
void
setVariables
(
Map
<
String
,
Object
>
variables
)
{
this
.
variables
.
clear
();
this
.
variables
.
putAll
(
variables
);
for
(
Map
.
Entry
<
String
,
Object
>
v
:
variables
.
entrySet
())
{
this
.
variables
.
put
(
v
.
getKey
(),
new
VariableInfo
(
v
.
getKey
(),
v
.
getValue
(),
VariableType
.
VARIABLE
));
}
}
public
Object
getParameterDefaultValue
(
String
name
)
{
...
...
@@ -220,6 +226,8 @@ public class SQLScriptContext implements DBCScriptContext {
Object
varValue
=
variables
.
get
(
parameter
.
getVarName
());
if
(
varValue
==
null
)
{
varValue
=
defaultParameters
.
get
(
parameter
.
getVarName
());
}
else
{
varValue
=
((
VariableInfo
)
varValue
).
value
;
}
if
(
varValue
!=
null
)
{
parameter
.
setValue
(
CommonUtils
.
toString
(
varValue
));
...
...
@@ -233,9 +241,11 @@ public class SQLScriptContext implements DBCScriptContext {
}
public
Map
<
String
,
Object
>
getAllParameters
()
{
Map
<
String
,
Object
>
params
=
new
LinkedHashMap
<>();
Map
<
String
,
Object
>
params
=
new
LinkedHashMap
<>(
defaultParameters
.
size
()
+
variables
.
size
()
);
params
.
putAll
(
defaultParameters
);
params
.
putAll
(
variables
);
for
(
Map
.
Entry
<
String
,
VariableInfo
>
v
:
variables
.
entrySet
())
{
params
.
put
(
v
.
getKey
(),
v
.
getValue
().
value
);
}
return
params
;
}
...
...
plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/registry/SQLQueryParameterRegistry.java
浏览文件 @
a6d55fd5
...
...
@@ -28,9 +28,7 @@ import org.jkiss.utils.xml.XMLException;
import
org.xml.sax.Attributes
;
import
java.io.*
;
import
java.util.LinkedHashMap
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.*
;
public
class
SQLQueryParameterRegistry
{
...
...
@@ -65,6 +63,10 @@ public class SQLQueryParameterRegistry
return
registry
;
}
public
List
<
ParameterInfo
>
getAllParameters
()
{
return
new
ArrayList
<>(
parameterMap
.
values
());
}
public
ParameterInfo
getParameter
(
String
name
)
{
return
parameterMap
.
get
(
name
.
toUpperCase
(
Locale
.
ENGLISH
));
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/exec/DBCScriptContext.java
浏览文件 @
a6d55fd5
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.model.exec
;
import
java.io.PrintWriter
;
import
java.util.List
;
/**
* Script context.
...
...
@@ -24,6 +25,34 @@ import java.io.PrintWriter;
*/
public
interface
DBCScriptContext
{
enum
VariableType
{
PARAMETER
(
"Parameter"
),
VARIABLE
(
"Variable"
),
QUERY
(
"Query"
);
private
final
String
title
;
VariableType
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getTitle
()
{
return
title
;
}
}
class
VariableInfo
{
public
String
name
;
public
Object
value
;
public
VariableType
type
;
public
VariableInfo
(
String
name
,
Object
value
,
VariableType
type
)
{
this
.
name
=
name
;
this
.
value
=
value
;
this
.
type
=
type
;
}
}
boolean
hasVariable
(
String
name
);
Object
getVariable
(
String
name
);
...
...
@@ -32,6 +61,8 @@ public interface DBCScriptContext {
void
removeVariable
(
String
name
);
List
<
VariableInfo
>
getVariables
();
<
T
>
T
getData
(
String
key
);
void
setData
(
String
key
,
Object
value
);
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/OSGI-INF/l10n/bundle.properties
浏览文件 @
a6d55fd5
...
...
@@ -93,6 +93,8 @@ command.org.jkiss.dbeaver.ui.editors.sql.show.output.name=Show server output
command.org.jkiss.dbeaver.ui.editors.sql.show.output.description
=
Show server output console
command.org.jkiss.dbeaver.ui.editors.sql.show.log.name
=
Show execution log
command.org.jkiss.dbeaver.ui.editors.sql.show.log.description
=
Show SQL execution log
command.org.jkiss.dbeaver.ui.editors.sql.show.variables.name
=
Show SQL variables
command.org.jkiss.dbeaver.ui.editors.sql.show.variables.description
=
Show active SQL variables
command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.name
=
Toggle results panel
command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.description
=
Show/hide results panel
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/plugin.xml
浏览文件 @
a6d55fd5
...
...
@@ -236,6 +236,7 @@
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.query.prev"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.query.prev.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.query.prev.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.show.output"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.output.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.output.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.show.log"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.log.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.log.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.show.variables"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.variables.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.show.variables.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.switch.panel"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.switch.panel.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.switch.panel.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
...
...
@@ -282,6 +283,7 @@
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.show.output"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/page_output.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.show.log"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/page_error.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.show.variables"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/variables.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.toggleLayout"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/rotate.png"
/>
</extension>
...
...
@@ -457,6 +459,9 @@
<handler
commandId=
"org.jkiss.dbeaver.ui.editors.sql.show.log"
class=
"org.jkiss.dbeaver.ui.editors.sql.handlers.SQLEditorHandlerSwitchPanel"
>
<enabledWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.sql.editor"
/></enabledWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.ui.editors.sql.show.variables"
class=
"org.jkiss.dbeaver.ui.editors.sql.handlers.SQLEditorHandlerSwitchPanel"
>
<enabledWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.sql.editor"
/></enabledWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel"
class=
"org.jkiss.dbeaver.ui.editors.sql.handlers.SQLEditorHandlerToggleResultsPanel"
>
<enabledWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.sql.editor"
/></enabledWhen>
</handler>
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
a6d55fd5
...
...
@@ -101,6 +101,7 @@ import org.jkiss.dbeaver.ui.editors.sql.plan.ExplainPlanViewer;
import
org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationDescriptor
;
import
org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationPanelDescriptor
;
import
org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationRegistry
;
import
org.jkiss.dbeaver.ui.editors.sql.variables.SQLVariablesPanel
;
import
org.jkiss.dbeaver.ui.editors.text.ScriptPositionColumn
;
import
org.jkiss.dbeaver.ui.navigator.INavigatorModelView
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -140,12 +141,13 @@ public class SQLEditor extends SQLEditorBase implements
private
static
final
String
EMBEDDED_BINDING_PREFIX
=
"-- CONNECTION: "
;
private
static
final
Pattern
EMBEDDED_BINDING_PREFIX_PATTERN
=
Pattern
.
compile
(
"--\\s*CONNECTION:\\s*(.+)"
,
Pattern
.
CASE_INSENSITIVE
);
private
static
Image
IMG_DATA_GRID
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_DATA_GRID
);
private
static
Image
IMG_DATA_GRID_LOCKED
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_DATA_GRID_LOCKED
);
private
static
Image
IMG_EXPLAIN_PLAN
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_EXPLAIN_PLAN
);
private
static
Image
IMG_LOG
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_LOG
);
private
static
Image
IMG_OUTPUT
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_OUTPUT
);
private
static
Image
IMG_OUTPUT_ALERT
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_OUTPUT_ALERT
);
private
static
final
Image
IMG_DATA_GRID
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_DATA_GRID
);
private
static
final
Image
IMG_DATA_GRID_LOCKED
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_DATA_GRID_LOCKED
);
private
static
final
Image
IMG_EXPLAIN_PLAN
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_EXPLAIN_PLAN
);
private
static
final
Image
IMG_LOG
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_LOG
);
private
static
final
Image
IMG_VARIABLES
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_VARIABLES
);
private
static
final
Image
IMG_OUTPUT
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_OUTPUT
);
private
static
final
Image
IMG_OUTPUT_ALERT
=
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_PAGE_OUTPUT_ALERT
);
// private static final String TOOLBAR_CONTRIBUTION_ID = "toolbar:org.jkiss.dbeaver.ui.editors.sql.toolbar.side";
// private static final String TOOLBAR_GROUP_TOP = "top";
...
...
@@ -176,6 +178,7 @@ public class SQLEditor extends SQLEditorBase implements
private
SQLLogPanel
logViewer
;
private
SQLEditorOutputConsoleViewer
outputViewer
;
private
SQLVariablesPanel
variablesViewer
;
private
volatile
QueryProcessor
curQueryProcessor
;
private
final
List
<
QueryProcessor
>
queryProcessors
=
new
ArrayList
<>();
...
...
@@ -270,6 +273,10 @@ public class SQLEditor extends SQLEditorBase implements
return
null
;
}
public
SQLScriptContext
getGlobalScriptContext
()
{
return
globalScriptContext
;
}
@Nullable
public
DBPProject
getProject
()
{
...
...
@@ -911,15 +918,19 @@ public class SQLEditor extends SQLEditorBase implements
SWT
.
LEFT
|
SWT
.
CHECK
,
getSite
(),
SQLEditorCommands
.
CMD_SQL_SHOW_OUTPUT
,
true
)
.
setText
(
"Out"
);
false
);
VerticalButton
.
create
(
sideToolBar
,
SWT
.
LEFT
|
SWT
.
CHECK
,
getSite
(),
SQLEditorCommands
.
CMD_SQL_SHOW_LOG
,
true
)
.
setText
(
"Log"
);
false
);
VerticalButton
.
create
(
sideToolBar
,
SWT
.
LEFT
|
SWT
.
CHECK
,
getSite
(),
SQLEditorCommands
.
CMD_SQL_SHOW_VARIABLES
,
false
);
/*
sideToolBar.add(new GroupMarker(TOOLBAR_GROUP_PANELS));
...
...
@@ -1075,6 +1086,7 @@ public class SQLEditor extends SQLEditorBase implements
// Extra views
//planView = new ExplainPlanViewer(this, resultTabs);
logViewer
=
new
SQLLogPanel
(
sqlExtraPanelFolder
,
this
);
variablesViewer
=
new
SQLVariablesPanel
(
sqlExtraPanelFolder
,
this
);
outputViewer
=
new
SQLEditorOutputConsoleViewer
(
getSite
(),
sqlExtraPanelFolder
,
SWT
.
NONE
);
// Create results tab
...
...
@@ -1365,6 +1377,19 @@ public class SQLEditor extends SQLEditorBase implements
null
);
}
public
void
showVariablesPanel
()
{
showExtraView
(
SQLEditorCommands
.
CMD_SQL_SHOW_VARIABLES
,
SQLEditorMessages
.
editors_sql_variables
,
SQLEditorMessages
.
editors_sql_variables_tip
,
IMG_VARIABLES
,
variablesViewer
,
null
);
UIUtils
.
asyncExec
(()
->
{
variablesViewer
.
refreshVariables
();
});
}
public
<
T
>
T
getExtraPresentationPanel
(
Class
<
T
>
panelClass
)
{
for
(
CTabItem
tabItem
:
resultTabs
.
getItems
())
{
if
(
tabItem
.
getData
()
instanceof
SQLEditorPresentationPanel
&&
tabItem
.
getData
().
getClass
()
==
panelClass
)
{
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java
浏览文件 @
a6d55fd5
...
...
@@ -41,6 +41,7 @@ public interface SQLEditorCommands
String
CMD_SQL_SWITCH_PANEL
=
"org.jkiss.dbeaver.ui.editors.sql.switch.panel"
;
String
CMD_SQL_SHOW_OUTPUT
=
"org.jkiss.dbeaver.ui.editors.sql.show.output"
;
String
CMD_SQL_SHOW_LOG
=
"org.jkiss.dbeaver.ui.editors.sql.show.log"
;
String
CMD_SQL_SHOW_VARIABLES
=
"org.jkiss.dbeaver.ui.editors.sql.show.variables"
;
String
CMD_SQL_EDITOR_MAXIMIZE_PANEL
=
"org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel"
;
String
CMD_SQL_EDITOR_CLOSE_TAB
=
"org.jkiss.dbeaver.ui.editors.sql.close.tab"
;
String
CMD_SQL_ASSIST_TEMPLATES
=
"org.jkiss.dbeaver.ui.editors.sql.assist.templates"
;
//$NON-NLS-1$
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerSwitchPanel.java
浏览文件 @
a6d55fd5
...
...
@@ -48,6 +48,9 @@ public class SQLEditorHandlerSwitchPanel extends AbstractHandler {
case
SQLEditorCommands
.
CMD_SQL_SHOW_LOG
:
editor
.
showExecutionLogPanel
();
break
;
case
SQLEditorCommands
.
CMD_SQL_SHOW_VARIABLES
:
editor
.
showVariablesPanel
();
break
;
}
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/internal/SQLEditorMessages.java
浏览文件 @
a6d55fd5
...
...
@@ -65,6 +65,8 @@ public class SQLEditorMessages extends NLS {
public
static
String
editors_sql_error_execution_plan_title
;
public
static
String
editors_sql_execution_log
;
public
static
String
editors_sql_execution_log_tip
;
public
static
String
editors_sql_variables
;
public
static
String
editors_sql_variables_tip
;
public
static
String
editors_sql_explain_plan
;
public
static
String
editors_sql_output
;
public
static
String
editors_sql_output_tip
;
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/internal/SQLEditorMessages.properties
浏览文件 @
a6d55fd5
...
...
@@ -41,6 +41,8 @@ editors_sql_error_execution_plan_message = Can not explain execution plan
editors_sql_error_execution_plan_title
=
Execution plan
editors_sql_execution_log
=
Execution Log
editors_sql_execution_log_tip
=
SQL query execution log
editors_sql_variables
=
Variables
editors_sql_variables_tip
=
Active SQL variables
editors_sql_explain_plan
=
Explain Plan
editors_sql_job_execute_query
=
Execute query
editors_sql_job_execute_script
=
Execute script
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/variables/SQLVariablesPanel.java
0 → 100644
浏览文件 @
a6d55fd5
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2021 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ui.editors.sql.variables
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.custom.SashForm
;
import
org.eclipse.swt.custom.StyledText
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.widgets.*
;
import
org.eclipse.ui.PartInitException
;
import
org.eclipse.ui.texteditor.ITextEditorActionConstants
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionContext
;
import
org.jkiss.dbeaver.model.exec.DBCScriptContext
;
import
org.jkiss.dbeaver.model.sql.SQLScriptContext
;
import
org.jkiss.dbeaver.model.sql.registry.SQLQueryParameterRegistry
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.editors.StringEditorInput
;
import
org.jkiss.dbeaver.ui.editors.SubEditorSite
;
import
org.jkiss.dbeaver.ui.editors.sql.SQLEditor
;
import
org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.List
;
/**
* SQLVariablesPanel
*/
public
class
SQLVariablesPanel
extends
Composite
{
static
protected
final
Log
log
=
Log
.
getLog
(
SQLVariablesPanel
.
class
);
private
final
SQLEditor
mainEditor
;
private
SQLEditorBase
valueEditor
;
private
Table
varsTable
;
private
Button
showParametersCheck
;
public
SQLVariablesPanel
(
Composite
parent
,
SQLEditor
editor
)
{
super
(
parent
,
SWT
.
NONE
);
this
.
mainEditor
=
editor
;
setLayout
(
new
FillLayout
());
}
private
void
createControls
()
{
SashForm
sash
=
new
SashForm
(
this
,
SWT
.
VERTICAL
);
// Variables table
{
Composite
varsGroup
=
UIUtils
.
createPlaceholder
(
sash
,
1
);
varsTable
=
new
Table
(
varsGroup
,
SWT
.
SINGLE
|
SWT
.
FULL_SELECTION
);
varsTable
.
setHeaderVisible
(
true
);
varsTable
.
setLinesVisible
(
true
);
varsTable
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
UIUtils
.
createTableColumn
(
varsTable
,
SWT
.
LEFT
,
"Variable"
);
UIUtils
.
createTableColumn
(
varsTable
,
SWT
.
LEFT
,
"Value"
);
UIUtils
.
createTableColumn
(
varsTable
,
SWT
.
LEFT
,
"Type"
);
Composite
controlPanel
=
UIUtils
.
createComposite
(
varsGroup
,
2
);
controlPanel
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
));
ToolBar
buttonsBar
=
new
ToolBar
(
controlPanel
,
SWT
.
HORIZONTAL
);
buttonsBar
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_VERTICAL
));
ToolItem
addButton
=
UIUtils
.
createToolItem
(
buttonsBar
,
"Add variable"
,
UIIcon
.
ADD
,
new
SelectionAdapter
()
{
});
ToolItem
removeButton
=
UIUtils
.
createToolItem
(
buttonsBar
,
"Delete variable"
,
UIIcon
.
DELETE
,
new
SelectionAdapter
()
{
});
showParametersCheck
=
UIUtils
.
createCheckbox
(
controlPanel
,
"Show parameters"
,
"Show query parameters"
,
false
,
1
);
showParametersCheck
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
refreshVariables
();
}
});
varsTable
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
editCurrentVariable
();
}
});
//sash.addListener(SWT.Resize, event -> UIUtils.packColumns(varsTable, true));
}
// Editor
{
Composite
editorGroup
=
UIUtils
.
createPlaceholder
(
sash
,
1
);
UIUtils
.
createControlLabel
(
editorGroup
,
"Value"
);
Composite
editorPH
=
new
Composite
(
editorGroup
,
SWT
.
NONE
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_BOTH
);
gd
.
verticalIndent
=
3
;
gd
.
horizontalSpan
=
1
;
gd
.
minimumHeight
=
100
;
gd
.
minimumWidth
=
100
;
editorPH
.
setLayoutData
(
gd
);
editorPH
.
setLayout
(
new
FillLayout
());
valueEditor
=
new
SQLEditorBase
()
{
@Nullable
@Override
public
DBCExecutionContext
getExecutionContext
()
{
return
mainEditor
.
getExecutionContext
();
}
@Override
public
void
createPartControl
(
Composite
parent
)
{
super
.
createPartControl
(
parent
);
getAction
(
ITextEditorActionConstants
.
CONTEXT_PREFERENCES
).
setEnabled
(
false
);
}
@Override
public
boolean
isFoldingEnabled
()
{
return
false
;
}
};
try
{
valueEditor
.
init
(
new
SubEditorSite
(
mainEditor
.
getSite
()),
new
StringEditorInput
(
"Variable value"
,
""
,
true
,
GeneralUtils
.
getDefaultFileEncoding
()));
}
catch
(
PartInitException
e
)
{
log
.
error
(
e
);
}
valueEditor
.
createPartControl
(
editorPH
);
valueEditor
.
reloadSyntaxRules
();
//valueEditor.getEditorControl().setEnabled(false);
valueEditor
.
getEditorControlWrapper
().
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
}
}
private
void
editCurrentVariable
()
{
int
selectionIndex
=
varsTable
.
getSelectionIndex
();
StyledText
editorControl
=
valueEditor
.
getEditorControl
();
if
(
editorControl
==
null
)
{
return
;
}
if
(
selectionIndex
>=
0
)
{
TableItem
item
=
varsTable
.
getItem
(
selectionIndex
);
DBCScriptContext
.
VariableInfo
variable
=
(
DBCScriptContext
.
VariableInfo
)
item
.
getData
();
StringEditorInput
sqlInput
=
new
StringEditorInput
(
"Variable "
+
variable
.
name
,
CommonUtils
.
toString
(
variable
.
value
),
false
,
GeneralUtils
.
DEFAULT_ENCODING
);
valueEditor
.
setInput
(
sqlInput
);
valueEditor
.
reloadSyntaxRules
();
}
}
public
void
refreshVariables
()
{
if
(
varsTable
==
null
)
{
createControls
();
}
SQLScriptContext
context
=
mainEditor
.
getGlobalScriptContext
();
varsTable
.
removeAll
();
List
<
DBCScriptContext
.
VariableInfo
>
variables
=
context
.
getVariables
();
if
(
showParametersCheck
.
getSelection
())
{
for
(
SQLQueryParameterRegistry
.
ParameterInfo
param
:
SQLQueryParameterRegistry
.
getInstance
().
getAllParameters
())
{
if
(
context
.
hasVariable
(
param
.
name
))
{
continue
;
}
Object
parameterValue
=
context
.
getParameterDefaultValue
(
param
.
name
);
if
(
parameterValue
==
null
)
{
parameterValue
=
param
.
value
;
}
variables
.
add
(
new
DBCScriptContext
.
VariableInfo
(
param
.
name
,
parameterValue
,
DBCScriptContext
.
VariableType
.
PARAMETER
));
}
}
for
(
DBCScriptContext
.
VariableInfo
variable
:
variables
)
{
TableItem
ti
=
new
TableItem
(
varsTable
,
SWT
.
NONE
);
ti
.
setText
(
0
,
variable
.
name
);
ti
.
setText
(
1
,
CommonUtils
.
toString
(
variable
.
value
));
ti
.
setText
(
2
,
variable
.
type
.
getTitle
());
ti
.
setData
(
variable
);
}
UIUtils
.
packColumns
(
varsTable
,
true
);
valueEditor
.
setInput
(
new
StringEditorInput
(
"Variable"
,
""
,
true
,
GeneralUtils
.
DEFAULT_ENCODING
));
valueEditor
.
reloadSyntaxRules
();
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.ui/icons/sql/variables.png
0 → 100644
浏览文件 @
a6d55fd5
338 字节
plugins/org.jkiss.dbeaver.ui/icons/sql/variables@2x.png
0 → 100644
浏览文件 @
a6d55fd5
601 字节
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java
浏览文件 @
a6d55fd5
...
...
@@ -190,6 +190,7 @@ public class UIIcon {
public
static
final
DBIcon
SQL_VALIDATE
=
new
DBIcon
(
"sql_validate"
,
"sql/sql_validate.png"
);
//$NON-NLS-1$ //$NON-NLS-2$
public
static
final
DBIcon
SQL_PREVIEW
=
new
DBIcon
(
"sql_preview"
,
"sql/sql_preview.png"
);
//$NON-NLS-1$ //$NON-NLS-2$
public
static
final
DBIcon
SQL_TEXT
=
new
DBIcon
(
"sql_text"
,
"sql/sql_text.png"
);
//$NON-NLS-1$ //$NON-NLS-2$
public
static
final
DBIcon
SQL_VARIABLES
=
new
DBIcon
(
"sql_variables"
,
"sql/variables.png"
);
//$NON-NLS-1$ //$NON-NLS-2$
public
static
final
DBIcon
SQL_PAGE_DATA_GRID
=
new
DBIcon
(
"sql/page_data_grid.png"
);
//$NON-NLS-1$
public
static
final
DBIcon
SQL_PAGE_DATA_GRID_LOCKED
=
new
DBIcon
(
"sql/page_data_grid_locked.png"
);
//$NON-NLS-1$
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录