Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
fdb93e46
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,发现更多精彩内容 >>
提交
fdb93e46
编写于
12月 23, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#7444 Regacy code remove.
Former-commit-id:
351808ec
上级
4969ad56
变更
31
显示空白变更内容
内联
并排
Showing
31 changed file
with
146 addition
and
1165 deletion
+146
-1165
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizard.java
.../org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizard.java
+0
-189
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageSettings.java
...beaver/ext/mysql/tools/MySQLExportWizardPageSettings.java
+16
-16
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLScriptExecuteWizard.java
...iss/dbeaver/ext/mysql/tools/MySQLScriptExecuteWizard.java
+2
-63
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLScriptExecuteWizardPageSettings.java
...ext/mysql/tools/MySQLScriptExecuteWizardPageSettings.java
+4
-4
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLToolScript.java
...rc/org/jkiss/dbeaver/ext/mysql/tools/MySQLToolScript.java
+1
-31
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLWizardPageSettings.java
...kiss/dbeaver/ext/mysql/tools/MySQLWizardPageSettings.java
+10
-10
plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java
...s/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java
+6
-5
plugins/org.jkiss.dbeaver.ext.oracle.ui/src/org/jkiss/dbeaver/ext/oracle/ui/tools/OracleScriptExecuteWizard.java
...beaver/ext/oracle/ui/tools/OracleScriptExecuteWizard.java
+3
-69
plugins/org.jkiss.dbeaver.ext.oracle.ui/src/org/jkiss/dbeaver/ext/oracle/ui/tools/OracleScriptExecuteWizardPageSettings.java
...racle/ui/tools/OracleScriptExecuteWizardPageSettings.java
+4
-5
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tasks/OracleScriptExecuteHandler.java
.../dbeaver/ext/oracle/tasks/OracleScriptExecuteHandler.java
+7
-7
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tasks/OracleScriptExecuteSettings.java
...dbeaver/ext/oracle/tasks/OracleScriptExecuteSettings.java
+1
-1
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupRestoreWizard.java
...aver/ext/postgresql/tools/PostgreBackupRestoreWizard.java
+2
-41
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizard.java
...iss/dbeaver/ext/postgresql/tools/PostgreBackupWizard.java
+0
-108
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java
...ext/postgresql/tools/PostgreBackupWizardPageSettings.java
+16
-16
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreRestoreWizard.java
...ss/dbeaver/ext/postgresql/tools/PostgreRestoreWizard.java
+0
-43
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreRestoreWizardPageSettings.java
...xt/postgresql/tools/PostgreRestoreWizardPageSettings.java
+1
-1
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreScriptExecuteWizard.java
...aver/ext/postgresql/tools/PostgreScriptExecuteWizard.java
+0
-41
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreScriptExecuteWizardPageSettings.java
...tgresql/tools/PostgreScriptExecuteWizardPageSettings.java
+6
-7
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreToolScript.java
...jkiss/dbeaver/ext/postgresql/tools/PostgreToolScript.java
+0
-28
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreToolWizardPageSettings.java
...r/ext/postgresql/tools/PostgreToolWizardPageSettings.java
+10
-19
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupHandler.java
...er/ext/postgresql/tasks/PostgreDatabaseBackupHandler.java
+6
-5
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
...ss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
+3
-3
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractImportExportWizard.java
...eaver/tasks/ui/nativetool/AbstractImportExportWizard.java
+0
-30
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractScriptExecuteWizard.java
...aver/tasks/ui/nativetool/AbstractScriptExecuteWizard.java
+2
-36
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractToolWizard.java
...jkiss/dbeaver/tasks/ui/nativetool/AbstractToolWizard.java
+19
-367
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractToolWizardPage.java
...s/dbeaver/tasks/ui/nativetool/AbstractToolWizardPage.java
+2
-2
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/ToolWizardDialog.java
...g/jkiss/dbeaver/tasks/ui/nativetool/ToolWizardDialog.java
+1
-1
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/ToolWizardPageLog.java
.../jkiss/dbeaver/tasks/ui/nativetool/ToolWizardPageLog.java
+2
-1
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/AbstractNativeToolHandler.java
...s/dbeaver/tasks/nativetool/AbstractNativeToolHandler.java
+1
-15
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/AbstractNativeToolSettings.java
.../dbeaver/tasks/nativetool/AbstractNativeToolSettings.java
+1
-1
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java
...c/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java
+20
-0
未找到文件。
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizard.java
浏览文件 @
fdb93e46
...
...
@@ -23,34 +23,20 @@ import org.eclipse.osgi.util.NLS;
import
org.eclipse.swt.SWT
;
import
org.eclipse.ui.IExportWizard
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.ext.mysql.MySQLConstants
;
import
org.jkiss.dbeaver.ext.mysql.MySQLDataSourceProvider
;
import
org.jkiss.dbeaver.ext.mysql.MySQLServerHome
;
import
org.jkiss.dbeaver.ext.mysql.model.MySQLTableBase
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLDatabaseExportInfo
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLExportSettings
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLTasks
;
import
org.jkiss.dbeaver.ext.mysql.ui.internal.MySQLUIMessages
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractImportExportWizard
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.*
;
import
java.text.NumberFormat
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
class
MySQLExportWizard
extends
AbstractImportExportWizard
<
MySQLExportSettings
,
MySQLDatabaseExportInfo
>
implements
IExportWizard
{
...
...
@@ -124,185 +110,10 @@ class MySQLExportWizard extends AbstractImportExportWizard<MySQLExportSettings,
UIUtils
.
launchProgram
(
getSettings
().
getOutputFolder
().
getAbsolutePath
());
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
MySQLDatabaseExportInfo
arg
)
throws
IOException
{
File
dumpBinary
=
RuntimeUtils
.
getNativeClientBinary
(
getClientHome
(),
MySQLConstants
.
BIN_FOLDER
,
"mysqldump"
);
//$NON-NLS-1$
String
dumpPath
=
dumpBinary
.
getAbsolutePath
();
cmd
.
add
(
dumpPath
);
MySQLExportSettings
settings
=
getSettings
();
switch
(
settings
.
getMethod
())
{
case
LOCK_ALL_TABLES:
cmd
.
add
(
"--lock-all-tables"
);
//$NON-NLS-1$
break
;
case
ONLINE:
cmd
.
add
(
"--single-transaction"
);
//$NON-NLS-1$
break
;
}
if
(
settings
.
isNoCreateStatements
())
{
cmd
.
add
(
"--no-create-info"
);
//$NON-NLS-1$
}
else
{
if
(
CommonUtils
.
isEmpty
(
arg
.
getTables
()))
{
cmd
.
add
(
"--routines"
);
//$NON-NLS-1$
}
}
if
(
settings
.
isAddDropStatements
())
{
cmd
.
add
(
"--add-drop-table"
);
//$NON-NLS-1$
}
else
{
cmd
.
add
(
"--skip-add-drop-table"
);
//$NON-NLS-1$
}
if
(
settings
.
isDisableKeys
())
cmd
.
add
(
"--disable-keys"
);
//$NON-NLS-1$
if
(
settings
.
isExtendedInserts
())
{
cmd
.
add
(
"--extended-insert"
);
//$NON-NLS-1$
}
else
{
cmd
.
add
(
"--skip-extended-insert"
);
//$NON-NLS-1$
}
if
(
settings
.
isBinariesInHex
())
{
cmd
.
add
(
"--hex-blob"
);
//$NON-NLS-1$
}
if
(
settings
.
isNoData
())
{
cmd
.
add
(
"--no-data"
);
//$NON-NLS-1$
}
if
(
settings
.
isDumpEvents
())
cmd
.
add
(
"--events"
);
//$NON-NLS-1$
if
(
settings
.
isComments
())
cmd
.
add
(
"--comments"
);
//$NON-NLS-1$
settings
.
addExtraCommandArgs
(
cmd
);
}
@Override
protected
void
setupProcessParameters
(
ProcessBuilder
process
)
{
if
(!
CommonUtils
.
isEmpty
(
getToolUserPassword
()))
{
process
.
environment
().
put
(
MySQLConstants
.
ENV_VARIABLE_MYSQL_PWD
,
getToolUserPassword
());
}
}
@Override
public
boolean
performFinish
()
{
objectsPage
.
saveState
();
settingsPage
.
saveState
();
return
super
.
performFinish
();
}
@Override
public
MySQLServerHome
findNativeClientHome
(
String
clientHomeId
)
{
return
MySQLDataSourceProvider
.
getServerHome
(
clientHomeId
);
}
@Override
public
List
<
MySQLDatabaseExportInfo
>
getRunInfo
()
{
return
getSettings
().
getExportObjects
();
}
@Override
protected
List
<
String
>
getCommandLine
(
MySQLDatabaseExportInfo
arg
)
throws
IOException
{
List
<
String
>
cmd
=
MySQLToolScript
.
getMySQLToolCommandLine
(
this
,
arg
);
if
(!
CommonUtils
.
isEmpty
(
arg
.
getTables
()))
{
cmd
.
add
(
arg
.
getDatabase
().
getName
());
for
(
MySQLTableBase
table
:
arg
.
getTables
())
{
cmd
.
add
(
table
.
getName
());
}
}
else
{
cmd
.
add
(
arg
.
getDatabase
().
getName
());
}
return
cmd
;
}
@Override
public
boolean
isVerbose
()
{
return
true
;
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
final
MySQLDatabaseExportInfo
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
super
.
startProcessHandler
(
monitor
,
arg
,
processBuilder
,
process
);
String
outFileName
=
GeneralUtils
.
replaceVariables
(
getSettings
().
getOutputFilePattern
(),
name
->
{
switch
(
name
)
{
case
VARIABLE_DATABASE:
return
arg
.
getDatabase
().
getName
();
case
VARIABLE_HOST:
return
arg
.
getDatabase
().
getDataSource
().
getContainer
().
getConnectionConfiguration
().
getHostName
();
case
VARIABLE_TABLE:
final
Iterator
<
MySQLTableBase
>
iterator
=
arg
.
getTables
()
==
null
?
null
:
arg
.
getTables
().
iterator
();
if
(
iterator
!=
null
&&
iterator
.
hasNext
())
{
return
iterator
.
next
().
getName
();
}
else
{
return
"null"
;
}
case
VARIABLE_TIMESTAMP:
return
RuntimeUtils
.
getCurrentTimeStamp
();
case
VARIABLE_DATE:
return
RuntimeUtils
.
getCurrentDate
();
default
:
System
.
getProperty
(
name
);
}
return
null
;
});
File
outFile
=
new
File
(
getSettings
().
getOutputFolder
(),
outFileName
);
boolean
isFiltering
=
getSettings
().
isRemoveDefiner
();
Thread
job
=
isFiltering
?
new
DumpFilterJob
(
monitor
,
process
.
getInputStream
(),
outFile
)
:
new
DumpCopierJob
(
monitor
,
MySQLUIMessages
.
tools_db_export_wizard_monitor_export_db
,
process
.
getInputStream
(),
outFile
);
job
.
start
();
}
class
DumpFilterJob
extends
DumpJob
{
private
Pattern
DEFINER_PATTER
=
Pattern
.
compile
(
"DEFINER\\s*=\\s*`[^*]*`@`[0-9a-z\\-_\\.%]*`"
,
Pattern
.
CASE_INSENSITIVE
);
DumpFilterJob
(
DBRProgressMonitor
monitor
,
InputStream
stream
,
File
outFile
)
{
super
(
MySQLUIMessages
.
tools_db_export_wizard_job_dump_log_reader
,
monitor
,
stream
,
outFile
);
}
@Override
public
void
runDump
()
throws
IOException
{
monitor
.
beginTask
(
MySQLUIMessages
.
tools_db_export_wizard_monitor_export_db
,
100
);
long
prevStatusUpdateTime
=
0
;
try
{
NumberFormat
numberFormat
=
NumberFormat
.
getInstance
();
LineNumberReader
reader
=
new
LineNumberReader
(
new
InputStreamReader
(
input
,
GeneralUtils
.
DEFAULT_ENCODING
));
try
(
OutputStream
output
=
new
FileOutputStream
(
outFile
))
{
BufferedWriter
writer
=
new
BufferedWriter
(
new
OutputStreamWriter
(
output
,
GeneralUtils
.
DEFAULT_ENCODING
));
for
(;;)
{
String
line
=
reader
.
readLine
();
if
(
line
==
null
)
{
break
;
}
final
Matcher
matcher
=
DEFINER_PATTER
.
matcher
(
line
);
if
(
matcher
.
find
())
{
line
=
matcher
.
replaceFirst
(
""
);
}
long
currentTime
=
System
.
currentTimeMillis
();
if
(
currentTime
-
prevStatusUpdateTime
>
300
)
{
monitor
.
subTask
(
"Saved "
+
numberFormat
.
format
(
reader
.
getLineNumber
())
+
" lines"
);
prevStatusUpdateTime
=
currentTime
;
}
line
=
filterLine
(
line
);
writer
.
write
(
line
);
writer
.
newLine
();
}
writer
.
flush
();
}
}
finally
{
monitor
.
done
();
}
}
@NotNull
private
String
filterLine
(
@NotNull
String
line
)
{
return
line
;
}
}
}
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -27,7 +27,7 @@ import org.eclipse.swt.layout.GridData;
import
org.eclipse.swt.widgets.*
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLExportSettings
;
import
org.jkiss.dbeaver.ext.mysql.ui.internal.MySQLUIMessages
;
import
org.jkiss.dbeaver.tasks.
ui.nativetool.AbstractImportExportWizard
;
import
org.jkiss.dbeaver.tasks.
nativetool.NativeToolUtils
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.DialogUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -61,7 +61,7 @@ class MySQLExportWizardPageSettings extends MySQLWizardPageSettings<MySQLExportW
@Override
public
boolean
isPageComplete
()
{
return
super
.
isPageComplete
()
&&
wizard
.
getOutputFolder
()
!=
null
;
return
super
.
isPageComplete
()
&&
wizard
.
get
Settings
().
get
OutputFolder
()
!=
null
;
}
@Override
...
...
@@ -107,29 +107,29 @@ class MySQLExportWizardPageSettings extends MySQLWizardPageSettings<MySQLExportW
Group
outputGroup
=
UIUtils
.
createControlGroup
(
composite
,
MySQLUIMessages
.
tools_db_export_wizard_page_settings_group_output
,
2
,
GridData
.
FILL_HORIZONTAL
,
0
);
outputFolderText
=
DialogUtils
.
createOutputFolderChooser
(
outputGroup
,
MySQLUIMessages
.
tools_db_export_wizard_page_settings_label_out_text
,
e
->
updateState
());
outputFileText
=
UIUtils
.
createLabelText
(
outputGroup
,
"File name pattern"
,
wizard
.
getOutputFilePattern
());
outputFileText
=
UIUtils
.
createLabelText
(
outputGroup
,
"File name pattern"
,
wizard
.
get
Settings
().
get
OutputFilePattern
());
UIUtils
.
setContentProposalToolTip
(
outputFileText
,
"Output file name pattern"
,
AbstractImportExportWizard
.
VARIABLE_HOST
,
AbstractImportExportWizard
.
VARIABLE_DATABASE
,
AbstractImportExportWizard
.
VARIABLE_TABLE
,
AbstractImportExportWizard
.
VARIABLE_DATE
,
AbstractImportExportWizard
.
VARIABLE_TIMESTAMP
);
NativeToolUtils
.
VARIABLE_HOST
,
NativeToolUtils
.
VARIABLE_DATABASE
,
NativeToolUtils
.
VARIABLE_TABLE
,
NativeToolUtils
.
VARIABLE_DATE
,
NativeToolUtils
.
VARIABLE_TIMESTAMP
);
UIUtils
.
installContentProposal
(
outputFileText
,
new
TextContentAdapter
(),
new
SimpleContentProposalProvider
(
new
String
[]
{
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_HOST
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_DATABASE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_TABLE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_DATE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_TIMESTAMP
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_HOST
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_DATABASE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_TABLE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_DATE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_TIMESTAMP
),
}
));
createExtraArgsInput
(
outputGroup
);
if
(
wizard
.
getOutputFolder
()
!=
null
)
{
outputFolderText
.
setText
(
wizard
.
getOutputFolder
().
getAbsolutePath
());
if
(
wizard
.
get
Settings
().
get
OutputFolder
()
!=
null
)
{
outputFolderText
.
setText
(
wizard
.
get
Settings
().
get
OutputFolder
().
getAbsolutePath
());
}
outputFileText
.
addModifyListener
(
e
->
wizard
.
getSettings
().
setOutputFilePattern
(
outputFileText
.
getText
()));
...
...
@@ -148,7 +148,7 @@ class MySQLExportWizardPageSettings extends MySQLWizardPageSettings<MySQLExportW
MySQLExportSettings
settings
=
wizard
.
getSettings
();
String
fileName
=
outputFolderText
.
getText
();
wizard
.
setOutputFolder
(
CommonUtils
.
isEmpty
(
fileName
)
?
null
:
new
File
(
fileName
));
wizard
.
getSettings
().
setOutputFolder
(
CommonUtils
.
isEmpty
(
fileName
)
?
null
:
new
File
(
fileName
));
settings
.
setOutputFilePattern
(
outputFileText
.
getText
());
switch
(
methodCombo
.
getSelectionIndex
())
{
...
...
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLScriptExecuteWizard.java
浏览文件 @
fdb93e46
...
...
@@ -18,37 +18,28 @@
package
org.jkiss.dbeaver.ext.mysql.tools
;
import
org.jkiss.dbeaver.ext.mysql.MySQLConstants
;
import
org.jkiss.dbeaver.ext.mysql.MySQLDataSourceProvider
;
import
org.jkiss.dbeaver.ext.mysql.MySQLServerHome
;
import
org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLScriptExecuteSettings
;
import
org.jkiss.dbeaver.ext.mysql.tasks.MySQLTasks
;
import
org.jkiss.dbeaver.ext.mysql.ui.internal.MySQLUIMessages
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractScriptExecuteWizard
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
class
MySQLScriptExecuteWizard
extends
AbstractScriptExecuteWizard
<
MySQLScriptExecuteSettings
,
MySQLCatalog
,
MySQLCatalog
>
{
private
MySQLScriptExecuteWizardPageSettings
mainPage
=
new
MySQLScriptExecuteWizardPageSettings
(
this
);
public
MySQLScriptExecuteWizard
(
MySQLCatalog
catalog
,
boolean
isImport
)
{
MySQLScriptExecuteWizard
(
MySQLCatalog
catalog
,
boolean
isImport
)
{
super
(
Collections
.
singleton
(
catalog
),
isImport
?
MySQLUIMessages
.
tools_script_execute_wizard_db_import
:
MySQLUIMessages
.
tools_script_execute_wizard_execute_script
);
this
.
getSettings
().
setImport
(
isImport
);
}
public
MySQLScriptExecuteWizard
(
DBTTask
task
,
boolean
isImport
)
{
MySQLScriptExecuteWizard
(
DBTTask
task
,
boolean
isImport
)
{
super
(
task
);
this
.
getSettings
().
setImport
(
isImport
);
}
...
...
@@ -89,56 +80,4 @@ class MySQLScriptExecuteWizard extends AbstractScriptExecuteWizard<MySQLScriptEx
super
.
addPages
();
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
MySQLCatalog
arg
)
throws
IOException
{
String
dumpPath
=
RuntimeUtils
.
getNativeClientBinary
(
getClientHome
(),
MySQLConstants
.
BIN_FOLDER
,
"mysql"
).
getAbsolutePath
();
//$NON-NLS-1$
cmd
.
add
(
dumpPath
);
if
(
getSettings
().
getLogLevel
()
==
MySQLScriptExecuteSettings
.
LogLevel
.
Debug
)
{
cmd
.
add
(
"--debug-info"
);
//$NON-NLS-1$
}
if
(
getSettings
().
isNoBeep
())
{
cmd
.
add
(
"--no-beep"
);
//$NON-NLS-1$
}
getSettings
().
addExtraCommandArgs
(
cmd
);
}
@Override
protected
void
setupProcessParameters
(
ProcessBuilder
process
)
{
if
(!
CommonUtils
.
isEmpty
(
getToolUserPassword
()))
{
process
.
environment
().
put
(
MySQLConstants
.
ENV_VARIABLE_MYSQL_PWD
,
getToolUserPassword
());
}
}
@Override
public
MySQLServerHome
findNativeClientHome
(
String
clientHomeId
)
{
return
MySQLDataSourceProvider
.
getServerHome
(
clientHomeId
);
}
@Override
public
Collection
<
MySQLCatalog
>
getRunInfo
()
{
return
getDatabaseObjects
();
}
@Override
protected
List
<
String
>
getCommandLine
(
MySQLCatalog
arg
)
throws
IOException
{
List
<
String
>
cmd
=
MySQLToolScript
.
getMySQLToolCommandLine
(
this
,
arg
);
cmd
.
add
(
arg
.
getName
());
return
cmd
;
}
/**
* Use binary file transform job (#2863)
*/
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
final
MySQLCatalog
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
if
(
getSettings
().
isImport
())
{
logPage
.
startLogReader
(
processBuilder
,
process
.
getInputStream
());
new
BinaryFileTransformerJob
(
monitor
,
getInputFile
(),
process
.
getOutputStream
()).
start
();
}
else
{
super
.
startProcessHandler
(
monitor
,
arg
,
processBuilder
,
process
);
}
}
}
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLScriptExecuteWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -40,7 +40,7 @@ public class MySQLScriptExecuteWizardPageSettings extends MySQLWizardPageSetting
private
Text
inputFileText
;
private
Combo
logLevelCombo
;
public
MySQLScriptExecuteWizardPageSettings
(
MySQLScriptExecuteWizard
wizard
)
MySQLScriptExecuteWizardPageSettings
(
MySQLScriptExecuteWizard
wizard
)
{
super
(
wizard
,
wizard
.
isImport
()
?
MySQLUIMessages
.
tools_script_execute_wizard_page_settings_import_configuration
:
...
...
@@ -56,7 +56,7 @@ public class MySQLScriptExecuteWizardPageSettings extends MySQLWizardPageSetting
@Override
public
boolean
isPageComplete
()
{
return
super
.
isPageComplete
()
&&
wizard
.
getInputFile
()
!=
null
;
return
super
.
isPageComplete
()
&&
wizard
.
get
Settings
().
get
InputFile
()
!=
null
;
}
@Override
...
...
@@ -85,8 +85,8 @@ public class MySQLScriptExecuteWizardPageSettings extends MySQLWizardPageSetting
}
});
if
(
wizard
.
getInputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
InputFile
().
getAbsolutePath
());
if
(
wizard
.
get
Settings
().
get
InputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
Settings
().
getInputFile
());
}
Group
settingsGroup
=
UIUtils
.
createControlGroup
(
...
...
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLToolScript.java
浏览文件 @
fdb93e46
...
...
@@ -21,21 +21,14 @@ import org.eclipse.ui.IWorkbenchPart;
import
org.eclipse.ui.IWorkbenchWindow
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolSettings
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractToolWizard
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.ToolWizardDialog
;
import
org.jkiss.dbeaver.ui.tools.IUserInterfaceTool
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
*
Database impor
t
*
MySQLToolScrip
t
*/
public
class
MySQLToolScript
implements
IUserInterfaceTool
{
...
...
@@ -52,27 +45,4 @@ public class MySQLToolScript implements IUserInterfaceTool
}
}
public
static
<
SETTINGS
extends
AbstractNativeToolSettings
<
BASE_OBJECT
>,
BASE_OBJECT
extends
DBSObject
,
PROCESS_ARG
>
List
<
String
>
getMySQLToolCommandLine
(
AbstractToolWizard
<
SETTINGS
,
BASE_OBJECT
,
PROCESS_ARG
>
toolWizard
,
PROCESS_ARG
arg
)
throws
IOException
{
java
.
util
.
List
<
String
>
cmd
=
new
ArrayList
<>();
toolWizard
.
fillProcessParameters
(
cmd
,
arg
);
if
(
toolWizard
.
isVerbose
())
{
cmd
.
add
(
"-v"
);
}
DBPConnectionConfiguration
connectionInfo
=
toolWizard
.
getConnectionInfo
();
cmd
.
add
(
"--host="
+
connectionInfo
.
getHostName
());
if
(!
CommonUtils
.
isEmpty
(
connectionInfo
.
getHostPort
()))
{
cmd
.
add
(
"--port="
+
connectionInfo
.
getHostPort
());
}
cmd
.
add
(
"-u"
);
cmd
.
add
(
toolWizard
.
getToolUserName
());
// Password is passed in env variable (#1004)
// if (!CommonUtils.isEmpty(toolWizard.getToolUserPassword())) {
// cmd.add("--password=" + toolWizard.getToolUserPassword());
// }
return
cmd
;
}
}
plugins/org.jkiss.dbeaver.ext.mysql.ui/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -33,22 +33,22 @@ import org.jkiss.dbeaver.ui.UIUtils;
import
org.jkiss.dbeaver.ui.dialogs.BaseAuthDialog
;
public
abstract
class
MySQLWizardPageSettings
<
WIZARD
extends
AbstractToolWizard
>
extends
AbstractToolWizardPage
<
WIZARD
>
abstract
class
MySQLWizardPageSettings
<
WIZARD
extends
AbstractToolWizard
>
extends
AbstractToolWizardPage
<
WIZARD
>
{
public
MySQLWizardPageSettings
(
WIZARD
wizard
,
String
title
)
MySQLWizardPageSettings
(
WIZARD
wizard
,
String
title
)
{
super
(
wizard
,
title
);
}
public
void
createSecurityGroup
(
Composite
parent
)
{
final
DBPConnectionConfiguration
connectionInfo
=
wizard
.
get
ConnectionInfo
();
final
DBPConnectionConfiguration
connectionInfo
=
wizard
.
get
Settings
().
getDataSourceContainer
().
getActualConnectionConfiguration
();
if
(
connectionInfo
!=
null
)
{
Group
securityGroup
=
UIUtils
.
createControlGroup
(
parent
,
"Security"
,
2
,
GridData
.
HORIZONTAL_ALIGN_BEGINNING
,
0
);
Label
infoLabel
=
new
Label
(
securityGroup
,
SWT
.
NONE
);
infoLabel
.
setText
(
"Override user credentials ("
+
wizard
.
getConnectionInfo
()
.
getUserName
()
+
infoLabel
.
setText
(
"Override user credentials ("
+
connectionInfo
.
getUserName
()
+
") for objects '"
+
wizard
.
getObjectsName
()
+
"'.\nExternal tools like 'mysqldump' may require different set of permissions."
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_HORIZONTAL
);
gd
.
horizontalSpan
=
2
;
...
...
@@ -59,12 +59,12 @@ public abstract class MySQLWizardPageSettings<WIZARD extends AbstractToolWizard>
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
BaseAuthDialog
authDialog
=
new
BaseAuthDialog
(
getShell
(),
"Authentication"
,
false
,
true
);
authDialog
.
setUserName
(
wizard
.
getToolUserName
());
authDialog
.
setUserPassword
(
wizard
.
getToolUserPassword
());
authDialog
.
setUserName
(
wizard
.
get
Settings
().
get
ToolUserName
());
authDialog
.
setUserPassword
(
wizard
.
get
Settings
().
get
ToolUserPassword
());
authDialog
.
setSavePassword
(
true
);
if
(
authDialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
wizard
.
setToolUserName
(
authDialog
.
getUserName
());
wizard
.
setToolUserPassword
(
authDialog
.
getUserPassword
());
wizard
.
getSettings
().
setToolUserName
(
authDialog
.
getUserName
());
wizard
.
getSettings
().
setToolUserPassword
(
authDialog
.
getUserPassword
());
}
}
});
...
...
@@ -74,8 +74,8 @@ public abstract class MySQLWizardPageSettings<WIZARD extends AbstractToolWizard>
resetButton
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
wizard
.
setToolUserName
(
connectionInfo
.
getUserName
()
);
wizard
.
setToolUserPassword
(
connectionInfo
.
getUserPassword
()
);
wizard
.
getSettings
().
setToolUserName
(
null
);
wizard
.
getSettings
().
setToolUserPassword
(
null
);
}
});
}
...
...
plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java
浏览文件 @
fdb93e46
...
...
@@ -9,6 +9,7 @@ import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.nativetool.NativeToolUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -128,20 +129,20 @@ public class MySQLDatabaseExportHandler extends MySQLNativeToolHandler<MySQLExpo
super
.
startProcessHandler
(
monitor
,
task
,
settings
,
arg
,
processBuilder
,
process
,
log
);
String
outFileName
=
GeneralUtils
.
replaceVariables
(
settings
.
getOutputFilePattern
(),
name
->
{
switch
(
name
)
{
case
VARIABLE_DATABASE:
case
NativeToolUtils
.
VARIABLE_DATABASE
:
return
arg
.
getDatabase
().
getName
();
case
VARIABLE_HOST:
case
NativeToolUtils
.
VARIABLE_HOST
:
return
arg
.
getDatabase
().
getDataSource
().
getContainer
().
getConnectionConfiguration
().
getHostName
();
case
VARIABLE_TABLE:
case
NativeToolUtils
.
VARIABLE_TABLE
:
final
Iterator
<
MySQLTableBase
>
iterator
=
arg
.
getTables
()
==
null
?
null
:
arg
.
getTables
().
iterator
();
if
(
iterator
!=
null
&&
iterator
.
hasNext
())
{
return
iterator
.
next
().
getName
();
}
else
{
return
"null"
;
}
case
VARIABLE_TIMESTAMP:
case
NativeToolUtils
.
VARIABLE_TIMESTAMP
:
return
RuntimeUtils
.
getCurrentTimeStamp
();
case
VARIABLE_DATE:
case
NativeToolUtils
.
VARIABLE_DATE
:
return
RuntimeUtils
.
getCurrentDate
();
default
:
System
.
getProperty
(
name
);
...
...
plugins/org.jkiss.dbeaver.ext.oracle.ui/src/org/jkiss/dbeaver/ext/oracle/ui/tools/OracleScriptExecuteWizard.java
浏览文件 @
fdb93e46
...
...
@@ -19,30 +19,21 @@
package
org.jkiss.dbeaver.ext.oracle.ui.tools
;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.eclipse.osgi.util.NLS
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.ext.oracle.model.OracleConstants
;
import
org.jkiss.dbeaver.ext.oracle.model.OracleDataSource
;
import
org.jkiss.dbeaver.ext.oracle.model.dict.OracleConnectionType
;
import
org.jkiss.dbeaver.ext.oracle.oci.OCIUtils
;
import
org.jkiss.dbeaver.ext.oracle.oci.OracleHomeDescriptor
;
import
org.jkiss.dbeaver.ext.oracle.tasks.OracleScriptExecuteSettings
;
import
org.jkiss.dbeaver.ext.oracle.tasks.OracleTasks
;
import
org.jkiss.dbeaver.ext.oracle.ui.internal.OracleUIMessages
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractScriptExecuteWizard
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.Collections
;
import
java.util.Map
;
class
OracleScriptExecuteWizard
extends
AbstractScriptExecuteWizard
<
OracleScriptExecuteSettings
,
DBSObject
,
DBPDataSourceContainer
>
{
class
OracleScriptExecuteWizard
extends
AbstractScriptExecuteWizard
<
OracleScriptExecuteSettings
,
DBSObject
,
OracleDataSource
>
{
private
OracleScriptExecuteWizardPageSettings
mainPage
;
...
...
@@ -85,61 +76,4 @@ class OracleScriptExecuteWizard extends AbstractScriptExecuteWizard<OracleScript
super
.
addPages
();
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
DBPDataSourceContainer
arg
)
throws
IOException
{
String
sqlPlusExec
=
RuntimeUtils
.
getNativeBinaryName
(
"sqlplus"
);
//$NON-NLS-1$
File
sqlPlusBinary
=
new
File
(
getClientHome
().
getPath
(),
"bin/"
+
sqlPlusExec
);
//$NON-NLS-1$
if
(!
sqlPlusBinary
.
exists
())
{
sqlPlusBinary
=
new
File
(
getClientHome
().
getPath
(),
sqlPlusExec
);
}
if
(!
sqlPlusBinary
.
exists
())
{
throw
new
IOException
(
NLS
.
bind
(
OracleUIMessages
.
tools_script_execute_wizard_error_sqlplus_not_found
,
getClientHome
().
getDisplayName
()));
}
String
dumpPath
=
sqlPlusBinary
.
getAbsolutePath
();
cmd
.
add
(
dumpPath
);
}
@Override
public
OracleHomeDescriptor
findNativeClientHome
(
String
clientHomeId
)
{
return
OCIUtils
.
getOraHome
(
clientHomeId
);
}
@Override
public
Collection
<
DBPDataSourceContainer
>
getRunInfo
()
{
return
Collections
.
singletonList
(
getSettings
().
getDataSourceContainer
());
}
@Override
protected
List
<
String
>
getCommandLine
(
DBPDataSourceContainer
arg
)
throws
IOException
{
List
<
String
>
cmd
=
new
ArrayList
<>();
fillProcessParameters
(
cmd
,
arg
);
DBPConnectionConfiguration
conInfo
=
getConnectionInfo
();
String
url
;
if
(
"TNS"
.
equals
(
conInfo
.
getProviderProperty
(
OracleConstants
.
PROP_CONNECTION_TYPE
)))
{
//$NON-NLS-1$
url
=
conInfo
.
getServerName
();
}
else
{
boolean
isSID
=
OracleConnectionType
.
SID
.
name
().
equals
(
conInfo
.
getProviderProperty
(
OracleConstants
.
PROP_SID_SERVICE
));
String
port
=
conInfo
.
getHostPort
();
if
(
isSID
)
{
url
=
"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host="
+
conInfo
.
getHostName
()
+
")(Port="
+
port
+
"))(CONNECT_DATA=(SID="
+
conInfo
.
getDatabaseName
()
+
")))"
;
}
else
{
url
=
"//"
+
conInfo
.
getHostName
()
+
(
port
!=
null
?
":"
+
port
:
""
)
+
"/"
+
conInfo
.
getDatabaseName
();
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
}
final
String
role
=
conInfo
.
getProviderProperty
(
OracleConstants
.
PROP_INTERNAL_LOGON
);
if
(
role
!=
null
)
{
url
+=
(
" AS "
+
role
);
}
cmd
.
add
(
conInfo
.
getUserName
()
+
"/"
+
conInfo
.
getUserPassword
()
+
"@"
+
url
);
//$NON-NLS-1$ //$NON-NLS-2$
/*
if (toolWizard.isVerbose()) {
cmd.add("-v");
}
cmd.add("-q");
cmd.add(toolWizard.getDatabaseObjects().getName());
*/
return
cmd
;
}
}
plugins/org.jkiss.dbeaver.ext.oracle.ui/src/org/jkiss/dbeaver/ext/oracle/ui/tools/OracleScriptExecuteWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -22,7 +22,6 @@ import org.eclipse.swt.widgets.Composite;
import
org.eclipse.swt.widgets.Group
;
import
org.jkiss.dbeaver.ext.oracle.tasks.OracleScriptExecuteSettings
;
import
org.jkiss.dbeaver.ext.oracle.ui.internal.OracleUIMessages
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractToolWizardPage
;
import
org.jkiss.dbeaver.ui.UIUtils
;
...
...
@@ -42,7 +41,7 @@ class OracleScriptExecuteWizardPageSettings extends AbstractToolWizardPage<Oracl
@Override
public
boolean
isPageComplete
()
{
return
super
.
isPageComplete
()
&&
wizard
.
getInputFile
()
!=
null
;
return
super
.
isPageComplete
()
&&
wizard
.
get
Settings
().
get
InputFile
()
!=
null
;
}
@Override
...
...
@@ -63,8 +62,8 @@ class OracleScriptExecuteWizardPageSettings extends AbstractToolWizardPage<Oracl
@Override
public
void
activatePage
()
{
if
(
wizard
.
getInputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
InputFile
().
getAbsolutePath
());
if
(
wizard
.
get
Settings
().
get
InputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
Settings
().
getInputFile
());
}
updateState
();
...
...
@@ -82,7 +81,7 @@ class OracleScriptExecuteWizardPageSettings extends AbstractToolWizardPage<Oracl
OracleScriptExecuteSettings
settings
=
wizard
.
getSettings
();
List
<
DBSObject
>
selectedConnections
=
settings
.
getDatabaseObjects
();
settings
.
setDataSourceContainer
(
selectedConnections
.
isEmpty
()
?
null
:
(
DBPDataSourceContainer
)
selectedConnections
.
get
(
0
));
settings
.
setDataSourceContainer
(
selectedConnections
.
isEmpty
()
?
null
:
selectedConnections
.
get
(
0
).
getDataSource
().
getContainer
(
));
settings
.
setInputFile
(
inputFileText
.
getText
());
}
...
...
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tasks/OracleScriptExecuteHandler.java
浏览文件 @
fdb93e46
...
...
@@ -2,8 +2,8 @@ package org.jkiss.dbeaver.ext.oracle.tasks;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.ext.oracle.model.OracleConstants
;
import
org.jkiss.dbeaver.ext.oracle.model.OracleDataSource
;
import
org.jkiss.dbeaver.ext.oracle.model.dict.OracleConnectionType
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
...
...
@@ -20,11 +20,11 @@ import java.util.Collection;
import
java.util.Collections
;
import
java.util.List
;
public
class
OracleScriptExecuteHandler
extends
AbstractNativeToolHandler
<
OracleScriptExecuteSettings
,
DBSObject
,
DBPDataSourceContainer
>
{
public
class
OracleScriptExecuteHandler
extends
AbstractNativeToolHandler
<
OracleScriptExecuteSettings
,
DBSObject
,
OracleDataSource
>
{
@Override
public
Collection
<
DBPDataSourceContainer
>
getRunInfo
(
OracleScriptExecuteSettings
settings
)
{
return
Collections
.
singletonList
(
settings
.
getDataSourceContainer
());
public
Collection
<
OracleDataSource
>
getRunInfo
(
OracleScriptExecuteSettings
settings
)
{
return
Collections
.
singletonList
(
(
OracleDataSource
)
settings
.
getDataSourceContainer
().
getDataSource
());
}
@Override
...
...
@@ -45,7 +45,7 @@ public class OracleScriptExecuteHandler extends AbstractNativeToolHandler<Oracle
}
@Override
public
void
fillProcessParameters
(
OracleScriptExecuteSettings
settings
,
DBPDataSourceContainer
arg
,
List
<
String
>
cmd
)
throws
IOException
{
public
void
fillProcessParameters
(
OracleScriptExecuteSettings
settings
,
OracleDataSource
arg
,
List
<
String
>
cmd
)
throws
IOException
{
String
sqlPlusExec
=
RuntimeUtils
.
getNativeBinaryName
(
"sqlplus"
);
//$NON-NLS-1$
File
sqlPlusBinary
=
new
File
(
settings
.
getClientHome
().
getPath
(),
"bin/"
+
sqlPlusExec
);
//$NON-NLS-1$
if
(!
sqlPlusBinary
.
exists
())
{
...
...
@@ -59,7 +59,7 @@ public class OracleScriptExecuteHandler extends AbstractNativeToolHandler<Oracle
}
@Override
protected
List
<
String
>
getCommandLine
(
OracleScriptExecuteSettings
settings
,
DBPDataSourceContainer
arg
)
throws
IOException
{
protected
List
<
String
>
getCommandLine
(
OracleScriptExecuteSettings
settings
,
OracleDataSource
arg
)
throws
IOException
{
List
<
String
>
cmd
=
new
ArrayList
<>();
fillProcessParameters
(
settings
,
arg
,
cmd
);
DBPConnectionConfiguration
conInfo
=
settings
.
getDataSourceContainer
().
getActualConnectionConfiguration
();
...
...
@@ -99,7 +99,7 @@ public class OracleScriptExecuteHandler extends AbstractNativeToolHandler<Oracle
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
DBTTask
task
,
OracleScriptExecuteSettings
settings
,
DBPDataSourceContainer
arg
,
ProcessBuilder
processBuilder
,
Process
process
,
Log
log
)
throws
IOException
{
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
DBTTask
task
,
OracleScriptExecuteSettings
settings
,
OracleDataSource
arg
,
ProcessBuilder
processBuilder
,
Process
process
,
Log
log
)
throws
IOException
{
super
.
startProcessHandler
(
monitor
,
task
,
settings
,
arg
,
processBuilder
,
process
,
log
);
new
BinaryFileTransformerJob
(
monitor
,
task
,
new
File
(
settings
.
getInputFile
()),
process
.
getOutputStream
(),
log
).
start
();
}
...
...
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tasks/OracleScriptExecuteSettings.java
浏览文件 @
fdb93e46
...
...
@@ -30,7 +30,7 @@ public class OracleScriptExecuteSettings extends AbstractScriptExecuteSettings<D
private
static
final
Log
log
=
Log
.
getLog
(
OracleScriptExecuteSettings
.
class
);
@Override
p
rotected
DBPNativeClientLocation
findNativeClientHome
(
String
clientHomeId
)
{
p
ublic
DBPNativeClientLocation
findNativeClientHome
(
String
clientHomeId
)
{
return
OCIUtils
.
getOraHome
(
clientHomeId
);
}
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupRestoreWizard.java
浏览文件 @
fdb93e46
...
...
@@ -17,64 +17,25 @@
package
org.jkiss.dbeaver.ext.postgresql.tools
;
import
org.eclipse.ui.IExportWizard
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreConstants
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreDataSourceProvider
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreServerHome
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreBackupRestoreSettings
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseBackupRestoreInfo
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractImportExportWizard
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.List
;
abstract
class
PostgreBackupRestoreWizard
<
SETTINGS
extends
PostgreBackupRestoreSettings
,
PROCESS_ARG
extends
PostgreDatabaseBackupRestoreInfo
>
extends
AbstractImportExportWizard
<
SETTINGS
,
PROCESS_ARG
>
implements
IExportWizard
{
public
PostgreBackupRestoreWizard
(
DBTTask
task
)
{
PostgreBackupRestoreWizard
(
DBTTask
task
)
{
super
(
task
);
}
public
PostgreBackupRestoreWizard
(
Collection
<
DBSObject
>
objects
,
String
title
)
{
PostgreBackupRestoreWizard
(
Collection
<
DBSObject
>
objects
,
String
title
)
{
super
(
objects
,
title
);
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
PROCESS_ARG
arg
)
throws
IOException
{
File
dumpBinary
=
RuntimeUtils
.
getNativeClientBinary
(
getClientHome
(),
PostgreConstants
.
BIN_FOLDER
,
isExportWizard
()
?
"pg_dump"
:
"pg_restore"
);
//$NON-NLS-1$
String
dumpPath
=
dumpBinary
.
getAbsolutePath
();
cmd
.
add
(
dumpPath
);
getSettings
().
addExtraCommandArgs
(
cmd
);
}
@Override
protected
void
setupProcessParameters
(
ProcessBuilder
process
)
{
if
(!
CommonUtils
.
isEmpty
(
getToolUserPassword
()))
{
process
.
environment
().
put
(
"PGPASSWORD"
,
getToolUserPassword
());
}
}
@Override
public
PostgreServerHome
findNativeClientHome
(
String
clientHomeId
)
{
return
PostgreDataSourceProvider
.
getServerHome
(
clientHomeId
);
}
@Override
protected
List
<
String
>
getCommandLine
(
PROCESS_ARG
arg
)
throws
IOException
{
return
PostgreToolScript
.
getPostgreToolCommandLine
(
this
,
arg
);
}
@Override
public
boolean
isVerbose
()
{
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizard.java
浏览文件 @
fdb93e46
...
...
@@ -23,26 +23,17 @@ import org.eclipse.swt.SWT;
import
org.eclipse.ui.IExportWizard
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreMessages
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseBackupInfo
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseBackupSettings
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreSQLTasks
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
class
PostgreBackupWizard
extends
PostgreBackupRestoreWizard
<
PostgreDatabaseBackupSettings
,
PostgreDatabaseBackupInfo
>
implements
IExportWizard
{
...
...
@@ -113,108 +104,9 @@ class PostgreBackupWizard extends PostgreBackupRestoreWizard<PostgreDatabaseBack
UIUtils
.
launchProgram
(
getSettings
().
getOutputFolder
().
getAbsolutePath
());
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
PostgreDatabaseBackupInfo
arg
)
throws
IOException
{
super
.
fillProcessParameters
(
cmd
,
arg
);
cmd
.
add
(
"--format="
+
getSettings
().
getFormat
().
getId
());
if
(!
CommonUtils
.
isEmpty
(
getSettings
().
getCompression
()))
{
cmd
.
add
(
"--compress="
+
getSettings
().
getCompression
());
}
if
(!
CommonUtils
.
isEmpty
(
getSettings
().
getEncoding
()))
{
cmd
.
add
(
"--encoding="
+
getSettings
().
getEncoding
());
}
if
(
getSettings
().
isUseInserts
())
{
cmd
.
add
(
"--inserts"
);
}
if
(
getSettings
().
isNoPrivileges
())
{
cmd
.
add
(
"--no-privileges"
);
}
if
(
getSettings
().
isNoOwner
())
{
cmd
.
add
(
"--no-owner"
);
}
// Objects
if
(
getSettings
().
getExportObjects
().
isEmpty
())
{
// no dump
}
else
if
(!
CommonUtils
.
isEmpty
(
arg
.
getTables
()))
{
for
(
PostgreTableBase
table
:
arg
.
getTables
())
{
cmd
.
add
(
"-t"
);
// Use explicit quotes in case of quoted identifiers (#5950)
cmd
.
add
(
escapeCLIIdentifier
(
table
.
getSchema
().
getName
()
+
"."
+
table
.
getName
()));
}
}
if
(!
CommonUtils
.
isEmpty
(
arg
.
getSchemas
()))
{
for
(
PostgreSchema
schema
:
arg
.
getSchemas
())
{
cmd
.
add
(
"-n"
);
// Use explicit quotes in case of quoted identifiers (#5950)
cmd
.
add
(
escapeCLIIdentifier
(
schema
.
getName
()));
}
}
}
private
static
String
escapeCLIIdentifier
(
String
name
)
{
return
"\""
+
name
.
replace
(
"\""
,
"\\\""
)
+
"\""
;
}
@Override
protected
List
<
String
>
getCommandLine
(
PostgreDatabaseBackupInfo
arg
)
throws
IOException
{
List
<
String
>
cmd
=
PostgreToolScript
.
getPostgreToolCommandLine
(
this
,
arg
);
cmd
.
add
(
arg
.
getDatabase
().
getName
());
return
cmd
;
}
@Override
public
boolean
performFinish
()
{
objectsPage
.
saveState
();
settingsPage
.
updateState
();
return
super
.
performFinish
();
}
@Override
protected
PostgreDatabaseBackupSettings
createSettings
()
{
return
new
PostgreDatabaseBackupSettings
();
}
@Override
public
Collection
<
PostgreDatabaseBackupInfo
>
getRunInfo
()
{
return
getSettings
().
getExportObjects
();
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
final
PostgreDatabaseBackupInfo
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
super
.
startProcessHandler
(
monitor
,
arg
,
processBuilder
,
process
);
String
outFileName
=
GeneralUtils
.
replaceVariables
(
getSettings
().
getOutputFilePattern
(),
name
->
{
switch
(
name
)
{
case
VARIABLE_DATABASE:
return
arg
.
getDatabase
().
getName
();
case
VARIABLE_HOST:
return
arg
.
getDatabase
().
getDataSource
().
getContainer
().
getConnectionConfiguration
().
getHostName
();
case
VARIABLE_TABLE:
final
Iterator
<
PostgreTableBase
>
iterator
=
arg
.
getTables
()
==
null
?
null
:
arg
.
getTables
().
iterator
();
if
(
iterator
!=
null
&&
iterator
.
hasNext
())
{
return
iterator
.
next
().
getName
();
}
else
{
return
"null"
;
}
case
VARIABLE_TIMESTAMP:
return
RuntimeUtils
.
getCurrentTimeStamp
();
case
VARIABLE_DATE:
return
RuntimeUtils
.
getCurrentDate
();
default
:
System
.
getProperty
(
name
);
}
return
null
;
});
File
outFile
=
new
File
(
getSettings
().
getOutputFolder
(),
outFileName
);
Thread
job
=
new
DumpCopierJob
(
monitor
,
"Export database"
,
process
.
getInputStream
(),
outFile
);
job
.
start
();
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -26,7 +26,7 @@ import org.eclipse.swt.layout.GridData;
import
org.eclipse.swt.widgets.*
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreMessages
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseBackupSettings
;
import
org.jkiss.dbeaver.tasks.
ui.nativetool.AbstractImportExportWizard
;
import
org.jkiss.dbeaver.tasks.
nativetool.NativeToolUtils
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.DialogUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -35,7 +35,7 @@ import org.jkiss.utils.CommonUtils;
import
java.io.File
;
class
PostgreBackupWizardPageSettings
extends
PostgreWizardPageSettings
<
PostgreBackupWizard
>
{
class
PostgreBackupWizardPageSettings
extends
Postgre
Tool
WizardPageSettings
<
PostgreBackupWizard
>
{
private
Text
outputFolderText
;
private
Text
outputFileText
;
...
...
@@ -56,7 +56,7 @@ class PostgreBackupWizardPageSettings extends PostgreWizardPageSettings<PostgreB
@Override
public
boolean
isPageComplete
()
{
return
super
.
isPageComplete
()
&&
wizard
.
getOutputFolder
()
!=
null
;
return
super
.
isPageComplete
()
&&
wizard
.
get
Settings
().
get
OutputFolder
()
!=
null
;
}
@Override
...
...
@@ -121,27 +121,27 @@ class PostgreBackupWizardPageSettings extends PostgreWizardPageSettings<PostgreB
outputFolderText
=
DialogUtils
.
createOutputFolderChooser
(
outputGroup
,
PostgreMessages
.
wizard_backup_page_setting_label_output_folder
,
wizard
.
get
OutputFolder
()
!=
null
?
wizard
.
getOutputFolder
().
getAbsolutePath
()
:
null
,
wizard
.
get
Settings
().
getOutputFolder
()
!=
null
?
wizard
.
getSettings
()
.
getOutputFolder
().
getAbsolutePath
()
:
null
,
e
->
updateState
());
outputFileText
=
UIUtils
.
createLabelText
(
outputGroup
,
PostgreMessages
.
wizard_backup_page_setting_label_file_name_pattern
,
wizard
.
getOutputFilePattern
());
wizard
.
get
Settings
().
get
OutputFilePattern
());
UIUtils
.
setContentProposalToolTip
(
outputFileText
,
PostgreMessages
.
wizard_backup_page_setting_label_file_name_pattern_output
,
AbstractImportExportWizard
.
VARIABLE_HOST
,
AbstractImportExportWizard
.
VARIABLE_DATABASE
,
AbstractImportExportWizard
.
VARIABLE_TABLE
,
AbstractImportExportWizard
.
VARIABLE_DATE
,
AbstractImportExportWizard
.
VARIABLE_TIMESTAMP
);
NativeToolUtils
.
VARIABLE_HOST
,
NativeToolUtils
.
VARIABLE_DATABASE
,
NativeToolUtils
.
VARIABLE_TABLE
,
NativeToolUtils
.
VARIABLE_DATE
,
NativeToolUtils
.
VARIABLE_TIMESTAMP
);
UIUtils
.
installContentProposal
(
outputFileText
,
new
TextContentAdapter
(),
new
SimpleContentProposalProvider
(
new
String
[]{
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_HOST
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_DATABASE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_TABLE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_DATE
),
GeneralUtils
.
variablePattern
(
AbstractImportExportWizard
.
VARIABLE_TIMESTAMP
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_HOST
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_DATABASE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_TABLE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_DATE
),
GeneralUtils
.
variablePattern
(
NativeToolUtils
.
VARIABLE_TIMESTAMP
),
}));
outputFileText
.
addModifyListener
(
e
->
wizard
.
getSettings
().
setOutputFilePattern
(
outputFileText
.
getText
()));
...
...
@@ -167,7 +167,7 @@ class PostgreBackupWizardPageSettings extends PostgreWizardPageSettings<PostgreB
super
.
saveState
();
String
fileName
=
outputFolderText
.
getText
();
wizard
.
setOutputFolder
(
CommonUtils
.
isEmpty
(
fileName
)
?
null
:
new
File
(
fileName
));
wizard
.
getSettings
().
setOutputFolder
(
CommonUtils
.
isEmpty
(
fileName
)
?
null
:
new
File
(
fileName
));
wizard
.
getSettings
().
setOutputFilePattern
(
outputFileText
.
getText
());
wizard
.
getSettings
().
setFormat
(
PostgreDatabaseBackupSettings
.
ExportFormat
.
values
()[
formatCombo
.
getSelectionIndex
()]);
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreRestoreWizard.java
浏览文件 @
fdb93e46
...
...
@@ -23,21 +23,15 @@ import org.eclipse.ui.IExportWizard;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreMessages
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreBackupRestoreSettings
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseRestoreInfo
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseRestoreSettings
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreSQLTasks
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
class
PostgreRestoreWizard
extends
PostgreBackupRestoreWizard
<
PostgreDatabaseRestoreSettings
,
PostgreDatabaseRestoreInfo
>
implements
IExportWizard
{
...
...
@@ -108,46 +102,9 @@ class PostgreRestoreWizard extends PostgreBackupRestoreWizard<PostgreDatabaseRes
SWT
.
ICON_INFORMATION
);
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
PostgreDatabaseRestoreInfo
arg
)
throws
IOException
{
super
.
fillProcessParameters
(
cmd
,
arg
);
if
(
getSettings
().
isCleanFirst
())
{
cmd
.
add
(
"-c"
);
}
}
@Override
protected
List
<
String
>
getCommandLine
(
PostgreDatabaseRestoreInfo
arg
)
throws
IOException
{
List
<
String
>
cmd
=
super
.
getCommandLine
(
arg
);
PostgreDatabaseRestoreSettings
settings
=
getSettings
();
if
(
settings
.
getFormat
()
!=
PostgreBackupRestoreSettings
.
ExportFormat
.
PLAIN
)
{
cmd
.
add
(
"--format="
+
settings
.
getFormat
().
getId
());
}
cmd
.
add
(
"--dbname="
+
arg
.
getDatabase
().
getName
());
if
(
settings
.
getFormat
()
==
PostgreBackupRestoreSettings
.
ExportFormat
.
DIRECTORY
)
{
cmd
.
add
(
settings
.
getInputFile
());
}
return
cmd
;
}
@Override
protected
PostgreDatabaseRestoreSettings
createSettings
()
{
return
new
PostgreDatabaseRestoreSettings
();
}
@Override
public
Collection
<
PostgreDatabaseRestoreInfo
>
getRunInfo
()
{
return
Collections
.
singleton
(
getSettings
().
getRestoreInfo
());
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
final
PostgreDatabaseRestoreInfo
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
super
.
startProcessHandler
(
monitor
,
arg
,
processBuilder
,
process
);
if
(
getSettings
().
getFormat
()
!=
PostgreBackupRestoreSettings
.
ExportFormat
.
DIRECTORY
)
{
new
BinaryFileTransformerJob
(
monitor
,
new
File
(
getSettings
().
getInputFile
()),
process
.
getOutputStream
()).
start
();
}
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreRestoreWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -27,7 +27,7 @@ import org.jkiss.dbeaver.ui.controls.TextWithOpenFile;
import
org.jkiss.utils.CommonUtils
;
class
PostgreRestoreWizardPageSettings
extends
PostgreWizardPageSettings
<
PostgreRestoreWizard
>
{
class
PostgreRestoreWizardPageSettings
extends
Postgre
Tool
WizardPageSettings
<
PostgreRestoreWizard
>
{
private
TextWithOpenFile
inputFileText
;
private
Combo
formatCombo
;
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreScriptExecuteWizard.java
浏览文件 @
fdb93e46
...
...
@@ -19,10 +19,7 @@ package org.jkiss.dbeaver.ext.postgresql.tools;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreConstants
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreDataSourceProvider
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreMessages
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreServerHome
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreSQLTasks
;
import
org.jkiss.dbeaver.ext.postgresql.tasks.PostgreScriptExecuteSettings
;
...
...
@@ -31,13 +28,8 @@ import org.jkiss.dbeaver.model.struct.DBSObject;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractScriptExecuteWizard
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
class
PostgreScriptExecuteWizard
extends
AbstractScriptExecuteWizard
<
PostgreScriptExecuteSettings
,
DBSObject
,
PostgreDatabase
>
{
...
...
@@ -88,37 +80,4 @@ class PostgreScriptExecuteWizard extends AbstractScriptExecuteWizard<PostgreScri
super
.
addPages
();
}
@Override
public
void
fillProcessParameters
(
List
<
String
>
cmd
,
PostgreDatabase
arg
)
throws
IOException
{
String
dumpPath
=
RuntimeUtils
.
getNativeClientBinary
(
getClientHome
(),
PostgreConstants
.
BIN_FOLDER
,
"psql"
).
getAbsolutePath
();
//$NON-NLS-1$
cmd
.
add
(
dumpPath
);
if
(
arg
.
getDataSource
().
isServerVersionAtLeast
(
9
,
5
))
{
cmd
.
add
(
"--echo-errors"
);
//$NON-NLS-1$
}
}
@Override
protected
void
setupProcessParameters
(
ProcessBuilder
process
)
{
super
.
setupProcessParameters
(
process
);
if
(!
CommonUtils
.
isEmpty
(
getToolUserPassword
()))
{
process
.
environment
().
put
(
"PGPASSWORD"
,
getToolUserPassword
());
}
}
@Override
public
PostgreServerHome
findNativeClientHome
(
String
clientHomeId
)
{
return
PostgreDataSourceProvider
.
getServerHome
(
clientHomeId
);
}
@Override
public
Collection
<
PostgreDatabase
>
getRunInfo
()
{
return
Collections
.
singletonList
(
getSettings
().
getDatabase
());
}
@Override
protected
List
<
String
>
getCommandLine
(
PostgreDatabase
arg
)
throws
IOException
{
List
<
String
>
cmd
=
PostgreToolScript
.
getPostgreToolCommandLine
(
this
,
arg
);
cmd
.
add
(
arg
.
getName
());
return
cmd
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreScriptExecuteWizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -31,12 +31,11 @@ import org.jkiss.dbeaver.model.DBIcon;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.DialogUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.File
;
public
class
PostgreScriptExecuteWizardPageSettings
extends
PostgreWizardPageSettings
<
PostgreScriptExecuteWizard
>
{
public
class
PostgreScriptExecuteWizardPageSettings
extends
Postgre
Tool
WizardPageSettings
<
PostgreScriptExecuteWizard
>
{
private
Text
inputFileText
;
PostgreScriptExecuteWizardPageSettings
(
PostgreScriptExecuteWizard
wizard
)
{
...
...
@@ -47,7 +46,7 @@ public class PostgreScriptExecuteWizardPageSettings extends PostgreWizardPageSet
@Override
public
boolean
isPageComplete
()
{
return
super
.
isPageComplete
()
&&
wizard
.
getInputFile
()
!=
null
;
return
super
.
isPageComplete
()
&&
wizard
.
get
Settings
().
get
InputFile
()
!=
null
;
}
@Override
...
...
@@ -73,8 +72,8 @@ public class PostgreScriptExecuteWizardPageSettings extends PostgreWizardPageSet
}
});
if
(
wizard
.
getInputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
InputFile
().
getAbsolutePath
());
if
(
wizard
.
get
Settings
().
get
InputFile
()
!=
null
)
{
inputFileText
.
setText
(
wizard
.
get
Settings
().
getInputFile
());
}
Composite
extraGroup
=
UIUtils
.
createComposite
(
composite
,
2
);
...
...
@@ -94,8 +93,8 @@ public class PostgreScriptExecuteWizardPageSettings extends PostgreWizardPageSet
@Override
public
void
saveState
()
{
String
fileName
=
inputFileText
.
getText
();
wizard
.
setInputFile
(
CommonUtils
.
isEmpty
(
fileName
)
?
null
:
new
File
(
fileName
));
super
.
saveState
();
wizard
.
getSettings
().
setInputFile
(
inputFileText
.
getText
(
));
}
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreToolScript.java
浏览文件 @
fdb93e46
...
...
@@ -20,18 +20,11 @@ import org.eclipse.ui.IWorkbenchPart;
import
org.eclipse.ui.IWorkbenchWindow
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolSettings
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.AbstractToolWizard
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.ToolWizardDialog
;
import
org.jkiss.dbeaver.ui.tools.IUserInterfaceTool
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
* Database import
...
...
@@ -51,25 +44,4 @@ public class PostgreToolScript implements IUserInterfaceTool
}
}
public
static
<
SETTINGS
extends
AbstractNativeToolSettings
<
BASE_OBJECT
>,
BASE_OBJECT
extends
DBSObject
,
PROCESS_ARG
>
List
<
String
>
getPostgreToolCommandLine
(
AbstractToolWizard
<
SETTINGS
,
BASE_OBJECT
,
PROCESS_ARG
>
toolWizard
,
PROCESS_ARG
arg
)
throws
IOException
{
java
.
util
.
List
<
String
>
cmd
=
new
ArrayList
<>();
toolWizard
.
fillProcessParameters
(
cmd
,
arg
);
if
(
toolWizard
.
isVerbose
())
{
cmd
.
add
(
"--verbose"
);
}
DBPConnectionConfiguration
connectionInfo
=
toolWizard
.
getConnectionInfo
();
cmd
.
add
(
"--host="
+
connectionInfo
.
getHostName
());
if
(!
CommonUtils
.
isEmpty
(
connectionInfo
.
getHostPort
()))
{
cmd
.
add
(
"--port="
+
connectionInfo
.
getHostPort
());
}
cmd
.
add
(
"--username="
+
toolWizard
.
getToolUserName
());
// if (!CommonUtils.isEmpty(toolWizard.getToolUserPassword())) {
// cmd.add("--password");
// }
return
cmd
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreWizardPageSettings.java
→
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/Postgre
Tool
WizardPageSettings.java
浏览文件 @
fdb93e46
...
...
@@ -37,10 +37,10 @@ import org.jkiss.dbeaver.ui.UIUtils;
import
org.jkiss.dbeaver.ui.dialogs.BaseAuthDialog
;
public
abstract
class
PostgreWizardPageSettings
<
WIZARD
extends
AbstractToolWizard
>
extends
AbstractToolWizardPage
<
WIZARD
>
public
abstract
class
Postgre
Tool
WizardPageSettings
<
WIZARD
extends
AbstractToolWizard
>
extends
AbstractToolWizardPage
<
WIZARD
>
{
public
PostgreWizardPageSettings
(
WIZARD
wizard
,
String
title
)
public
Postgre
Tool
WizardPageSettings
(
WIZARD
wizard
,
String
title
)
{
super
(
wizard
,
title
);
}
...
...
@@ -49,7 +49,7 @@ public abstract class PostgreWizardPageSettings<WIZARD extends AbstractToolWizar
{
try
{
final
SecuredPasswordEncrypter
encrypter
=
new
SecuredPasswordEncrypter
();
final
DBPConnectionConfiguration
connectionInfo
=
wizard
.
get
ConnectionInfo
();
final
DBPConnectionConfiguration
connectionInfo
=
wizard
.
get
Settings
().
getDataSourceContainer
().
getActualConnectionConfiguration
();
final
String
authProperty
=
DBConstants
.
INTERNAL_PROP_PREFIX
+
"-auth-"
+
wizard
.
getObjectsName
()
+
"@"
;
String
authUser
=
null
;
String
authPassword
=
null
;
...
...
@@ -69,7 +69,7 @@ public abstract class PostgreWizardPageSettings<WIZARD extends AbstractToolWizar
Group
securityGroup
=
UIUtils
.
createControlGroup
(
parent
,
PostgreMessages
.
wizard_backup_page_setting_group_security
,
2
,
GridData
.
HORIZONTAL_ALIGN_BEGINNING
,
0
);
Label
infoLabel
=
new
Label
(
securityGroup
,
SWT
.
NONE
);
infoLabel
.
setText
(
NLS
.
bind
(
PostgreMessages
.
wizard_backup_page_setting_group_security_label_info
,
wizard
.
getConnectionInfo
()
.
getUserName
(),
infoLabel
.
setText
(
NLS
.
bind
(
PostgreMessages
.
wizard_backup_page_setting_group_security_label_info
,
connectionInfo
.
getUserName
(),
wizard
.
getObjectsName
()));
GridData
gd
=
new
GridData
(
GridData
.
FILL_HORIZONTAL
);
gd
.
horizontalSpan
=
2
;
...
...
@@ -81,21 +81,12 @@ public abstract class PostgreWizardPageSettings<WIZARD extends AbstractToolWizar
public
void
widgetSelected
(
SelectionEvent
e
)
{
BaseAuthDialog
authDialog
=
new
BaseAuthDialog
(
getShell
(),
PostgreMessages
.
wizard_backup_page_setting_group_security_btn_authentication
,
false
,
true
);
authDialog
.
setUserName
(
wizard
.
getToolUserName
());
authDialog
.
setUserPassword
(
wizard
.
getToolUserPassword
());
authDialog
.
setUserName
(
wizard
.
get
Settings
().
get
ToolUserName
());
authDialog
.
setUserPassword
(
wizard
.
get
Settings
().
get
ToolUserPassword
());
authDialog
.
setSavePassword
(
savePassword
);
if
(
authDialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
wizard
.
setToolUserName
(
authDialog
.
getUserName
());
wizard
.
setToolUserPassword
(
authDialog
.
getUserPassword
());
if
(
authDialog
.
isSavePassword
())
{
try
{
connectionInfo
.
setProviderProperty
(
authProperty
,
encrypter
.
encrypt
(
wizard
.
getToolUserName
()
+
':'
+
wizard
.
getToolUserPassword
()));
}
catch
(
EncryptionException
e1
)
{
// Never be here
}
}
wizard
.
getSettings
().
setToolUserName
(
authDialog
.
getUserName
());
wizard
.
getSettings
().
setToolUserPassword
(
authDialog
.
getUserPassword
());
}
}
});
...
...
@@ -107,8 +98,8 @@ public abstract class PostgreWizardPageSettings<WIZARD extends AbstractToolWizar
public
void
widgetSelected
(
SelectionEvent
e
)
{
connectionInfo
.
getProviderProperties
().
remove
(
authProperty
);
wizard
.
setToolUserName
(
connectionInfo
.
getUserName
()
);
wizard
.
setToolUserPassword
(
connectionInfo
.
getUserPassword
()
);
wizard
.
getSettings
().
setToolUserName
(
null
);
wizard
.
getSettings
().
setToolUserPassword
(
null
);
}
});
}
catch
(
EncryptionException
e
)
{
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupHandler.java
浏览文件 @
fdb93e46
...
...
@@ -8,6 +8,7 @@ import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.tasks.nativetool.NativeToolUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -126,20 +127,20 @@ public class PostgreDatabaseBackupHandler extends PostgreNativeToolHandler<Postg
String
outFileName
=
GeneralUtils
.
replaceVariables
(
settings
.
getOutputFilePattern
(),
name
->
{
switch
(
name
)
{
case
VARIABLE_DATABASE:
case
NativeToolUtils
.
VARIABLE_DATABASE
:
return
arg
.
getDatabase
().
getName
();
case
VARIABLE_HOST:
case
NativeToolUtils
.
VARIABLE_HOST
:
return
arg
.
getDatabase
().
getDataSource
().
getContainer
().
getConnectionConfiguration
().
getHostName
();
case
VARIABLE_TABLE:
case
NativeToolUtils
.
VARIABLE_TABLE
:
final
Iterator
<
PostgreTableBase
>
iterator
=
arg
.
getTables
()
==
null
?
null
:
arg
.
getTables
().
iterator
();
if
(
iterator
!=
null
&&
iterator
.
hasNext
())
{
return
iterator
.
next
().
getName
();
}
else
{
return
"null"
;
}
case
VARIABLE_TIMESTAMP:
case
NativeToolUtils
.
VARIABLE_TIMESTAMP
:
return
RuntimeUtils
.
getCurrentTimeStamp
();
case
VARIABLE_DATE:
case
NativeToolUtils
.
VARIABLE_DATE
:
return
RuntimeUtils
.
getCurrentDate
();
default
:
System
.
getProperty
(
name
);
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
浏览文件 @
fdb93e46
...
...
@@ -571,6 +571,9 @@ public final class DBUtils {
return
null
;
}
}
if
(
names
.
length
==
1
)
{
return
dataSourceContainer
;
}
if
(!
dataSourceContainer
.
isConnected
())
{
dataSourceContainer
.
connect
(
monitor
,
true
,
true
);
}
...
...
@@ -597,9 +600,6 @@ public final class DBUtils {
}
}
if
(
sc
!=
null
)
{
if
(
names
.
length
==
1
)
{
return
sc
;
}
String
objectName
=
names
[
names
.
length
-
1
];
DBSObject
object
=
sc
.
getChild
(
monitor
,
objectName
);
if
(
object
==
null
)
{
...
...
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractImportExportWizard.java
浏览文件 @
fdb93e46
...
...
@@ -21,11 +21,9 @@ import org.eclipse.jface.dialogs.IMessageProvider;
import
org.eclipse.jface.viewers.IStructuredSelection
;
import
org.eclipse.ui.IExportWizard
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.tasks.nativetool.AbstractImportExportSettings
;
import
org.jkiss.dbeaver.ui.dialogs.DialogUtils
;
import
java.io.File
;
import
java.util.Collection
;
...
...
@@ -33,12 +31,6 @@ import java.util.Collection;
public
abstract
class
AbstractImportExportWizard
<
SETTINGS
extends
AbstractImportExportSettings
<
DBSObject
>,
PROCESS_ARG
>
extends
AbstractToolWizard
<
SETTINGS
,
DBSObject
,
PROCESS_ARG
>
implements
IExportWizard
{
public
static
final
String
VARIABLE_HOST
=
"host"
;
public
static
final
String
VARIABLE_DATABASE
=
"database"
;
public
static
final
String
VARIABLE_TABLE
=
"table"
;
public
static
final
String
VARIABLE_DATE
=
"date"
;
public
static
final
String
VARIABLE_TIMESTAMP
=
"timestamp"
;
protected
AbstractImportExportWizard
(
Collection
<
DBSObject
>
objects
,
String
title
)
{
super
(
objects
,
title
);
}
...
...
@@ -52,21 +44,6 @@ public abstract class AbstractImportExportWizard<SETTINGS extends AbstractImport
return
false
;
}
public
File
getOutputFolder
()
{
return
getSettings
().
getOutputFolder
();
}
public
void
setOutputFolder
(
File
outputFolder
)
{
if
(
outputFolder
!=
null
)
{
DialogUtils
.
setCurDialogFolder
(
outputFolder
.
getAbsolutePath
());
}
this
.
getSettings
().
setOutputFolder
(
outputFolder
);
}
public
String
getOutputFilePattern
()
{
return
getSettings
().
getOutputFilePattern
();
}
@Override
public
void
init
(
IWorkbench
workbench
,
IStructuredSelection
selection
)
{
setWindowTitle
(
taskTitle
);
...
...
@@ -103,11 +80,4 @@ public abstract class AbstractImportExportWizard<SETTINGS extends AbstractImport
return
true
;
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
final
PROCESS_ARG
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
logPage
.
startLogReader
(
processBuilder
,
process
.
getErrorStream
());
}
}
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractScriptExecuteWizard.java
浏览文件 @
fdb93e46
...
...
@@ -22,15 +22,12 @@ import org.eclipse.osgi.util.NLS;
import
org.eclipse.swt.SWT
;
import
org.eclipse.ui.IImportWizard
;
import
org.eclipse.ui.IWorkbench
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.tasks.nativetool.AbstractScriptExecuteSettings
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.internal.TaskNativeUIMessages
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
java.io.File
;
import
java.util.Collection
;
public
abstract
class
AbstractScriptExecuteWizard
<
SETTINGS
extends
AbstractScriptExecuteSettings
<
BASE_OBJECT
>,
BASE_OBJECT
extends
DBSObject
,
PROCESS_ARG
>
...
...
@@ -52,15 +49,6 @@ public abstract class AbstractScriptExecuteWizard<SETTINGS extends AbstractScrip
return
false
;
}
public
File
getInputFile
()
{
return
new
File
(
getSettings
().
getInputFile
());
}
public
void
setInputFile
(
File
inputFile
)
{
getSettings
().
setInputFile
(
inputFile
==
null
?
null
:
inputFile
.
getAbsolutePath
());
}
@Override
public
void
init
(
IWorkbench
workbench
,
IStructuredSelection
selection
)
{
setWindowTitle
(
taskTitle
);
...
...
@@ -69,7 +57,8 @@ public abstract class AbstractScriptExecuteWizard<SETTINGS extends AbstractScrip
@Override
public
void
addPages
()
{
//super.addPages(); // Do not add base wizard pages. They can be added explicitly thru addTaskConfigPages
// Do not add base wizard pages. They can be added explicitly thru addTaskConfigPages
//super.addPages();
addPage
(
logPage
);
}
...
...
@@ -81,27 +70,4 @@ public abstract class AbstractScriptExecuteWizard<SETTINGS extends AbstractScrip
SWT
.
ICON_INFORMATION
);
}
@Override
protected
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
PROCESS_ARG
arg
,
ProcessBuilder
processBuilder
,
Process
process
)
{
logPage
.
startLogReader
(
processBuilder
,
process
.
getInputStream
());
new
TextFileTransformerJob
(
monitor
,
getInputFile
(),
process
.
getOutputStream
(),
getInputCharset
(),
getOutputCharset
()).
start
();
}
@Override
protected
boolean
isMergeProcessStreams
()
{
return
true
;
}
protected
String
getInputCharset
()
{
return
GeneralUtils
.
UTF8_ENCODING
;
}
protected
String
getOutputCharset
()
{
return
GeneralUtils
.
UTF8_ENCODING
;
}
}
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractToolWizard.java
浏览文件 @
fdb93e46
...
...
@@ -17,7 +17,6 @@
*/
package
org.jkiss.dbeaver.tasks.ui.nativetool
;
import
org.eclipse.core.runtime.CoreException
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.jface.wizard.WizardPage
;
import
org.eclipse.osgi.util.NLS
;
...
...
@@ -27,35 +26,24 @@ import org.eclipse.swt.widgets.Display;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.app.DBPProject
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.connection.DBPNativeClientLocation
;
import
org.jkiss.dbeaver.model.connection.LocalNativeClientLocation
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseNode
;
import
org.jkiss.dbeaver.model.preferences.DBPPreferenceStore
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.model.task.DBTTaskHandler
;
import
org.jkiss.dbeaver.registry.task.TaskPreferenceStore
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.runtime.ProgressStreamReader
;
import
org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolSettings
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.internal.TaskNativeUIMessages
;
import
org.jkiss.dbeaver.tasks.ui.wizard.TaskConfigurationWizard
;
import
org.jkiss.dbeaver.tasks.ui.wizard.TaskWizardExecutor
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.utils.CommonUtils
;
import
org.jkiss.utils.IOUtils
;
import
java.io.*
;
import
java.lang.reflect.InvocationTargetException
;
import
java.text.NumberFormat
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
/**
...
...
@@ -135,60 +123,6 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
return
false
;
}
protected
boolean
needsModelRefresh
()
{
return
true
;
}
public
List
<
BASE_OBJECT
>
getDatabaseObjects
()
{
return
settings
.
getDatabaseObjects
();
}
public
DBPConnectionConfiguration
getConnectionInfo
()
{
DBPDataSourceContainer
ds
=
settings
.
getDataSourceContainer
();
if
(
ds
!=
null
)
{
return
ds
.
getConnectionConfiguration
();
}
return
null
;
}
public
DBPNativeClientLocation
getClientHome
()
{
return
settings
.
getClientHome
();
}
public
String
getToolUserName
()
{
return
settings
.
getToolUserName
();
}
public
void
setToolUserName
(
String
toolUserName
)
{
this
.
settings
.
setToolUserName
(
toolUserName
);
}
public
String
getToolUserPassword
()
{
return
settings
.
getToolUserPassword
();
}
public
void
setToolUserPassword
(
String
toolUserPassword
)
{
this
.
settings
.
setToolUserPassword
(
toolUserPassword
);
}
public
String
getExtraCommandArgs
()
{
return
settings
.
getExtraCommandArgs
();
}
public
DBPDataSourceContainer
getDataSourceContainer
()
{
return
settings
.
getDataSourceContainer
();
}
public
DBPNativeClientLocation
findNativeClientHome
(
String
clientHomeId
)
{
return
null
;
}
public
abstract
Collection
<
PROCESS_ARG
>
getRunInfo
();
public
Collection
<
BASE_OBJECT
>
getUpdatedObjects
(
PROCESS_ARG
settings
)
{
return
Collections
.
emptyList
();
}
@Override
public
void
createPageControls
(
Composite
pageContainer
)
{
settings
.
loadSettings
(
UIUtils
.
getDefaultRunnableContext
(),
getPreferenceStore
());
...
...
@@ -198,12 +132,12 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
updateErrorMessage
();
}
public
void
updateErrorMessage
()
{
void
updateErrorMessage
()
{
WizardPage
currentPage
=
(
WizardPage
)
getStartingPage
();
if
(
isNativeClientHomeRequired
())
{
String
clientHomeId
=
getDataSourceContainer
().
getConnectionConfiguration
().
getClientHomeId
();
List
<
DBPNativeClientLocation
>
nativeClientLocations
=
getDataSourceContainer
().
getDriver
().
getNativeClientLocations
();
String
clientHomeId
=
get
Settings
().
get
DataSourceContainer
().
getConnectionConfiguration
().
getClientHomeId
();
List
<
DBPNativeClientLocation
>
nativeClientLocations
=
get
Settings
().
get
DataSourceContainer
().
getDriver
().
getNativeClientLocations
();
if
(
CommonUtils
.
isEmpty
(
clientHomeId
))
{
if
(
nativeClientLocations
!=
null
&&
!
nativeClientLocations
.
isEmpty
())
{
settings
.
setClientHome
(
nativeClientLocations
.
get
(
0
));
...
...
@@ -218,7 +152,7 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
}
else
{
DBPNativeClientLocation
clientHome
=
DBUtils
.
findObject
(
nativeClientLocations
,
clientHomeId
);
if
(
clientHome
==
null
)
{
clientHome
=
findNativeClientHome
(
clientHomeId
);
clientHome
=
getSettings
().
findNativeClientHome
(
clientHomeId
);
}
if
(
clientHome
==
null
)
{
// Make local client home from location
...
...
@@ -268,23 +202,13 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
return
false
;
}
if
(
isRunTaskOnFinish
()
)
{
if
(
getCurrentTask
()
!=
null
)
{
return
super
.
performFinish
();
}
if
(
getContainer
().
getCurrentPage
()
!=
logPage
)
{
getContainer
().
showPage
(
logPage
);
}
showLogPage
();
if
(
getCurrentTask
()
==
null
)
{
try
{
DBTTaskHandler
handler
=
null
;
try
{
handler
=
getTaskType
().
createHandler
();
}
catch
(
Throwable
e
)
{
// No handler
}
if
(
handler
!=
null
)
{
// Execute directly - without task serialize/deserialize
// We need it because some data producers cannot be serialized properly (e.g. ResultSetDatacontainer - see #7342)
DBTTask
temporaryTask
=
getProject
().
getTaskManager
().
createTemporaryTask
(
getTaskType
(),
getTaskType
().
getName
());
...
...
@@ -292,36 +216,16 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
TaskWizardExecutor
executor
=
new
TaskWizardExecutor
(
getRunnableContext
(),
temporaryTask
,
log
,
logPage
.
getLogWriter
());
executor
.
executeTask
();
return
false
;
}
}
catch
(
Exception
e
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
e
.
getMessage
(),
"Error running task"
,
e
);
return
false
;
}
}
long
startTime
=
System
.
currentTimeMillis
();
try
{
UIUtils
.
run
(
getContainer
(),
true
,
true
,
new
ToolRunner
());
}
catch
(
InterruptedException
ex
)
{
UIUtils
.
showMessageBox
(
getShell
(),
taskTitle
,
NLS
.
bind
(
TaskNativeUIMessages
.
tools_wizard_error_task_canceled
,
taskTitle
,
getObjectsName
()),
SWT
.
ICON_ERROR
);
return
false
;
}
catch
(
InvocationTargetException
ex
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
NLS
.
bind
(
TaskNativeUIMessages
.
tools_wizard_error_task_error_title
,
taskTitle
),
TaskNativeUIMessages
.
tools_wizard_error_task_error_message
+
taskTitle
,
ex
.
getTargetException
());
return
false
;
}
finally
{
getContainer
().
updateButtons
();
}
long
workTime
=
System
.
currentTimeMillis
()
-
startTime
;
notifyToolFinish
(
taskTitle
+
" finished"
,
workTime
);
if
(
isSuccess
)
{
onSuccess
(
workTime
);
}
else
{
onError
();
protected
void
showLogPage
()
{
if
(
getContainer
().
getCurrentPage
()
!=
logPage
)
{
getContainer
().
showPage
(
logPage
);
}
return
false
;
}
protected
void
notifyToolFinish
(
String
toolName
,
long
workTime
)
{
...
...
@@ -342,62 +246,10 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
return
str
.
toString
();
}
public
boolean
executeProcess
(
DBRProgressMonitor
monitor
,
PROCESS_ARG
arg
)
throws
IOException
,
CoreException
,
InterruptedException
{
monitor
.
beginTask
(
getWindowTitle
(),
1
);
try
{
final
List
<
String
>
commandLine
=
getCommandLine
(
arg
);
final
File
execPath
=
new
File
(
commandLine
.
get
(
0
));
ProcessBuilder
processBuilder
=
new
ProcessBuilder
(
commandLine
);
processBuilder
.
directory
(
execPath
.
getParentFile
());
if
(
this
.
isMergeProcessStreams
())
{
processBuilder
.
redirectErrorStream
(
true
);
}
setupProcessParameters
(
processBuilder
);
Process
process
=
processBuilder
.
start
();
startProcessHandler
(
monitor
,
arg
,
processBuilder
,
process
);
Thread
.
sleep
(
100
);
for
(;
;
)
{
Thread
.
sleep
(
100
);
if
(
monitor
.
isCanceled
())
{
process
.
destroy
();
}
try
{
final
int
exitCode
=
process
.
exitValue
();
if
(
exitCode
!=
0
)
{
errorMessage
=
NLS
.
bind
(
TaskNativeUIMessages
.
tools_wizard_log_process_exit_code
,
exitCode
);
logPage
.
appendLog
(
errorMessage
+
"\n"
,
true
);
return
false
;
}
}
catch
(
IllegalThreadStateException
e
)
{
// Still running
continue
;
}
break
;
}
//process.waitFor();
}
catch
(
IOException
e
)
{
monitor
.
done
();
log
.
error
(
e
);
logPage
.
appendLog
(
NLS
.
bind
(
TaskNativeUIMessages
.
tools_wizard_log_io_error
,
e
.
getMessage
())
+
"\n"
,
true
);
return
false
;
}
return
true
;
}
protected
boolean
isNativeClientHomeRequired
()
{
return
true
;
}
protected
boolean
isMergeProcessStreams
()
{
return
false
;
}
public
boolean
isVerbose
()
{
return
false
;
}
...
...
@@ -414,205 +266,5 @@ public abstract class AbstractToolWizard<SETTINGS extends AbstractNativeToolSett
SWT
.
ICON_ERROR
);
}
abstract
protected
java
.
util
.
List
<
String
>
getCommandLine
(
PROCESS_ARG
arg
)
throws
IOException
;
public
abstract
void
fillProcessParameters
(
List
<
String
>
cmd
,
PROCESS_ARG
arg
)
throws
IOException
;
protected
void
setupProcessParameters
(
ProcessBuilder
process
)
{
}
protected
abstract
void
startProcessHandler
(
DBRProgressMonitor
monitor
,
PROCESS_ARG
arg
,
ProcessBuilder
processBuilder
,
Process
process
);
public
boolean
isSecureString
(
String
string
)
{
String
password
=
getToolUserPassword
();
return
!
CommonUtils
.
isEmpty
(
password
)
&&
string
.
contains
(
password
);
}
public
abstract
class
DumpJob
extends
Thread
{
protected
DBRProgressMonitor
monitor
;
protected
InputStream
input
;
protected
File
outFile
;
protected
DumpJob
(
String
name
,
DBRProgressMonitor
monitor
,
InputStream
stream
,
File
outFile
)
{
super
(
name
);
this
.
monitor
=
monitor
;
this
.
input
=
stream
;
this
.
outFile
=
outFile
;
}
@Override
public
final
void
run
()
{
try
{
runDump
();
}
catch
(
IOException
e
)
{
logPage
.
appendLog
(
e
.
getMessage
());
}
}
protected
abstract
void
runDump
()
throws
IOException
;
}
public
class
DumpCopierJob
extends
DumpJob
{
public
DumpCopierJob
(
DBRProgressMonitor
monitor
,
String
name
,
InputStream
stream
,
File
outFile
)
{
super
(
name
,
monitor
,
stream
,
outFile
);
}
@Override
public
void
runDump
()
throws
IOException
{
monitor
.
beginTask
(
getName
(),
100
);
long
totalBytesDumped
=
0
;
long
prevStatusUpdateTime
=
0
;
byte
[]
buffer
=
new
byte
[
10000
];
try
{
NumberFormat
numberFormat
=
NumberFormat
.
getInstance
();
try
(
OutputStream
output
=
new
FileOutputStream
(
outFile
))
{
for
(;
;
)
{
int
count
=
input
.
read
(
buffer
);
if
(
count
<=
0
)
{
break
;
}
totalBytesDumped
+=
count
;
long
currentTime
=
System
.
currentTimeMillis
();
if
(
currentTime
-
prevStatusUpdateTime
>
300
)
{
monitor
.
subTask
(
numberFormat
.
format
(
totalBytesDumped
)
+
" bytes"
);
prevStatusUpdateTime
=
currentTime
;
}
output
.
write
(
buffer
,
0
,
count
);
}
output
.
flush
();
}
}
finally
{
monitor
.
done
();
}
}
}
public
class
TextFileTransformerJob
extends
Thread
{
private
DBRProgressMonitor
monitor
;
private
OutputStream
output
;
private
File
inputFile
;
private
String
inputCharset
;
private
String
outputCharset
;
public
TextFileTransformerJob
(
DBRProgressMonitor
monitor
,
File
inputFile
,
OutputStream
stream
,
String
inputCharset
,
String
outputCharset
)
{
super
(
taskTitle
);
this
.
monitor
=
monitor
;
this
.
output
=
stream
;
this
.
inputFile
=
inputFile
;
this
.
inputCharset
=
inputCharset
;
this
.
outputCharset
=
outputCharset
;
}
@Override
public
void
run
()
{
try
{
try
(
InputStream
scriptStream
=
new
ProgressStreamReader
(
monitor
,
taskTitle
,
new
FileInputStream
(
inputFile
),
inputFile
.
length
()))
{
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
scriptStream
,
inputCharset
));
PrintWriter
writer
=
new
PrintWriter
(
new
OutputStreamWriter
(
output
,
outputCharset
));
while
(!
monitor
.
isCanceled
())
{
String
line
=
reader
.
readLine
();
if
(
line
==
null
)
{
break
;
}
writer
.
println
(
line
);
writer
.
flush
();
}
output
.
flush
();
}
finally
{
IOUtils
.
close
(
output
);
}
}
catch
(
IOException
e
)
{
log
.
debug
(
e
);
logPage
.
appendLog
(
e
.
getMessage
());
}
finally
{
monitor
.
done
();
transferFinished
=
true
;
}
}
}
public
class
BinaryFileTransformerJob
extends
Thread
{
private
DBRProgressMonitor
monitor
;
private
OutputStream
output
;
private
File
inputFile
;
public
BinaryFileTransformerJob
(
DBRProgressMonitor
monitor
,
File
inputFile
,
OutputStream
stream
)
{
super
(
taskTitle
);
this
.
monitor
=
monitor
;
this
.
output
=
stream
;
this
.
inputFile
=
inputFile
;
}
@Override
public
void
run
()
{
try
(
InputStream
scriptStream
=
new
ProgressStreamReader
(
monitor
,
taskTitle
,
new
FileInputStream
(
inputFile
),
inputFile
.
length
()))
{
byte
[]
buffer
=
new
byte
[
100000
];
while
(!
monitor
.
isCanceled
())
{
int
readSize
=
scriptStream
.
read
(
buffer
);
if
(
readSize
<
0
)
{
break
;
}
output
.
write
(
buffer
,
0
,
readSize
);
output
.
flush
();
}
output
.
flush
();
}
catch
(
IOException
e
)
{
log
.
debug
(
e
);
logPage
.
appendLog
(
e
.
getMessage
()
+
"\n"
);
}
finally
{
try
{
output
.
close
();
}
catch
(
IOException
e
)
{
log
.
error
(
e
);
}
monitor
.
done
();
transferFinished
=
true
;
}
}
}
private
class
ToolRunner
implements
DBRRunnableWithProgress
{
@Override
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
try
{
isSuccess
=
true
;
for
(
PROCESS_ARG
arg
:
getRunInfo
())
{
if
(
monitor
.
isCanceled
())
break
;
if
(!
executeProcess
(
monitor
,
arg
))
{
isSuccess
=
false
;
}
}
refreshObjects
=
isSuccess
&&
!
monitor
.
isCanceled
();
if
(
refreshObjects
&&
needsModelRefresh
())
{
// Refresh navigator node (script execution can change everything inside)
for
(
BASE_OBJECT
object
:
settings
.
getDatabaseObjects
())
{
final
DBNDatabaseNode
node
=
settings
.
getDataSourceContainer
().
getPlatform
().
getNavigatorModel
().
findNode
(
object
);
if
(
node
!=
null
)
{
node
.
refreshNode
(
monitor
,
AbstractToolWizard
.
this
);
}
}
}
}
catch
(
InterruptedException
e
)
{
throw
e
;
}
catch
(
Exception
e
)
{
throw
new
InvocationTargetException
(
e
);
}
finally
{
finished
=
true
;
}
if
(
monitor
.
isCanceled
())
{
throw
new
InterruptedException
();
}
}
}
}
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/AbstractToolWizardPage.java
浏览文件 @
fdb93e46
...
...
@@ -44,7 +44,7 @@ public abstract class AbstractToolWizardPage<WIZARD extends AbstractToolWizard>
@Override
public
boolean
isPageComplete
()
{
return
wizard
.
getClientHome
()
!=
null
&&
super
.
isPageComplete
();
return
wizard
.
get
Settings
().
get
ClientHome
()
!=
null
&&
super
.
isPageComplete
();
}
protected
void
createCheckButtons
(
Composite
buttonsPanel
,
final
Table
table
)
{
...
...
@@ -53,7 +53,7 @@ public abstract class AbstractToolWizardPage<WIZARD extends AbstractToolWizard>
}
protected
void
createExtraArgsInput
(
Composite
outputGroup
)
{
extraCommandArgsText
=
UIUtils
.
createLabelText
(
outputGroup
,
"Extra command args"
,
wizard
.
getExtraCommandArgs
());
extraCommandArgsText
=
UIUtils
.
createLabelText
(
outputGroup
,
"Extra command args"
,
wizard
.
get
Settings
().
get
ExtraCommandArgs
());
extraCommandArgsText
.
setToolTipText
(
"Set extra command args for tool executable."
);
UIUtils
.
installContentProposal
(
extraCommandArgsText
,
...
...
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/ToolWizardDialog.java
浏览文件 @
fdb93e46
...
...
@@ -85,7 +85,7 @@ public class ToolWizardDialog extends TaskConfigurationWizardDialog {
private
void
openClientConfiguration
()
{
AbstractToolWizard
toolWizard
=
(
AbstractToolWizard
)
getWizard
();
DBPDataSourceContainer
dataSource
=
toolWizard
.
getDataSourceContainer
();
DBPDataSourceContainer
dataSource
=
toolWizard
.
get
Settings
().
get
DataSourceContainer
();
if
(
dataSource
!=
null
)
{
NativeClientConfigDialog
dialog
=
new
NativeClientConfigDialog
(
getShell
(),
dataSource
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
...
...
plugins/org.jkiss.dbeaver.tasks.native.ui/src/org/jkiss/dbeaver/tasks/ui/nativetool/ToolWizardPageLog.java
浏览文件 @
fdb93e46
...
...
@@ -29,6 +29,7 @@ import org.eclipse.swt.widgets.Composite;
import
org.eclipse.ui.console.MessageConsole
;
import
org.eclipse.ui.console.TextConsoleViewer
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.tasks.nativetool.NativeToolUtils
;
import
org.jkiss.dbeaver.tasks.ui.nativetool.internal.TaskNativeUIMessages
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -143,7 +144,7 @@ public class ToolWizardPageLog extends WizardPage {
// Dump command line
StringBuilder
cmdString
=
new
StringBuilder
();
for
(
String
cmd
:
command
)
{
if
(
wizard
.
isSecureString
(
cmd
))
{
if
(
NativeToolUtils
.
isSecureString
(
wizard
.
getSettings
(),
cmd
))
{
cmd
=
"******"
;
}
if
(
cmdString
.
length
()
>
0
)
cmdString
.
append
(
' '
);
...
...
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/AbstractNativeToolHandler.java
浏览文件 @
fdb93e46
...
...
@@ -18,7 +18,6 @@ import org.jkiss.dbeaver.model.task.DBTTaskHandler;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.runtime.ProgressStreamReader
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.CommonUtils
;
import
org.jkiss.utils.IOUtils
;
import
java.io.*
;
...
...
@@ -28,12 +27,6 @@ import java.util.*;
public
abstract
class
AbstractNativeToolHandler
<
SETTINGS
extends
AbstractNativeToolSettings
<
BASE_OBJECT
>,
BASE_OBJECT
extends
DBSObject
,
PROCESS_ARG
>
implements
DBTTaskHandler
{
public
static
final
String
VARIABLE_HOST
=
"host"
;
public
static
final
String
VARIABLE_DATABASE
=
"database"
;
public
static
final
String
VARIABLE_TABLE
=
"table"
;
public
static
final
String
VARIABLE_DATE
=
"date"
;
public
static
final
String
VARIABLE_TIMESTAMP
=
"timestamp"
;
@Override
public
void
executeTask
(
@NotNull
DBRRunnableContext
runnableContext
,
...
...
@@ -284,13 +277,6 @@ public abstract class AbstractNativeToolHandler<SETTINGS extends AbstractNativeT
return
isSuccess
;
}
public
boolean
isSecureString
(
SETTINGS
settings
,
String
string
)
{
String
userPassword
=
settings
.
getDataSourceContainer
().
getActualConnectionConfiguration
().
getUserPassword
();
String
toolUserPassword
=
settings
.
getToolUserPassword
();
return
!
CommonUtils
.
isEmpty
(
toolUserPassword
)
&&
string
.
contains
(
toolUserPassword
)
||
!
CommonUtils
.
isEmpty
(
userPassword
)
&&
string
.
contains
(
userPassword
);
}
public
static
abstract
class
DumpJob
extends
Thread
{
protected
DBRProgressMonitor
monitor
;
protected
InputStream
input
;
...
...
@@ -474,7 +460,7 @@ public abstract class AbstractNativeToolHandler<SETTINGS extends AbstractNativeT
// Dump command line
StringBuilder
cmdString
=
new
StringBuilder
();
for
(
String
cmd
:
command
)
{
if
(
isSecureString
(
settings
,
cmd
))
{
if
(
NativeToolUtils
.
isSecureString
(
settings
,
cmd
))
{
cmd
=
"******"
;
}
if
(
cmdString
.
length
()
>
0
)
cmdString
.
append
(
' '
);
...
...
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/AbstractNativeToolSettings.java
浏览文件 @
fdb93e46
...
...
@@ -45,7 +45,7 @@ public abstract class AbstractNativeToolSettings<BASE_OBJECT extends DBSObject>
private
String
toolUserPassword
;
private
String
extraCommandArgs
;
p
rotected
DBPNativeClientLocation
findNativeClientHome
(
String
clientHomeId
)
{
p
ublic
DBPNativeClientLocation
findNativeClientHome
(
String
clientHomeId
)
{
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java
0 → 100644
浏览文件 @
fdb93e46
package
org.jkiss.dbeaver.tasks.nativetool
;
import
org.jkiss.utils.CommonUtils
;
public
abstract
class
NativeToolUtils
{
public
static
final
String
VARIABLE_HOST
=
"host"
;
public
static
final
String
VARIABLE_DATABASE
=
"database"
;
public
static
final
String
VARIABLE_TABLE
=
"table"
;
public
static
final
String
VARIABLE_DATE
=
"date"
;
public
static
final
String
VARIABLE_TIMESTAMP
=
"timestamp"
;
public
static
boolean
isSecureString
(
AbstractNativeToolSettings
settings
,
String
string
)
{
String
userPassword
=
settings
.
getDataSourceContainer
().
getActualConnectionConfiguration
().
getUserPassword
();
String
toolUserPassword
=
settings
.
getToolUserPassword
();
return
!
CommonUtils
.
isEmpty
(
toolUserPassword
)
&&
string
.
contains
(
toolUserPassword
)
||
!
CommonUtils
.
isEmpty
(
userPassword
)
&&
string
.
contains
(
userPassword
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录