Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
577ac2e8
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
577ac2e8
编写于
1月 09, 2020
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#2928 SQL Script execute task
Former-commit-id:
dc789342
上级
5b81a3a9
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
306 addition
and
8 deletion
+306
-8
plugins/org.jkiss.dbeaver.data.transfer.ui/plugin.xml
plugins/org.jkiss.dbeaver.data.transfer.ui/plugin.xml
+1
-0
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/sql/ui/wizard/SQLTaskConfigurationWizard.java
...eaver/tools/sql/ui/wizard/SQLTaskConfigurationWizard.java
+40
-0
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/sql/ui/wizard/SQLTaskConfigurator.java
...kiss/dbeaver/tools/sql/ui/wizard/SQLTaskConfigurator.java
+219
-0
plugins/org.jkiss.dbeaver.data.transfer/META-INF/MANIFEST.MF
plugins/org.jkiss.dbeaver.data.transfer/META-INF/MANIFEST.MF
+2
-1
plugins/org.jkiss.dbeaver.data.transfer/plugin.xml
plugins/org.jkiss.dbeaver.data.transfer/plugin.xml
+5
-0
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/sql/SQLTConstants.java
...ansfer/src/org/jkiss/dbeaver/tools/sql/SQLTConstants.java
+26
-0
plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tools/ToolsPropertyTester.java
...s.ui/src/org/jkiss/dbeaver/tools/ToolsPropertyTester.java
+1
-4
plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tools/registry/ToolsRegistry.java
...i/src/org/jkiss/dbeaver/tools/registry/ToolsRegistry.java
+8
-3
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
+4
-0
未找到文件。
plugins/org.jkiss.dbeaver.data.transfer.ui/plugin.xml
浏览文件 @
577ac2e8
...
...
@@ -102,6 +102,7 @@
<extension
point=
"org.jkiss.dbeaver.task"
>
<configurator
type=
"dataTransfer"
class=
"org.jkiss.dbeaver.tools.transfer.ui.wizard.DataTransferTaskConfigurator"
/>
<configurator
type=
"sql"
class=
"org.jkiss.dbeaver.tools.sql.ui.wizard.SQLTaskConfigurator"
/>
</extension>
</plugin>
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/sql/ui/wizard/SQLTaskConfigurationWizard.java
0 → 100644
浏览文件 @
577ac2e8
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* 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.tools.sql.ui.wizard
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.tasks.ui.wizard.TaskConfigurationWizard
;
import
org.jkiss.dbeaver.tools.sql.SQLTConstants
;
import
java.util.Map
;
class
SQLTaskConfigurationWizard
extends
TaskConfigurationWizard
{
@Override
protected
String
getDefaultWindowTitle
()
{
return
"Script Execute"
;
}
@Override
public
String
getTaskTypeId
()
{
return
SQLTConstants
.
TASK_SCRIPT_EXECUTE
;
}
@Override
public
void
saveTaskState
(
DBRRunnableContext
runnableContext
,
Map
<
String
,
Object
>
state
)
{
}
}
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/sql/ui/wizard/SQLTaskConfigurator.java
0 → 100644
浏览文件 @
577ac2e8
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* 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.tools.sql.ui.wizard
;
import
org.eclipse.core.resources.IContainer
;
import
org.eclipse.core.resources.IFile
;
import
org.eclipse.core.resources.IFolder
;
import
org.eclipse.core.resources.IResource
;
import
org.eclipse.jface.viewers.ISelection
;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.eclipse.jface.viewers.Viewer
;
import
org.eclipse.jface.viewers.ViewerFilter
;
import
org.eclipse.jface.wizard.IWizard
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Group
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.app.DBPProject
;
import
org.jkiss.dbeaver.model.navigator.DBNResource
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.model.task.DBTTaskConfigPanel
;
import
org.jkiss.dbeaver.model.task.DBTTaskConfigurator
;
import
org.jkiss.dbeaver.model.task.DBTTaskType
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.controls.SelectDataSourceCombo
;
import
org.jkiss.dbeaver.ui.navigator.INavigatorFilter
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
import
org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree
;
import
org.jkiss.dbeaver.ui.navigator.database.load.TreeNodeSpecial
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.Collection
;
/**
* SQL task configurator
*/
public
class
SQLTaskConfigurator
implements
DBTTaskConfigurator
{
private
static
final
Log
log
=
Log
.
getLog
(
SQLTaskConfigurator
.
class
);
@Override
public
ConfigPanel
createInputConfigurator
(
DBRRunnableContext
runnableContext
,
@NotNull
DBTTaskType
taskType
)
{
return
new
ConfigPanel
(
runnableContext
,
taskType
);
}
@Override
public
IWizard
createTaskConfigWizard
(
@NotNull
DBTTask
taskConfiguration
)
{
return
new
SQLTaskConfigurationWizard
();
}
private
static
class
ConfigPanel
implements
DBTTaskConfigPanel
{
private
DBRRunnableContext
runnableContext
;
private
DBTTaskType
taskType
;
private
DBPProject
currentProject
;
private
SQLTaskConfigurationWizard
sqlWizard
;
private
Runnable
propertyChangeListener
;
private
DBNResource
selectedScript
;
private
DBPProject
selectedProject
;
private
SelectDataSourceCombo
dsSelectCombo
;
ConfigPanel
(
DBRRunnableContext
runnableContext
,
DBTTaskType
taskType
)
{
this
.
runnableContext
=
runnableContext
;
this
.
taskType
=
taskType
;
this
.
currentProject
=
NavigatorUtils
.
getSelectedProject
();
}
@Override
public
void
createControl
(
Object
parent
,
Object
wizard
,
Runnable
propertyChangeListener
)
{
sqlWizard
=
(
SQLTaskConfigurationWizard
)
wizard
;
this
.
propertyChangeListener
=
propertyChangeListener
;
Group
group
=
UIUtils
.
createControlGroup
(
(
Composite
)
parent
,
"SQL Script parameters"
,
1
,
GridData
.
FILL_BOTH
,
0
);
INavigatorFilter
filter
=
null
;
/*new INavigatorFilter() {
@Override
public boolean filterFolders() {
return false;
}
@Override
public boolean isLeafObject(Object object) {
return object instanceof DBNResource && ((DBNResource) object).getResource() instanceof IFile;
}
@Override
public boolean select(Object element) {
if (element instanceof DBNRoot) {
return true;
}
if (!(element instanceof DBNResource)) {
return false;
}
return isResourceApplicable((DBNResource) element);
}
}*/
;
DatabaseNavigatorTree
dataSourceTree
=
new
DatabaseNavigatorTree
(
group
,
DBWorkbench
.
getPlatform
().
getNavigatorModel
().
getRoot
(),
SWT
.
SINGLE
|
SWT
.
BORDER
,
false
,
filter
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_BOTH
);
gd
.
heightHint
=
300
;
dataSourceTree
.
setLayoutData
(
gd
);
dataSourceTree
.
getViewer
().
addFilter
(
new
ViewerFilter
()
{
@Override
public
boolean
select
(
Viewer
viewer
,
Object
parentElement
,
Object
element
)
{
if
(
element
instanceof
TreeNodeSpecial
)
{
return
true
;
}
if
(
element
instanceof
DBNResource
)
{
return
isResourceApplicable
((
DBNResource
)
element
);
}
return
false
;
}
});
dataSourceTree
.
getViewer
().
addSelectionChangedListener
(
event
->
{
DBPProject
oldSelectedProject
=
selectedProject
;
selectedProject
=
null
;
selectedScript
=
null
;
ISelection
selection
=
event
.
getSelection
();
if
(
selection
instanceof
IStructuredSelection
&&
!
selection
.
isEmpty
())
{
Object
firstElement
=
((
IStructuredSelection
)
selection
).
getFirstElement
();
if
(
firstElement
instanceof
DBNResource
)
{
selectedScript
=
(
DBNResource
)
firstElement
;
selectedProject
=
selectedScript
.
getOwnerProject
();
}
}
if
(
selectedProject
!=
oldSelectedProject
)
{
dsSelectCombo
.
removeAll
();
if
(
selectedProject
!=
null
)
{
for
(
DBPDataSourceContainer
ds
:
selectedProject
.
getDataSourceRegistry
().
getDataSources
())
{
dsSelectCombo
.
addItem
(
ds
);
}
}
}
updateDataSource
();
});
dsSelectCombo
=
new
SelectDataSourceCombo
(
group
)
{
@Override
protected
DBPProject
getActiveProject
()
{
return
selectedProject
==
null
?
NavigatorUtils
.
getSelectedProject
()
:
selectedProject
;
}
};
}
private
boolean
isResourceApplicable
(
DBNResource
element
)
{
IResource
resource
=
element
.
getResource
();
if
(
resource
instanceof
IFolder
)
{
// FIXME: this is a hack
return
"script folder"
.
equals
(
element
.
getNodeType
());
}
return
resource
instanceof
IContainer
||
(
resource
instanceof
IFile
&&
"sql"
.
equals
(
resource
.
getFileExtension
()));
}
private
void
updateDataSource
()
{
DBPDataSourceContainer
ds
=
null
;
if
(
selectedScript
!=
null
)
{
Collection
<
DBPDataSourceContainer
>
associatedDataSources
=
selectedScript
.
getAssociatedDataSources
();
if
(!
CommonUtils
.
isEmpty
(
associatedDataSources
))
{
ds
=
associatedDataSources
.
iterator
().
next
();
}
}
dsSelectCombo
.
select
(
ds
);
if
(
propertyChangeListener
!=
null
)
{
propertyChangeListener
.
run
();
}
}
private
void
updateSettings
(
Runnable
propertyChangeListener
)
{
// saveSettings();
// propertyChangeListener.run();
// UIUtils.asyncExec(() -> UIUtils.packColumns(objectsTable, true));
}
@Override
public
void
loadSettings
()
{
}
@Override
public
void
saveSettings
()
{
}
@Override
public
boolean
isComplete
()
{
return
selectedScript
!=
null
&&
dsSelectCombo
.
getSelectedItem
()
!=
null
;
}
}
}
plugins/org.jkiss.dbeaver.data.transfer/META-INF/MANIFEST.MF
浏览文件 @
577ac2e8
...
...
@@ -7,7 +7,8 @@ Bundle-Version: 2.0.8.qualifier
Bundle-Release-Date: 20200106
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.jkiss.dbeaver.tools.transfer,
Export-Package: org.jkiss.dbeaver.tools.sql,
org.jkiss.dbeaver.tools.transfer,
org.jkiss.dbeaver.tools.transfer.database,
org.jkiss.dbeaver.tools.transfer.registry,
org.jkiss.dbeaver.tools.transfer.stream,
...
...
plugins/org.jkiss.dbeaver.data.transfer/plugin.xml
浏览文件 @
577ac2e8
...
...
@@ -187,6 +187,11 @@
<task
id=
"dataImport"
name=
"Data import"
description=
"Data import task"
icon=
"icons/import.png"
type=
"dataTransfer"
handler=
"org.jkiss.dbeaver.tools.transfer.task.DTTaskHandlerImport"
>
<objectType
name=
"org.jkiss.dbeaver.model.struct.DBSDataManipulator"
/>
</task>
<category
id=
"sql"
name=
"SQL"
description=
"SQL execute tasks"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/sql.png"
/>
<task
id=
"scriptExecute"
name=
"SQL Script"
description=
"Execute SQL script"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec.png"
type=
"sql"
handler=
"org.jkiss.dbeaver.tools.sql.task.SQLScriptExecuteHandler"
>
<objectType
name=
"org.eclipse.core.resources.IFile"
/>
</task>
</extension>
<extension
point=
"org.jkiss.dbeaver.serialize"
>
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/sql/SQLTConstants.java
0 → 100644
浏览文件 @
577ac2e8
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* 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.tools.sql
;
/**
* SQL tasks constants
*/
public
class
SQLTConstants
{
public
static
final
String
TASK_SCRIPT_EXECUTE
=
"scriptExecute"
;
}
plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tools/ToolsPropertyTester.java
浏览文件 @
577ac2e8
...
...
@@ -19,10 +19,8 @@ package org.jkiss.dbeaver.tools;
import
org.eclipse.core.expressions.PropertyTester
;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.eclipse.ui.IWorkbenchPart
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.tools.registry.ToolsRegistry
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
/**
* ToolsPropertyTester
...
...
@@ -50,8 +48,7 @@ public class ToolsPropertyTester extends PropertyTester
switch
(
property
)
{
case
PROP_HAS_TOOLS:
{
DBSObject
object
=
RuntimeUtils
.
getObjectAdapter
(
structuredSelection
.
getFirstElement
(),
DBSObject
.
class
);
return
object
!=
null
&&
ToolsRegistry
.
getInstance
().
hasTools
(
structuredSelection
);
return
ToolsRegistry
.
getInstance
().
hasTools
(
structuredSelection
);
}
}
return
false
;
...
...
plugins/org.jkiss.dbeaver.tasks.ui/src/org/jkiss/dbeaver/tools/registry/ToolsRegistry.java
浏览文件 @
577ac2e8
...
...
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IConfigurationElement;
import
org.eclipse.core.runtime.IExtensionRegistry
;
import
org.eclipse.core.runtime.Platform
;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.jkiss.dbeaver.model.DBPObject
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
...
...
@@ -107,13 +108,17 @@ public class ToolsRegistry
public
boolean
hasTools
(
IStructuredSelection
selection
)
{
boolean
singleObject
=
selection
.
size
()
==
1
;
for
(
Iterator
iter
=
selection
.
iterator
();
iter
.
hasNext
();
)
{
DBSObject
selectedObject
=
DBUtils
.
getFromObject
(
iter
.
next
());
if
(
selectedObject
!=
null
)
{
Object
item
=
iter
.
next
();
DBSObject
dbObject
=
DBUtils
.
getFromObject
(
item
);
if
(
dbObject
!=
null
)
{
item
=
dbObject
;
}
if
(
item
instanceof
DBPObject
)
{
for
(
ToolDescriptor
descriptor
:
tools
)
{
if
(
descriptor
.
isSingleton
()
&&
!
singleObject
)
{
continue
;
}
if
(
descriptor
.
appliesTo
(
selectedObject
))
{
if
(
descriptor
.
appliesTo
(
(
DBPObject
)
item
))
{
return
true
;
}
}
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
577ac2e8
...
...
@@ -3421,6 +3421,10 @@ public class SQLEditor extends SQLEditorBase implements
}
private
void
dumpOutput
(
DBRProgressMonitor
monitor
)
{
if
(
outputViewer
==
null
)
{
return
;
}
List
<
ServerOutputInfo
>
outputs
;
synchronized
(
serverOutputs
)
{
outputs
=
new
ArrayList
<>(
serverOutputs
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录