Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
aeee9c16
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,发现更多精彩内容 >>
提交
aeee9c16
编写于
9月 17, 2016
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Scripts export/import wizards fixes
上级
8c75e6c8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
60 addition
and
91 deletion
+60
-91
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportUtils.java
...c/org/jkiss/dbeaver/tools/scripts/ScriptsExportUtils.java
+0
-71
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java
.../org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java
+42
-12
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizardPage.java
.../jkiss/dbeaver/tools/scripts/ScriptsExportWizardPage.java
+11
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizardPage.java
.../jkiss/dbeaver/tools/scripts/ScriptsImportWizardPage.java
+7
-4
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportUtils.java
已删除
100644 → 0
浏览文件 @
8c75e6c8
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package
org.jkiss.dbeaver.tools.scripts
;
import
org.eclipse.core.resources.IFolder
;
import
org.eclipse.core.resources.IProject
;
import
org.eclipse.core.runtime.CoreException
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.navigator.DBNNode
;
import
org.jkiss.dbeaver.model.navigator.DBNProject
;
import
org.jkiss.dbeaver.model.navigator.DBNResource
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.ui.resources.ResourceUtils
;
/**
* Utils
*/
class
ScriptsExportUtils
{
private
static
final
Log
log
=
Log
.
getLog
(
ScriptsExportUtils
.
class
);
static
DBNNode
getScriptsNode
()
{
final
IProject
activeProject
=
DBeaverCore
.
getInstance
().
getProjectRegistry
().
getActiveProject
();
if
(
activeProject
==
null
)
{
return
DBeaverCore
.
getInstance
().
getNavigatorModel
().
getRoot
();
}
final
DBNProject
projectNode
=
DBeaverCore
.
getInstance
().
getNavigatorModel
().
getRoot
().
getProject
(
activeProject
);
DBNNode
scriptsNode
=
projectNode
;
final
IFolder
scriptsFolder
;
try
{
scriptsFolder
=
ResourceUtils
.
getScriptsFolder
(
activeProject
,
false
);
}
catch
(
CoreException
e
)
{
log
.
error
(
e
);
return
scriptsNode
;
}
if
(!
scriptsFolder
.
exists
())
{
return
scriptsNode
;
}
try
{
for
(
DBNNode
projectFolder
:
projectNode
.
getChildren
(
VoidProgressMonitor
.
INSTANCE
))
{
if
(
projectFolder
instanceof
DBNResource
&&
((
DBNResource
)
projectFolder
).
getResource
().
equals
(
scriptsFolder
))
{
scriptsNode
=
projectFolder
;
break
;
}
}
}
catch
(
DBException
e
)
{
log
.
error
(
e
);
}
return
scriptsNode
;
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java
浏览文件 @
aeee9c16
...
...
@@ -17,7 +17,6 @@
*/
package
org.jkiss.dbeaver.tools.scripts
;
import
org.jkiss.dbeaver.Log
;
import
org.eclipse.core.resources.IFile
;
import
org.eclipse.core.resources.IFolder
;
import
org.eclipse.core.resources.IResource
;
...
...
@@ -26,6 +25,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import
org.eclipse.jface.wizard.Wizard
;
import
org.eclipse.ui.IExportWizard
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
...
...
@@ -33,7 +33,7 @@ import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.
dbeaver.utils.Content
Utils
;
import
org.jkiss.
utils.IO
Utils
;
import
java.io.File
;
import
java.io.FileOutputStream
;
...
...
@@ -41,6 +41,7 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
public
class
ScriptsExportWizard
extends
Wizard
implements
IExportWizard
{
...
...
@@ -98,17 +99,48 @@ public class ScriptsExportWizard extends Wizard implements IExportWizard {
public
void
exportScripts
(
DBRProgressMonitor
monitor
,
final
ScriptsExportData
exportData
)
throws
IOException
,
CoreException
,
InterruptedException
{
for
(
IResource
res
:
exportData
.
getScripts
())
{
Collection
<
IResource
>
scripts
=
exportData
.
getScripts
();
int
totalFiles
=
0
;
for
(
IResource
res
:
scripts
)
{
if
(
res
instanceof
IFolder
)
{
totalFiles
+=
countFiles
((
IFolder
)
res
);
}
else
{
totalFiles
++;
}
}
monitor
.
beginTask
(
"Export scripts"
,
totalFiles
);
for
(
IResource
res
:
scripts
)
{
if
(
res
instanceof
IFolder
)
{
exportFolder
(
monitor
,
(
IFolder
)
res
,
exportData
);
}
else
{
exportScript
(
monitor
,
(
IFile
)
res
,
exportData
);
}
}
monitor
.
done
();
}
private
int
countFiles
(
IFolder
folder
)
{
try
{
int
count
=
0
;
for
(
IResource
res
:
folder
.
members
())
{
if
(
res
instanceof
IFile
)
{
count
++;
}
else
if
(
res
instanceof
IFolder
)
{
count
+=
countFiles
((
IFolder
)
res
);
}
}
return
count
;
}
catch
(
CoreException
e
)
{
return
0
;
}
}
private
void
exportFolder
(
DBRProgressMonitor
monitor
,
IFolder
folder
,
final
ScriptsExportData
exportData
)
throws
CoreException
,
IOException
{
if
(
monitor
.
isCanceled
())
{
return
;
}
File
fsDir
=
makeExternalFile
(
folder
,
exportData
.
getOutputFolder
());
if
(!
fsDir
.
exists
())
{
if
(!
fsDir
.
mkdirs
())
{
...
...
@@ -116,6 +148,9 @@ public class ScriptsExportWizard extends Wizard implements IExportWizard {
}
}
for
(
IResource
res
:
folder
.
members
())
{
if
(
monitor
.
isCanceled
())
{
return
;
}
if
(
res
instanceof
IFile
)
{
exportScript
(
monitor
,
(
IFile
)
res
,
exportData
);
}
else
if
(
res
instanceof
IFolder
)
{
...
...
@@ -157,17 +192,12 @@ public class ScriptsExportWizard extends Wizard implements IExportWizard {
throw
new
IOException
(
"Can't create directory '"
+
fileDir
.
getAbsolutePath
()
+
"'"
);
}
}
final
InputStream
scriptContents
=
file
.
getContents
(
true
);
try
{
FileOutputStream
out
=
new
FileOutputStream
(
fsFile
);
try
{
ContentUtils
.
copyStreams
(
scriptContents
,
0
,
out
,
monitor
);
}
finally
{
ContentUtils
.
close
(
out
);
try
(
final
InputStream
scriptContents
=
file
.
getContents
(
true
))
{
try
(
FileOutputStream
out
=
new
FileOutputStream
(
fsFile
))
{
IOUtils
.
copyStream
(
scriptContents
,
out
);
}
}
finally
{
ContentUtils
.
close
(
scriptContents
);
}
monitor
.
worked
(
1
);
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizardPage.java
浏览文件 @
aeee9c16
...
...
@@ -17,12 +17,11 @@
*/
package
org.jkiss.dbeaver.tools.scripts
;
import
org.eclipse.core.resources.IContainer
;
import
org.eclipse.core.resources.IFolder
;
import
org.eclipse.core.resources.IResource
;
import
org.eclipse.jface.dialogs.IMessageProvider
;
import
org.eclipse.jface.viewers.CheckStateChangedEvent
;
import
org.eclipse.jface.viewers.CheckboxTreeViewer
;
import
org.eclipse.jface.viewers.ICheckStateListener
;
import
org.eclipse.jface.viewers.*
;
import
org.eclipse.jface.wizard.WizardPage
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.ModifyEvent
;
...
...
@@ -107,7 +106,7 @@ class ScriptsExportWizardPage extends WizardPage {
placeholder
.
setLayout
(
new
GridLayout
(
1
,
false
));
// Project list
scriptsNavigator
=
new
DatabaseNavigatorTree
(
placeholder
,
ScriptsExportUtils
.
getScriptsNode
(),
SWT
.
BORDER
|
SWT
.
CHECK
);
scriptsNavigator
=
new
DatabaseNavigatorTree
(
placeholder
,
DBeaverCore
.
getInstance
().
getNavigatorModel
().
getRoot
(),
SWT
.
BORDER
|
SWT
.
CHECK
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_BOTH
);
scriptsNavigator
.
setLayoutData
(
gd
);
CheckboxTreeViewer
viewer
=
(
CheckboxTreeViewer
)
scriptsNavigator
.
getViewer
();
...
...
@@ -119,6 +118,14 @@ class ScriptsExportWizardPage extends WizardPage {
}
});
scriptsNavigator
.
getViewer
().
addFilter
(
new
ViewerFilter
()
{
@Override
public
boolean
select
(
Viewer
viewer
,
Object
parentElement
,
Object
element
)
{
return
element
instanceof
DBNResource
&&
((
DBNResource
)
element
).
getResource
()
instanceof
IContainer
;
}
});
// Output folder
Composite
generalSettings
=
UIUtils
.
createPlaceholder
(
placeholder
,
3
);
generalSettings
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
));
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizardPage.java
浏览文件 @
aeee9c16
...
...
@@ -17,6 +17,7 @@
*/
package
org.jkiss.dbeaver.tools.scripts
;
import
org.eclipse.core.resources.IContainer
;
import
org.eclipse.core.resources.IFolder
;
import
org.eclipse.jface.viewers.*
;
import
org.eclipse.jface.wizard.WizardPage
;
...
...
@@ -35,7 +36,9 @@ import org.jkiss.dbeaver.core.CoreMessages;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.model.DBIcon
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.navigator.DBNContainer
;
import
org.jkiss.dbeaver.model.navigator.DBNNode
;
import
org.jkiss.dbeaver.model.navigator.DBNProject
;
import
org.jkiss.dbeaver.model.navigator.DBNResource
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.registry.ProjectRegistry
;
...
...
@@ -71,7 +74,7 @@ class ScriptsImportWizardPage extends WizardPage {
return
!
CommonUtils
.
isEmpty
(
directoryText
.
getText
())
&&
!
CommonUtils
.
isEmpty
(
extensionsText
.
getText
())
&&
importRoot
instanceof
DBNResource
;
importRoot
instanceof
DBNResource
&&
((
DBNResource
)
importRoot
).
getResource
()
instanceof
IFolder
;
}
@Override
...
...
@@ -144,8 +147,8 @@ class ScriptsImportWizardPage extends WizardPage {
}
UIUtils
.
createControlLabel
(
placeholder
,
CoreMessages
.
dialog_scripts_import_wizard_label_root_folder
);
importRoot
=
ScriptsExportUtils
.
getScriptsNode
();
final
DatabaseNavigatorTree
scriptsNavigator
=
new
DatabaseNavigatorTree
(
placeholder
,
importRoot
,
SWT
.
BORDER
|
SWT
.
SINGLE
,
tru
e
);
importRoot
=
DBeaverCore
.
getInstance
().
getNavigatorModel
().
getRoot
();
final
DatabaseNavigatorTree
scriptsNavigator
=
new
DatabaseNavigatorTree
(
placeholder
,
importRoot
,
SWT
.
BORDER
|
SWT
.
SINGLE
,
fals
e
);
scriptsNavigator
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
scriptsNavigator
.
getViewer
().
addSelectionChangedListener
(
new
ISelectionChangedListener
()
{
@Override
...
...
@@ -164,7 +167,7 @@ class ScriptsImportWizardPage extends WizardPage {
@Override
public
boolean
select
(
Viewer
viewer
,
Object
parentElement
,
Object
element
)
{
return
element
instanceof
DBNResource
&&
((
DBNResource
)
element
).
getResource
()
instanceof
I
Fold
er
;
return
element
instanceof
DBNResource
&&
((
DBNResource
)
element
).
getResource
()
instanceof
I
Contain
er
;
}
});
scriptsNavigator
.
getViewer
().
expandToLevel
(
2
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录