Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
2beb8287
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,发现更多精彩内容 >>
提交
2beb8287
编写于
7月 07, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
UI/runtime model refactoring
上级
64371299
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
126 addition
and
147 deletion
+126
-147
plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java
...dbeaver/core/application/ApplicationWorkbenchAdvisor.java
+12
-51
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java
...ss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java
+50
-7
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/DisconnectJob.java
...ore/src/org/jkiss/dbeaver/runtime/jobs/DisconnectJob.java
+4
-18
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/EventProcessorJob.java
...src/org/jkiss/dbeaver/runtime/jobs/EventProcessorJob.java
+7
-57
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
...ore/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
+0
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
...r.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/ui/DBUICallback.java
...r.core/src/org/jkiss/dbeaver/runtime/ui/DBUICallback.java
+4
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/ui/DBUserInterface.java
...ore/src/org/jkiss/dbeaver/runtime/ui/DBUserInterface.java
+17
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferConsumer.java
...ver/tools/transfer/database/DatabaseTransferConsumer.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java
...kiss/dbeaver/ui/actions/datasource/DataSourceHandler.java
+26
-7
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorDialog.java
...ss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorDialog.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java
...jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorResponse.java
.../dbeaver/ui/dialogs/exec/ExecutionQueueErrorResponse.java
+1
-1
未找到文件。
plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java
浏览文件 @
2beb8287
...
...
@@ -23,19 +23,13 @@ import org.eclipse.ui.application.IWorkbenchConfigurer;
import
org.eclipse.ui.application.IWorkbenchWindowConfigurer
;
import
org.eclipse.ui.application.WorkbenchAdvisor
;
import
org.eclipse.ui.application.WorkbenchWindowAdvisor
;
import
org.eclipse.ui.keys.IBindingService
;
import
org.jkiss.dbeaver.DBeaverPreferences
;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.ui.actions.DBeaverVersionChecker
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithResult
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceRegistry
;
import
org.jkiss.dbeaver.ui.actions.DBeaverVersionChecker
;
import
org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Calendar
;
import
java.util.Random
;
...
...
@@ -45,8 +39,6 @@ import java.util.Random;
*/
public
class
ApplicationWorkbenchAdvisor
extends
WorkbenchAdvisor
{
static
final
Log
log
=
Log
.
getLog
(
ApplicationWorkbenchAdvisor
.
class
);
private
static
final
String
PERSPECTIVE_ID
=
"org.jkiss.dbeaver.core.perspective"
;
//$NON-NLS-1$
public
static
final
String
DBEAVER_SCHEME_NAME
=
"org.jkiss.dbeaver.defaultKeyScheme"
;
//$NON-NLS-1$
...
...
@@ -70,18 +62,6 @@ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor
configurer
.
setSaveAndRestore
(
true
);
TrayDialog
.
setDialogHelpAvailable
(
true
);
// Disable all schemas except our own
final
IBindingService
bindingService
=
(
IBindingService
)
configurer
.
getWorkbench
().
getService
(
IBindingService
.
class
);
// for (Binding binding : bindingService.getBindings()) {
// System.out.println("binding:" + binding);
// }
// for (Scheme scheme : bindingService.getDefinedSchemes()) {
// if (!scheme.getId().equals(DBEAVER_SCHEME_NAME)) {
// scheme.undefine();
// }
// }
}
@Override
...
...
@@ -137,44 +117,25 @@ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor
private
boolean
saveAndCleanup
()
{
if
(!
closeActiveTransactions
())
{
return
false
;
}
return
true
;
return
closeActiveTransactions
();
}
private
boolean
closeActiveTransactions
()
{
TransactionCloser
closer
=
new
TransactionCloser
();
try
{
DBeaverUI
.
runInProgressService
(
closer
);
}
catch
(
InvocationTargetException
e
)
{
log
.
error
(
e
.
getTargetException
());
}
catch
(
InterruptedException
e
)
{
// ignore
}
return
closer
.
getResult
();
}
private
static
class
TransactionCloser
extends
DBRRunnableWithResult
<
Boolean
>
{
@Override
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
result
=
true
;
DBeaverCore
core
=
DBeaverCore
.
getInstance
();
for
(
IProject
project
:
core
.
getLiveProjects
())
{
if
(
project
.
isOpen
())
{
DataSourceRegistry
registry
=
core
.
getProjectRegistry
().
getDataSourceRegistry
(
project
);
if
(
registry
!=
null
)
{
for
(
DataSourceDescriptor
dataSourceDescriptor
:
registry
.
getDataSources
())
{
if
(!
DataSourceHandler
.
checkAndCloseActiveTransaction
(
monitor
,
dataSourceDescriptor
))
{
result
=
false
;
return
;
}
DBeaverCore
core
=
DBeaverCore
.
getInstance
();
for
(
IProject
project
:
core
.
getLiveProjects
())
{
if
(
project
.
isOpen
())
{
DataSourceRegistry
registry
=
core
.
getProjectRegistry
().
getDataSourceRegistry
(
project
);
if
(
registry
!=
null
)
{
for
(
DataSourceDescriptor
dataSourceDescriptor
:
registry
.
getDataSources
())
{
if
(!
DataSourceHandler
.
checkAndCloseActiveTransaction
(
dataSourceDescriptor
))
{
return
false
;
}
}
}
}
}
return
true
;
}
}
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
浏览文件 @
2beb8287
...
...
@@ -14,7 +14,7 @@ Export-Package: org.jkiss.dbeaver,
org.jkiss.dbeaver.registry.transfer,
org.jkiss.dbeaver.registry.updater,
org.jkiss.dbeaver.runtime,
org.jkiss.dbeaver.
runtime
.exec,
org.jkiss.dbeaver.
ui.dialogs
.exec,
org.jkiss.dbeaver.runtime.jobs,
org.jkiss.dbeaver.runtime.load,
org.jkiss.dbeaver.runtime.load.jobs,
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java
浏览文件 @
2beb8287
...
...
@@ -27,19 +27,15 @@ import org.eclipse.jface.operation.IRunnableWithProgress;
import
org.eclipse.jface.text.source.ISharedTextColors
;
import
org.eclipse.swt.widgets.Display
;
import
org.eclipse.swt.widgets.Shell
;
import
org.eclipse.ui.IWorkbench
;
import
org.eclipse.ui.IWorkbenchWindow
;
import
org.eclipse.ui.PlatformUI
;
import
org.eclipse.ui.*
;
import
org.eclipse.ui.services.IDisposable
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.DBeaverPreferences
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.access.DBAAuthInfo
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.*
;
import
org.jkiss.dbeaver.runtime.RunnableContextDelegate
;
import
org.jkiss.dbeaver.runtime.RunnableWithResult
;
import
org.jkiss.dbeaver.runtime.RuntimeUtils
;
...
...
@@ -50,6 +46,8 @@ import org.jkiss.dbeaver.ui.SharedTextColors;
import
org.jkiss.dbeaver.ui.TrayIconHandler
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.connection.BaseAuthDialog
;
import
org.jkiss.dbeaver.ui.views.process.ProcessPropertyTester
;
import
org.jkiss.dbeaver.ui.views.process.ShellProcessView
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
java.lang.reflect.InvocationTargetException
;
...
...
@@ -282,6 +280,11 @@ public class DBeaverUI implements DBUICallback {
UIUtils
.
showErrorDialog
(
null
,
title
,
message
,
status
);
}
@Override
public
void
showError
(
@NotNull
String
title
,
@Nullable
String
message
,
@NotNull
Throwable
e
)
{
UIUtils
.
showErrorDialog
(
null
,
title
,
message
,
e
);
}
@Override
public
DBAAuthInfo
promptUserCredentials
(
String
prompt
,
String
userName
,
String
userPassword
)
{
// Ask user
...
...
@@ -303,4 +306,44 @@ public class DBeaverUI implements DBUICallback {
return
null
;
}
}
@Override
public
void
executeProcess
(
final
DBRProcessDescriptor
processDescriptor
)
{
processDescriptor
.
setProcessListener
(
new
DBRProcessListener
()
{
@Override
public
void
onProcessStarted
()
{
ProcessPropertyTester
.
firePropertyChange
(
ProcessPropertyTester
.
PROP_RUNNING
);
}
@Override
public
void
onProcessTerminated
(
int
resultCode
)
{
ProcessPropertyTester
.
firePropertyChange
(
ProcessPropertyTester
.
PROP_RUNNING
);
}
});
// Direct execute
try
{
processDescriptor
.
execute
();
}
catch
(
DBException
e
)
{
showError
(
"Execute process"
,
processDescriptor
.
getName
(),
e
);
}
if
(
processDescriptor
.
getCommand
().
isShowProcessPanel
())
{
getActiveWorkbenchShell
().
getDisplay
().
asyncExec
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
final
ShellProcessView
processView
=
(
ShellProcessView
)
DBeaverUI
.
getActiveWorkbenchWindow
().
getActivePage
().
showView
(
ShellProcessView
.
VIEW_ID
,
ShellProcessView
.
getNextId
(),
IWorkbenchPage
.
VIEW_VISIBLE
);
processView
.
initProcess
(
processDescriptor
);
}
catch
(
PartInitException
e
)
{
log
.
error
(
e
);
}
}
});
}
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/DisconnectJob.java
浏览文件 @
2beb8287
...
...
@@ -20,14 +20,10 @@ package org.jkiss.dbeaver.runtime.jobs;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.osgi.util.NLS
;
import
org.eclipse.ui.ISaveablePart
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.model.DBPConnectionEventType
;
import
org.jkiss.dbeaver.model.DBPDataSourceUser
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
/**
...
...
@@ -52,21 +48,11 @@ public class DisconnectJob extends EventProcessorJob
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
// Save users
for
(
DBPDataSourceUser
user
:
container
.
getUsers
())
{
if
(
user
instanceof
ISaveablePart
)
{
if
(!
UIUtils
.
validateAndSave
(
monitor
,
(
ISaveablePart
)
user
))
{
return
(
connectStatus
=
Status
.
OK_STATUS
);
}
}
}
try
{
if
(
DataSourceHandler
.
checkAndCloseActiveTransaction
(
monitor
,
container
))
{
processEvents
(
DBPConnectionEventType
.
BEFORE_DISCONNECT
);
container
.
disconnect
(
monitor
);
processEvents
(
DBPConnectionEventType
.
AFTER_DISCONNECT
);
}
processEvents
(
DBPConnectionEventType
.
BEFORE_DISCONNECT
);
container
.
disconnect
(
monitor
);
processEvents
(
DBPConnectionEventType
.
AFTER_DISCONNECT
);
connectStatus
=
Status
.
OK_STATUS
;
}
catch
(
Throwable
ex
)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/EventProcessorJob.java
浏览文件 @
2beb8287
...
...
@@ -18,22 +18,14 @@
package
org.jkiss.dbeaver.runtime.jobs
;
import
org.eclipse.swt.widgets.Shell
;
import
org.eclipse.ui.IWorkbenchPage
;
import
org.eclipse.ui.PartInitException
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBPConnectionEventType
;
import
org.jkiss.dbeaver.model.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.DBPConnectionEventType
;
import
org.jkiss.dbeaver.model.runtime.DBRProcessDescriptor
;
import
org.jkiss.dbeaver.model.runtime.DBRProcessListener
;
import
org.jkiss.dbeaver.model.runtime.DBRShellCommand
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.runtime.AbstractJob
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.views.process.ProcessPropertyTester
;
import
org.jkiss.dbeaver.ui.views.process.ShellProcessView
;
import
org.jkiss.dbeaver.runtime.ui.DBUserInterface
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.HashMap
;
...
...
@@ -79,56 +71,14 @@ public abstract class EventProcessorJob extends AbstractJob {
variables
.
put
(
VARIABLE_PASSWORD
,
info
.
getUserPassword
());
variables
.
put
(
VARIABLE_URL
,
info
.
getUrl
());
DBRProcessDescriptor
process
=
processCommand
(
command
,
variables
);
if
(
process
!=
null
)
{
container
.
addChildProcess
(
process
);
final
DBRProcessDescriptor
processDescriptor
=
new
DBRProcessDescriptor
(
command
,
variables
);
DBUserInterface
.
getInstance
().
executeProcess
(
processDescriptor
);
if
(
command
.
isWaitProcessFinish
())
{
processDescriptor
.
waitFor
();
}
}
}
private
DBRProcessDescriptor
processCommand
(
DBRShellCommand
command
,
Map
<
String
,
Object
>
variables
)
{
final
Shell
shell
=
DBeaverUI
.
getActiveWorkbenchShell
();
final
DBRProcessDescriptor
processDescriptor
=
new
DBRProcessDescriptor
(
command
,
variables
);
processDescriptor
.
setProcessListener
(
new
DBRProcessListener
()
{
@Override
public
void
onProcessStarted
()
{
ProcessPropertyTester
.
firePropertyChange
(
ProcessPropertyTester
.
PROP_RUNNING
);
}
@Override
public
void
onProcessTerminated
(
int
resultCode
)
{
ProcessPropertyTester
.
firePropertyChange
(
ProcessPropertyTester
.
PROP_RUNNING
);
}
});
// Direct execute
try
{
processDescriptor
.
execute
();
}
catch
(
DBException
e
)
{
UIUtils
.
showErrorDialog
(
shell
,
"Execute process"
,
processDescriptor
.
getName
(),
e
);
}
if
(
command
.
isShowProcessPanel
())
{
shell
.
getDisplay
().
asyncExec
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
final
ShellProcessView
processView
=
(
ShellProcessView
)
DBeaverUI
.
getActiveWorkbenchWindow
().
getActivePage
().
showView
(
ShellProcessView
.
VIEW_ID
,
ShellProcessView
.
getNextId
(),
IWorkbenchPage
.
VIEW_VISIBLE
);
processView
.
initProcess
(
processDescriptor
);
}
catch
(
PartInitException
e
)
{
log
.
error
(
e
);
}
}
});
}
if
(
command
.
isWaitProcessFinish
())
{
processDescriptor
.
waitFor
();
container
.
addChildProcess
(
processDescriptor
);
}
return
processDescriptor
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
浏览文件 @
2beb8287
...
...
@@ -24,7 +24,6 @@ import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
浏览文件 @
2beb8287
...
...
@@ -37,7 +37,7 @@ import org.jkiss.dbeaver.model.sql.SQLQuery;
import
org.jkiss.dbeaver.model.sql.SQLQueryParameter
;
import
org.jkiss.dbeaver.model.sql.SQLQueryResult
;
import
org.jkiss.dbeaver.runtime.RunnableWithResult
;
import
org.jkiss.dbeaver.
runtime
.exec.ExecutionQueueErrorJob
;
import
org.jkiss.dbeaver.
ui.dialogs
.exec.ExecutionQueueErrorJob
;
import
org.jkiss.dbeaver.runtime.jobs.DataSourceJob
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIIcon
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/ui/DBUICallback.java
浏览文件 @
2beb8287
...
...
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IStatus;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.access.DBAAuthInfo
;
import
org.jkiss.dbeaver.model.runtime.DBRProcessDescriptor
;
/**
* User interface interactions
...
...
@@ -29,7 +30,10 @@ import org.jkiss.dbeaver.model.access.DBAAuthInfo;
public
interface
DBUICallback
{
void
showError
(
@NotNull
final
String
title
,
@Nullable
final
String
message
,
@NotNull
final
IStatus
status
);
void
showError
(
@NotNull
final
String
title
,
@Nullable
final
String
message
,
@NotNull
final
Throwable
e
);
DBAAuthInfo
promptUserCredentials
(
String
prompt
,
String
userName
,
String
userPassword
);
void
executeProcess
(
DBRProcessDescriptor
processDescriptor
);
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/ui/DBUserInterface.java
浏览文件 @
2beb8287
...
...
@@ -21,7 +21,9 @@ package org.jkiss.dbeaver.runtime.ui;
import
org.eclipse.core.runtime.IStatus
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.access.DBAAuthInfo
;
import
org.jkiss.dbeaver.model.runtime.DBRProcessDescriptor
;
/**
* User interface interactions
...
...
@@ -35,6 +37,12 @@ public class DBUserInterface {
printStatus
(
status
,
0
);
}
@Override
public
void
showError
(
@NotNull
String
title
,
@Nullable
String
message
,
@NotNull
Throwable
e
)
{
System
.
out
.
println
(
title
+
(
message
==
null
?
""
:
": "
+
message
));
e
.
printStackTrace
(
System
.
out
);
}
private
void
printStatus
(
@NotNull
IStatus
status
,
int
level
)
{
char
[]
indent
=
new
char
[
level
*
4
];
for
(
int
i
=
0
;
i
<
indent
.
length
;
i
++)
indent
[
i
]
=
' '
;
...
...
@@ -50,6 +58,15 @@ public class DBUserInterface {
public
DBAAuthInfo
promptUserCredentials
(
String
prompt
,
String
userName
,
String
userPassword
)
{
return
null
;
}
@Override
public
void
executeProcess
(
DBRProcessDescriptor
processDescriptor
)
{
try
{
processDescriptor
.
execute
();
}
catch
(
DBException
e
)
{
DBUserInterface
.
getInstance
().
showError
(
"Execute process"
,
processDescriptor
.
getName
(),
e
);
}
}
};
public
static
DBUICallback
getInstance
()
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferConsumer.java
浏览文件 @
2beb8287
...
...
@@ -30,7 +30,7 @@ import org.jkiss.dbeaver.model.sql.SQLDataSource;
import
org.jkiss.dbeaver.model.struct.*
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSCatalog
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSSchema
;
import
org.jkiss.dbeaver.
runtime
.exec.ExecutionQueueErrorJob
;
import
org.jkiss.dbeaver.
ui.dialogs
.exec.ExecutionQueueErrorJob
;
import
org.jkiss.dbeaver.tools.transfer.IDataTransferConsumer
;
import
org.jkiss.dbeaver.tools.transfer.IDataTransferProcessor
;
import
org.jkiss.dbeaver.ui.UIUtils
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java
浏览文件 @
2beb8287
...
...
@@ -32,6 +32,7 @@ import org.jkiss.dbeaver.DBeaverPreferences;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBPDataSourceUser
;
import
org.jkiss.dbeaver.model.DBPEvent
;
...
...
@@ -46,6 +47,7 @@ import org.jkiss.dbeaver.model.qm.meta.QMMTransactionSavepointInfo;
import
org.jkiss.dbeaver.model.runtime.DBRProgressListener
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSDataSourceContainer
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.runtime.RuntimeUtils
;
...
...
@@ -203,6 +205,19 @@ public class DataSourceHandler
}
public
static
void
disconnectDataSource
(
DBSDataSourceContainer
dataSourceContainer
,
@Nullable
final
Runnable
onFinish
)
{
// Save users
for
(
DBPDataSourceUser
user
:
dataSourceContainer
.
getUsers
())
{
if
(
user
instanceof
ISaveablePart
)
{
if
(!
UIUtils
.
validateAndSave
(
VoidProgressMonitor
.
INSTANCE
,
(
ISaveablePart
)
user
))
{
return
;
}
}
}
if
(!
checkAndCloseActiveTransaction
(
dataSourceContainer
))
{
return
;
}
if
(
dataSourceContainer
instanceof
DataSourceDescriptor
&&
dataSourceContainer
.
isConnected
())
{
final
DataSourceDescriptor
dataSourceDescriptor
=
(
DataSourceDescriptor
)
dataSourceContainer
;
if
(!
ArrayUtils
.
isEmpty
(
Job
.
getJobManager
().
find
(
dataSourceDescriptor
)))
{
...
...
@@ -230,23 +245,23 @@ public class DataSourceHandler
}
}
public
static
boolean
checkAndCloseActiveTransaction
(
final
DBRProgressMonitor
monitor
,
DBSDataSourceContainer
container
)
{
public
static
boolean
checkAndCloseActiveTransaction
(
DBSDataSourceContainer
container
)
{
DBPDataSource
dataSource
=
container
.
getDataSource
();
if
(
dataSource
==
null
)
{
return
true
;
}
return
checkAndCloseActiveTransaction
(
monitor
,
container
,
dataSource
.
getAllContexts
());
return
checkAndCloseActiveTransaction
(
container
,
dataSource
.
getAllContexts
());
}
public
static
boolean
checkAndCloseActiveTransaction
(
final
DBRProgressMonitor
monitor
,
DBSDataSourceContainer
container
,
Collection
<?
extends
DBCExecutionContext
>
contexts
)
public
static
boolean
checkAndCloseActiveTransaction
(
DBSDataSourceContainer
container
,
Collection
<?
extends
DBCExecutionContext
>
contexts
)
{
if
(
container
.
getDataSource
()
==
null
)
{
return
true
;
}
Boolean
commitTxn
=
null
;
for
(
DBCExecutionContext
context
:
contexts
)
{
for
(
final
DBCExecutionContext
context
:
contexts
)
{
// First rollback active transaction
try
{
if
(
isContextTransactionAffected
(
context
))
{
...
...
@@ -265,12 +280,16 @@ public class DataSourceHandler
return
false
;
}
}
closeActiveTransaction
(
monitor
,
context
,
commitTxn
);
final
boolean
commit
=
commitTxn
;
DBeaverUI
.
runInProgressService
(
new
DBRRunnableWithProgress
()
{
@Override
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
closeActiveTransaction
(
monitor
,
context
,
commit
);
}
});
}
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Can't rollback active transaction before disconnect"
,
e
);
}
finally
{
monitor
.
worked
(
1
);
}
}
return
true
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
runtime
/exec/ExecutionQueueErrorDialog.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
ui/dialogs
/exec/ExecutionQueueErrorDialog.java
浏览文件 @
2beb8287
...
...
@@ -15,7 +15,7 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package
org.jkiss.dbeaver.
runtime
.exec
;
package
org.jkiss.dbeaver.
ui.dialogs
.exec
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.jface.dialogs.ErrorDialog
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
runtime
/exec/ExecutionQueueErrorJob.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
ui/dialogs
/exec/ExecutionQueueErrorJob.java
浏览文件 @
2beb8287
...
...
@@ -15,7 +15,7 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package
org.jkiss.dbeaver.
runtime
.exec
;
package
org.jkiss.dbeaver.
ui.dialogs
.exec
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
runtime
/exec/ExecutionQueueErrorResponse.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/
ui/dialogs
/exec/ExecutionQueueErrorResponse.java
浏览文件 @
2beb8287
...
...
@@ -16,7 +16,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package
org.jkiss.dbeaver.
runtime
.exec
;
package
org.jkiss.dbeaver.
ui.dialogs
.exec
;
/**
* ExecutionQueueErrorResponse
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录