Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
c2f3283a
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c2f3283a
编写于
8月 17, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SQLEditor connection open in detached job
上级
4949027d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
92 addition
and
4 deletion
+92
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
....core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+50
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
...e/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
+3
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/NavigatorUtils.java
...re/src/org/jkiss/dbeaver/ui/navigator/NavigatorUtils.java
+1
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
...src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
+18
-2
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceInfo.java
...org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceInfo.java
+20
-1
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
c2f3283a
...
@@ -22,7 +22,10 @@ import org.eclipse.core.resources.IProject;
...
@@ -22,7 +22,10 @@ import org.eclipse.core.resources.IProject;
import
org.eclipse.core.runtime.CoreException
;
import
org.eclipse.core.runtime.CoreException
;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.core.runtime.jobs.IJobChangeEvent
;
import
org.eclipse.core.runtime.jobs.Job
;
import
org.eclipse.core.runtime.jobs.Job
;
import
org.eclipse.core.runtime.jobs.JobChangeAdapter
;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.IMenuListener
;
import
org.eclipse.jface.action.IMenuListener
;
import
org.eclipse.jface.action.IMenuManager
;
import
org.eclipse.jface.action.IMenuManager
;
...
@@ -64,6 +67,7 @@ import org.jkiss.dbeaver.model.struct.DBSDataContainer;
...
@@ -64,6 +67,7 @@ import org.jkiss.dbeaver.model.struct.DBSDataContainer;
import
org.jkiss.dbeaver.model.struct.DBSDataSourceContainer
;
import
org.jkiss.dbeaver.model.struct.DBSDataSourceContainer
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.registry.DataSourceRegistry
;
import
org.jkiss.dbeaver.registry.DataSourceRegistry
;
import
org.jkiss.dbeaver.runtime.AbstractJob
;
import
org.jkiss.dbeaver.runtime.DefaultProgressMonitor
;
import
org.jkiss.dbeaver.runtime.DefaultProgressMonitor
;
import
org.jkiss.dbeaver.runtime.sql.SQLQueryJob
;
import
org.jkiss.dbeaver.runtime.sql.SQLQueryJob
;
import
org.jkiss.dbeaver.runtime.sql.SQLQueryListener
;
import
org.jkiss.dbeaver.runtime.sql.SQLQueryListener
;
...
@@ -234,6 +238,25 @@ public class SQLEditor extends SQLEditorBase implements
...
@@ -234,6 +238,25 @@ public class SQLEditor extends SQLEditorBase implements
releaseExecutionContext
();
releaseExecutionContext
();
curDataSource
=
dataSource
;
curDataSource
=
dataSource
;
if
(
getActivePreferenceStore
().
getBoolean
(
DBeaverPreferences
.
EDITOR_SEPARATE_CONNECTION
))
{
if
(
getActivePreferenceStore
().
getBoolean
(
DBeaverPreferences
.
EDITOR_SEPARATE_CONNECTION
))
{
final
OpenContextJob
job
=
new
OpenContextJob
(
dataSource
);
job
.
addJobChangeListener
(
new
JobChangeAdapter
()
{
@Override
public
void
done
(
IJobChangeEvent
event
)
{
if
(
job
.
error
!=
null
)
{
releaseExecutionContext
();
UIUtils
.
showErrorDialog
(
getSite
().
getShell
(),
"Open context"
,
"Can't open editor connection"
,
job
.
error
);
}
else
{
UIUtils
.
runInUI
(
null
,
new
Runnable
()
{
@Override
public
void
run
()
{
onDataSourceChange
();
}
});
}
}
});
job
.
schedule
();
/*
try {
try {
DBeaverUI.runInProgressDialog(new DBRRunnableWithProgress() {
DBeaverUI.runInProgressDialog(new DBRRunnableWithProgress() {
@Override
@Override
...
@@ -255,6 +278,7 @@ public class SQLEditor extends SQLEditorBase implements
...
@@ -255,6 +278,7 @@ public class SQLEditor extends SQLEditorBase implements
releaseExecutionContext();
releaseExecutionContext();
UIUtils.showErrorDialog(getSite().getShell(), "Open context", "Can't open editor connection", e);
UIUtils.showErrorDialog(getSite().getShell(), "Open context", "Can't open editor connection", e);
}
}
*/
}
else
{
}
else
{
executionContext
=
dataSource
.
getDefaultContext
(
false
);
executionContext
=
dataSource
.
getDefaultContext
(
false
);
}
}
...
@@ -262,6 +286,32 @@ public class SQLEditor extends SQLEditorBase implements
...
@@ -262,6 +286,32 @@ public class SQLEditor extends SQLEditorBase implements
}
}
}
}
private
class
OpenContextJob
extends
AbstractJob
{
private
final
DBPDataSource
dataSource
;
private
Throwable
error
;
protected
OpenContextJob
(
DBPDataSource
dataSource
)
{
super
(
"Open connection to "
+
dataSource
.
getContainer
().
getName
());
this
.
dataSource
=
dataSource
;
}
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
monitor
.
beginTask
(
"Open SQLEditor isolated connection"
,
1
);
try
{
String
title
=
"SQLEditor <"
+
getEditorInput
().
getPath
().
removeFileExtension
().
lastSegment
()
+
">"
;
monitor
.
subTask
(
"Open context "
+
title
);
executionContext
=
dataSource
.
openIsolatedContext
(
monitor
,
title
);
}
catch
(
DBException
e
)
{
error
=
e
;
return
Status
.
OK_STATUS
;
}
finally
{
monitor
.
done
();
}
ownContext
=
true
;
return
Status
.
OK_STATUS
;
}
}
private
void
releaseExecutionContext
()
{
private
void
releaseExecutionContext
()
{
if
(
ownContext
&&
executionContext
!=
null
)
{
if
(
ownContext
&&
executionContext
!=
null
)
{
executionContext
.
close
();
executionContext
.
close
();
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
浏览文件 @
c2f3283a
...
@@ -698,6 +698,9 @@ public abstract class SQLEditorBase extends BaseTextEditor {
...
@@ -698,6 +698,9 @@ public abstract class SQLEditorBase extends BaseTextEditor {
DBPDataSource
dataSource
=
context
==
null
?
null
:
context
.
getDataSource
();
DBPDataSource
dataSource
=
context
==
null
?
null
:
context
.
getDataSource
();
if
(
dataSource
instanceof
SQLDataSource
)
{
if
(
dataSource
instanceof
SQLDataSource
)
{
final
SQLDialect
dialect
=
((
SQLDataSource
)
dataSource
).
getSQLDialect
();
final
SQLDialect
dialect
=
((
SQLDataSource
)
dataSource
).
getSQLDialect
();
if
(
dialect
==
null
)
{
return
null
;
}
return
new
ICommentsSupport
()
{
return
new
ICommentsSupport
()
{
@Nullable
@Nullable
@Override
@Override
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/NavigatorUtils.java
浏览文件 @
c2f3283a
...
@@ -427,7 +427,7 @@ public class NavigatorUtils {
...
@@ -427,7 +427,7 @@ public class NavigatorUtils {
}
}
public
static
void
setNavigatorContext
(
IWorkbenchPartSite
site
)
{
public
static
void
setNavigatorContext
(
IWorkbenchPartSite
site
)
{
IContextService
contextService
=
site
.
getService
(
IContextService
.
class
);
IContextService
contextService
=
(
IContextService
)
site
.
getService
(
IContextService
.
class
);
if
(
contextService
!=
null
)
{
if
(
contextService
!=
null
)
{
contextService
.
activateContext
(
NAVIGATOR_CONTEXT_ID
);
contextService
.
activateContext
(
NAVIGATOR_CONTEXT_ID
);
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
浏览文件 @
c2f3283a
...
@@ -26,6 +26,7 @@ import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
...
@@ -26,6 +26,7 @@ import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import
org.jkiss.dbeaver.model.data.DBDPreferences
;
import
org.jkiss.dbeaver.model.data.DBDPreferences
;
import
org.jkiss.dbeaver.model.data.DBDValueHandler
;
import
org.jkiss.dbeaver.model.data.DBDValueHandler
;
import
org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCObjectValueHandler
;
import
org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCObjectValueHandler
;
import
org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect
;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.*
;
import
org.jkiss.dbeaver.model.*
;
...
@@ -279,13 +280,28 @@ public abstract class JDBCDataSource
...
@@ -279,13 +280,28 @@ public abstract class JDBCDataSource
JDBCSession
session
=
getDefaultContext
(
true
).
openSession
(
monitor
,
DBCExecutionPurpose
.
META
,
ModelMessages
.
model_jdbc_read_database_meta_data
);
JDBCSession
session
=
getDefaultContext
(
true
).
openSession
(
monitor
,
DBCExecutionPurpose
.
META
,
ModelMessages
.
model_jdbc_read_database_meta_data
);
try
{
try
{
JDBCDatabaseMetaData
metaData
=
session
.
getMetaData
();
JDBCDatabaseMetaData
metaData
=
session
.
getMetaData
();
sqlDialect
=
createSQLDialect
(
metaData
);
try
{
dataSourceInfo
=
createDataSourceInfo
(
metaData
);
sqlDialect
=
createSQLDialect
(
metaData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Error creating SQL dialect"
,
e
);
}
try
{
dataSourceInfo
=
createDataSourceInfo
(
metaData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Error obtaining database info"
);
}
}
catch
(
SQLException
ex
)
{
}
catch
(
SQLException
ex
)
{
throw
new
DBException
(
"Error getting JDBC meta data"
,
ex
,
this
);
throw
new
DBException
(
"Error getting JDBC meta data"
,
ex
,
this
);
}
}
finally
{
finally
{
session
.
close
();
session
.
close
();
if
(
sqlDialect
==
null
)
{
sqlDialect
=
new
BasicSQLDialect
();
}
if
(
dataSourceInfo
==
null
)
{
dataSourceInfo
=
new
JDBCDataSourceInfo
(
null
);
}
}
}
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceInfo.java
浏览文件 @
c2f3283a
...
@@ -18,10 +18,10 @@
...
@@ -18,10 +18,10 @@
package
org.jkiss.dbeaver.model.impl.jdbc
;
package
org.jkiss.dbeaver.model.impl.jdbc
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.dbeaver.model.DBPDataSourceInfo
;
import
org.jkiss.dbeaver.model.DBPDataSourceInfo
;
import
org.jkiss.dbeaver.model.DBPTransactionIsolation
;
import
org.jkiss.dbeaver.model.DBPTransactionIsolation
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData
;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.utils.CommonUtils
;
import
org.jkiss.utils.CommonUtils
;
import
org.osgi.framework.Version
;
import
org.osgi.framework.Version
;
...
@@ -59,6 +59,25 @@ public class JDBCDataSourceInfo implements DBPDataSourceInfo
...
@@ -59,6 +59,25 @@ public class JDBCDataSourceInfo implements DBPDataSourceInfo
private
boolean
supportsBatchUpdates
=
false
;
private
boolean
supportsBatchUpdates
=
false
;
private
boolean
supportsScroll
;
private
boolean
supportsScroll
;
public
JDBCDataSourceInfo
()
{
this
.
readOnly
=
false
;
this
.
databaseProductName
=
"?"
;
//$NON-NLS-1$
this
.
databaseProductVersion
=
"?"
;
//$NON-NLS-1$
this
.
driverName
=
"?"
;
//$NON-NLS-1$
this
.
driverVersion
=
"?"
;
//$NON-NLS-1$
databaseVersion
=
new
Version
(
0
,
0
,
0
);
this
.
schemaTerm
=
TERM_SCHEMA
;
this
.
procedureTerm
=
TERM_PROCEDURE
;
this
.
catalogTerm
=
TERM_CATALOG
;
supportsBatchUpdates
=
false
;
supportsTransactions
=
false
;
supportedIsolations
=
new
ArrayList
<
DBPTransactionIsolation
>();
supportedIsolations
.
add
(
0
,
JDBCTransactionIsolation
.
NONE
);
supportsScroll
=
true
;
}
public
JDBCDataSourceInfo
(
JDBCDatabaseMetaData
metaData
)
public
JDBCDataSourceInfo
(
JDBCDatabaseMetaData
metaData
)
{
{
try
{
try
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录