Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
50860520
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,发现更多精彩内容 >>
未验证
提交
50860520
编写于
1月 06, 2018
作者:
A
Alexander Fedorov
提交者:
GitHub
1月 06, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2745 from dbeaver/2556-postgre-steps
2556 postgre steps
上级
c35ec0a0
0ff51306
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
335 addition
and
459 deletion
+335
-459
plugins/org.jkiss.dbeaver.debug.core/META-INF/MANIFEST.MF
plugins/org.jkiss.dbeaver.debug.core/META-INF/MANIFEST.MF
+1
-3
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/DBGBaseController.java
...g.core/src/org/jkiss/dbeaver/debug/DBGBaseController.java
+6
-9
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/DBGController.java
...debug.core/src/org/jkiss/dbeaver/debug/DBGController.java
+7
-11
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/DatabaseLaunchDelegate.java
.../org/jkiss/dbeaver/debug/core/DatabaseLaunchDelegate.java
+6
-7
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/DebugCore.java
...ebug.core/src/org/jkiss/dbeaver/debug/core/DebugCore.java
+4
-34
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/model/DatabaseDebugTarget.java
...g/jkiss/dbeaver/debug/core/model/DatabaseDebugTarget.java
+31
-5
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/internal/core/ProcedureDebugControllerRegistry.java
...debug/internal/core/ProcedureDebugControllerRegistry.java
+1
-1
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/DBRResult.java
...r.debug.core/src/org/jkiss/dbeaver/runtime/DBRResult.java
+0
-24
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/DefaultResult.java
...bug.core/src/org/jkiss/dbeaver/runtime/DefaultResult.java
+0
-63
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/core/RuntimeCore.java
....core/src/org/jkiss/dbeaver/runtime/core/RuntimeCore.java
+0
-32
plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DebugUI.java
...aver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DebugUI.java
+1
-2
plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java
...t/postgresql/debug/internal/impl/PostgreDebugSession.java
+15
-20
plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSessionWorker.java
...gresql/debug/internal/impl/PostgreDebugSessionWorker.java
+7
-15
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/Log.java
...ns/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/Log.java
+256
-233
未找到文件。
plugins/org.jkiss.dbeaver.debug.core/META-INF/MANIFEST.MF
浏览文件 @
50860520
...
...
@@ -12,8 +12,6 @@ Require-Bundle: org.eclipse.core.runtime,
Export-Package: org.jkiss.dbeaver.debug,
org.jkiss.dbeaver.debug.core,
org.jkiss.dbeaver.debug.core.breakpoints,
org.jkiss.dbeaver.debug.core.model,
org.jkiss.dbeaver.runtime,
org.jkiss.dbeaver.runtime.core
org.jkiss.dbeaver.debug.core.model
Bundle-Activator: org.jkiss.dbeaver.debug.internal.core.DebugCoreActivator
Bundle-ActivationPolicy: lazy
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/DBGBaseController.java
浏览文件 @
50860520
...
...
@@ -29,8 +29,6 @@ import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import
org.jkiss.dbeaver.model.exec.DBCSession
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
import
org.jkiss.dbeaver.runtime.DefaultResult
;
public
class
DBGBaseController
implements
DBGController
{
...
...
@@ -50,7 +48,7 @@ public class DBGBaseController implements DBGController {
}
@Override
public
DBRResult
connect
(
DBRProgressMonitor
monitor
)
{
public
void
connect
(
DBRProgressMonitor
monitor
)
throws
DBGException
{
DBPDataSource
dataSource
=
dataSourceDescriptor
.
getDataSource
();
if
(!
dataSourceDescriptor
.
isConnected
())
{
...
...
@@ -60,7 +58,7 @@ public class DBGBaseController implements DBGController {
}
catch
(
DBException
e
)
{
String
message
=
NLS
.
bind
(
DebugMessages
.
DatabaseDebugController_e_connecting_datasource
,
dataSourceDescriptor
);
log
.
error
(
message
,
e
);
return
DefaultResult
.
error
(
message
,
e
);
throw
new
DBGException
(
message
,
e
);
}
}
try
{
...
...
@@ -70,9 +68,8 @@ public class DBGBaseController implements DBGController {
}
catch
(
DBException
e
)
{
String
message
=
NLS
.
bind
(
DebugMessages
.
DatabaseDebugController_e_opening_debug_context
,
dataSourceDescriptor
);
log
.
error
(
message
,
e
);
return
DefaultResult
.
error
(
message
,
e
);
throw
new
DBGException
(
message
,
e
);
}
return
DefaultResult
.
ok
();
}
protected
void
afterSessionOpen
(
DBCSession
session
)
{
...
...
@@ -84,19 +81,19 @@ public class DBGBaseController implements DBGController {
}
@Override
public
void
resume
()
{
public
void
resume
()
throws
DBGException
{
// TODO Auto-generated method stub
}
@Override
public
void
suspend
()
{
public
void
suspend
()
throws
DBGException
{
// TODO Auto-generated method stub
}
@Override
public
void
terminate
()
{
public
void
terminate
()
throws
DBGException
{
beforeSessionClose
(
this
.
debugSession
);
if
(
this
.
debugSession
!=
null
)
{
this
.
debugSession
.
close
();
...
...
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/DBGController.java
浏览文件 @
50860520
...
...
@@ -21,26 +21,22 @@ import java.util.Map;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
//FIXME:AF: we need "operation result" interface like IStatus to express the result of operation
//FIXME:AF: so let's return void for now and let's throw an exception for any issue (poor practice)
/**
* This interface is expected to be used in synch manner
*/
public
interface
DBGController
{
void
init
(
DataSourceDescriptor
dataSourceDescriptor
,
String
databaseName
,
Map
<
String
,
Object
>
attributes
);
public
DBRResult
connect
(
DBRProgressMonitor
monitor
);
void
connect
(
DBRProgressMonitor
monitor
)
throws
DBGException
;
void
resume
()
throws
DBGException
;
void
resume
()
;
void
suspend
()
throws
DBGException
;
void
suspend
()
;
void
terminate
()
throws
DBGException
;
void
terminate
();
void
dispose
();
void
dispose
()
throws
DBGException
;
}
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/DatabaseLaunchDelegate.java
浏览文件 @
50860520
...
...
@@ -22,19 +22,17 @@ import java.util.Map;
import
org.eclipse.core.runtime.CoreException
;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.debug.core.ILaunch
;
import
org.eclipse.debug.core.ILaunchConfiguration
;
import
org.eclipse.debug.core.model.LaunchConfigurationDelegate
;
import
org.eclipse.osgi.util.NLS
;
import
org.jkiss.dbeaver.debug.DBGController
;
import
org.jkiss.dbeaver.debug.DBGException
;
import
org.jkiss.dbeaver.debug.core.model.DatabaseDebugTarget
;
import
org.jkiss.dbeaver.debug.core.model.DatabaseProcess
;
import
org.jkiss.dbeaver.model.runtime.DefaultProgressMonitor
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceRegistry
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
import
org.jkiss.dbeaver.runtime.core.RuntimeCore
;
public
abstract
class
DatabaseLaunchDelegate
<
C
extends
DBGController
>
extends
LaunchConfigurationDelegate
{
...
...
@@ -54,10 +52,11 @@ public abstract class DatabaseLaunchDelegate<C extends DBGController> extends La
DatabaseDebugTarget
<
C
>
target
=
createDebugTarget
(
launch
,
controller
,
process
);
launch
.
addDebugTarget
(
target
);
DefaultProgressMonitor
progress
=
new
DefaultProgressMonitor
(
monitor
);
DBRResult
connectResult
=
controller
.
connect
(
progress
);
IStatus
status
=
RuntimeCore
.
toStatus
(
connectResult
);
if
(!
status
.
isOK
())
{
throw
new
CoreException
(
status
);
try
{
controller
.
connect
(
progress
);
}
catch
(
DBGException
e
)
{
String
message
=
NLS
.
bind
(
"Unable to connect to {0}"
,
datasourceDescriptor
.
getName
());
throw
new
CoreException
(
DebugCore
.
newErrorStatus
(
message
));
}
}
...
...
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/DebugCore.java
浏览文件 @
50860520
...
...
@@ -63,6 +63,10 @@ public class DebugCore {
private
static
Log
log
=
Log
.
getLog
(
DebugCore
.
class
);
public
static
void
log
(
IStatus
status
)
{
Log
.
log
(
log
,
status
);
}
public
static
CoreException
abort
(
String
message
,
Throwable
th
)
{
return
new
CoreException
(
newErrorStatus
(
message
,
th
));
}
...
...
@@ -124,40 +128,6 @@ public class DebugCore {
}
}
// FIXME: AF: move to org.jkiss.dbeaver.Log
public
static
void
log
(
Log
delegate
,
IStatus
status
)
{
if
(
delegate
==
null
)
{
// no way to log
return
;
}
if
(
status
==
null
)
{
// nothing to log
return
;
}
int
severity
=
status
.
getSeverity
();
String
message
=
status
.
getMessage
();
Throwable
exception
=
status
.
getException
();
switch
(
severity
)
{
case
IStatus
.
CANCEL
:
delegate
.
debug
(
message
,
exception
);
break
;
case
IStatus
.
ERROR
:
delegate
.
error
(
message
,
exception
);
break
;
case
IStatus
.
WARNING
:
delegate
.
warn
(
message
,
exception
);
break
;
case
IStatus
.
INFO
:
delegate
.
info
(
message
,
exception
);
break
;
case
IStatus
.
OK
:
delegate
.
trace
(
message
,
exception
);
break
;
default
:
break
;
}
}
public
static
Status
newErrorStatus
(
String
message
,
Throwable
th
)
{
return
new
Status
(
IStatus
.
ERROR
,
BUNDLE_SYMBOLIC_NAME
,
message
,
th
);
}
...
...
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/core/model/DatabaseDebugTarget.java
浏览文件 @
50860520
...
...
@@ -19,6 +19,7 @@ package org.jkiss.dbeaver.debug.core.model;
import
org.eclipse.core.resources.IMarkerDelta
;
import
org.eclipse.core.runtime.CoreException
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.debug.core.DebugEvent
;
import
org.eclipse.debug.core.DebugException
;
import
org.eclipse.debug.core.ILaunch
;
...
...
@@ -28,7 +29,10 @@ import org.eclipse.debug.core.model.IDebugTarget;
import
org.eclipse.debug.core.model.IMemoryBlock
;
import
org.eclipse.debug.core.model.IProcess
;
import
org.eclipse.debug.core.model.IThread
;
import
org.eclipse.osgi.util.NLS
;
import
org.jkiss.dbeaver.debug.DBGController
;
import
org.jkiss.dbeaver.debug.DBGException
;
import
org.jkiss.dbeaver.debug.core.DebugCore
;
public
abstract
class
DatabaseDebugTarget
<
C
extends
DBGController
>
extends
DatabaseDebugElement
implements
IDatabaseDebugTarget
{
...
...
@@ -113,7 +117,11 @@ public abstract class DatabaseDebugTarget<C extends DBGController> extends Datab
for
(
int
i
=
0
;
i
<
events
.
length
;
i
++)
{
DebugEvent
event
=
events
[
i
];
if
(
event
.
getKind
()
==
DebugEvent
.
TERMINATE
&&
event
.
getSource
().
equals
(
process
))
{
terminated
();
try
{
terminated
();
}
catch
(
DebugException
e
)
{
DebugCore
.
log
(
e
.
getStatus
());
}
}
}
}
...
...
@@ -133,11 +141,17 @@ public abstract class DatabaseDebugTarget<C extends DBGController> extends Datab
terminated
();
}
public
synchronized
void
terminated
()
{
public
synchronized
void
terminated
()
throws
DebugException
{
if
(!
terminated
)
{
terminated
=
true
;
suspended
=
false
;
controller
.
terminate
();
try
{
controller
.
terminate
();
}
catch
(
DBGException
e
)
{
String
message
=
NLS
.
bind
(
"Error terminating {0}"
,
getName
());
IStatus
status
=
DebugCore
.
newErrorStatus
(
message
,
e
);
throw
new
DebugException
(
status
);
}
}
}
...
...
@@ -159,7 +173,13 @@ public abstract class DatabaseDebugTarget<C extends DBGController> extends Datab
@Override
public
void
resume
()
throws
DebugException
{
suspended
=
false
;
controller
.
resume
();
try
{
controller
.
resume
();
}
catch
(
DBGException
e
)
{
String
message
=
NLS
.
bind
(
"Error resuming {0}"
,
getName
());
IStatus
status
=
DebugCore
.
newErrorStatus
(
message
,
e
);
throw
new
DebugException
(
status
);
}
if
(
thread
.
isSuspended
())
{
thread
.
resumedByTarget
();
}
...
...
@@ -168,7 +188,13 @@ public abstract class DatabaseDebugTarget<C extends DBGController> extends Datab
@Override
public
void
suspend
()
throws
DebugException
{
controller
.
suspend
();
try
{
controller
.
suspend
();
}
catch
(
DBGException
e
)
{
String
message
=
NLS
.
bind
(
"Error suspending {0}"
,
getName
());
IStatus
status
=
DebugCore
.
newErrorStatus
(
message
,
e
);
throw
new
DebugException
(
status
);
}
}
public
void
suspended
(
int
detail
)
{
...
...
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/debug/internal/core/ProcedureDebugControllerRegistry.java
浏览文件 @
50860520
...
...
@@ -36,7 +36,7 @@ public class ProcedureDebugControllerRegistry implements DBGControllerRegistry<D
return
controller
;
}
}
catch
(
CoreException
e
)
{
DebugCore
.
log
(
log
,
e
.
getStatus
());
Log
.
log
(
log
,
e
.
getStatus
());
}
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/DBRResult.java
已删除
100644 → 0
浏览文件 @
c35ec0a0
package
org.jkiss.dbeaver.runtime
;
/**
*
* Represents an operation result
*
*/
public
interface
DBRResult
{
int
OK
=
0
;
int
INFO
=
1
;
int
WARNING
=
2
;
int
ERROR
=
3
;
int
CANCEL
=
3
;
int
getSeverity
();
String
getMessage
();
Throwable
getException
();
boolean
isOK
();
}
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/DefaultResult.java
已删除
100644 → 0
浏览文件 @
c35ec0a0
package
org.jkiss.dbeaver.runtime
;
public
class
DefaultResult
implements
DBRResult
{
public
static
final
DefaultResult
OK_RESULT
=
ok
();
private
final
static
String
EMPTY_MESSAGE
=
""
;
//$NON-NLS-1$
private
final
int
severity
;
private
final
String
message
;
private
final
Throwable
exception
;
public
static
DefaultResult
ok
()
{
return
new
DefaultResult
(
OK
,
EMPTY_MESSAGE
,
null
);
}
public
static
DefaultResult
info
(
String
message
)
{
return
new
DefaultResult
(
INFO
,
message
,
null
);
}
public
static
DefaultResult
warning
(
String
message
)
{
return
new
DefaultResult
(
WARNING
,
message
,
null
);
}
public
static
DefaultResult
error
(
String
message
)
{
return
new
DefaultResult
(
ERROR
,
message
,
null
);
}
public
static
DefaultResult
error
(
String
message
,
Throwable
exception
)
{
return
new
DefaultResult
(
ERROR
,
message
,
exception
);
}
public
static
DefaultResult
cancel
()
{
return
new
DefaultResult
(
CANCEL
,
EMPTY_MESSAGE
,
null
);
}
public
DefaultResult
(
int
severity
,
String
message
,
Throwable
exception
)
{
this
.
severity
=
severity
;
this
.
message
=
message
;
this
.
exception
=
exception
;
}
@Override
public
int
getSeverity
()
{
return
severity
;
}
@Override
public
String
getMessage
()
{
return
message
;
}
@Override
public
Throwable
getException
()
{
return
exception
;
}
@Override
public
boolean
isOK
()
{
return
severity
==
OK
;
}
}
plugins/org.jkiss.dbeaver.debug.core/src/org/jkiss/dbeaver/runtime/core/RuntimeCore.java
已删除
100644 → 0
浏览文件 @
c35ec0a0
package
org.jkiss.dbeaver.runtime.core
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
public
class
RuntimeCore
{
public
static
final
String
BUNDLE_SYMBOLIC_NAME
=
"org.jkiss.dbeaver.runtime.core"
;
//$NON-NLS-1$
public
static
IStatus
toStatus
(
DBRResult
result
)
{
if
(
result
==
null
)
{
return
Status
.
CANCEL_STATUS
;
}
int
severity
=
toStatusSeverity
(
result
.
getSeverity
());
String
message
=
result
.
getMessage
();
Throwable
exception
=
result
.
getException
();
String
pluginId
=
toPluginId
();
return
new
Status
(
severity
,
pluginId
,
message
,
exception
);
}
private
static
String
toPluginId
()
{
return
BUNDLE_SYMBOLIC_NAME
;
}
public
static
int
toStatusSeverity
(
int
resultSeverity
)
{
return
resultSeverity
;
}
}
plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DebugUI.java
浏览文件 @
50860520
...
...
@@ -22,7 +22,6 @@ import org.eclipse.core.runtime.Status;
import
org.eclipse.ui.IEditorInput
;
import
org.eclipse.ui.IEditorPart
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.debug.core.DebugCore
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseNode
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.ui.editors.DatabaseEditorInput
;
...
...
@@ -52,7 +51,7 @@ public class DebugUI {
}
public
static
void
log
(
IStatus
status
)
{
DebugCore
.
log
(
log
,
status
);
Log
.
log
(
log
,
status
);
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java
浏览文件 @
50860520
...
...
@@ -28,9 +28,12 @@ import java.util.concurrent.ExecutionException;
import
java.util.concurrent.FutureTask
;
import
java.util.concurrent.locks.ReentrantReadWriteLock
;
import
org.jkiss.dbeaver.debug.*
;
import
org.jkiss.dbeaver.debug.DBGBreakpoint
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
import
org.jkiss.dbeaver.debug.DBGBreakpointProperties
;
import
org.jkiss.dbeaver.debug.DBGException
;
import
org.jkiss.dbeaver.debug.DBGSession
;
import
org.jkiss.dbeaver.debug.DBGStackFrame
;
import
org.jkiss.dbeaver.debug.DBGVariable
;
@SuppressWarnings
(
"nls"
)
public
class
PostgreDebugSession
implements
DBGSession
<
PostgreDebugSessionInfo
,
PostgreDebugObject
,
Integer
>
{
...
...
@@ -67,9 +70,7 @@ public class PostgreDebugSession implements DBGSession<PostgreDebugSessionInfo,
private
List
<
PostgreDebugBreakpoint
>
breakpoints
=
new
ArrayList
<
PostgreDebugBreakpoint
>(
1
);
private
PostgreDebugSessionWorker
worker
;
private
FutureTask
<
DBRResult
>
task
;
private
FutureTask
<
Void
>
task
;
private
Thread
workerThread
=
null
;
...
...
@@ -128,7 +129,6 @@ public class PostgreDebugSession implements DBGSession<PostgreDebugSessionInfo,
this
.
sessionDebugInfo
=
sessionDebugInfo
;
this
.
connection
=
connection
;
this
.
title
=
sessionManagerInfo
.
application
;
this
.
worker
=
new
PostgreDebugSessionWorker
(
this
.
connection
);
sessionId
=
listen
();
}
...
...
@@ -348,20 +348,15 @@ public class PostgreDebugSession implements DBGSession<PostgreDebugSessionInfo,
return
true
;
if
(
task
.
isDone
())
{
DBRResult
res
;
try
{
res
=
task
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e1
)
{
throw
new
DBGException
(
e1
);
task
.
get
();
}
catch
(
InterruptedException
e
)
{
throw
new
DBGException
(
e
);
}
catch
(
ExecutionException
e
)
{
System
.
out
.
println
(
"WARNING "
+
e
.
getMessage
());
return
false
;
}
if
(
res
.
getException
()
!=
null
)
{
System
.
out
.
println
(
"WARNING "
+
res
.
getException
().
getMessage
());
}
return
res
.
isOK
();
return
true
;
}
...
...
@@ -375,9 +370,9 @@ public class PostgreDebugSession implements DBGSession<PostgreDebugSessionInfo,
connection
.
setAutoCommit
(
false
);
worker
.
execSQL
(
commandSQL
);
PostgreDebugSessionWorker
worker
=
new
PostgreDebugSessionWorker
(
connection
,
commandSQL
);
task
=
new
FutureTask
<
DBRResult
>(
worker
);
task
=
new
FutureTask
<
Void
>(
worker
);
workerThread
=
new
Thread
(
task
);
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSessionWorker.java
浏览文件 @
50860520
...
...
@@ -23,35 +23,27 @@ import java.sql.SQLException;
import
java.sql.Statement
;
import
java.util.concurrent.Callable
;
import
org.jkiss.dbeaver.runtime.DBRResult
;
import
org.jkiss.dbeaver.runtime.DefaultResult
;
public
class
PostgreDebugSessionWorker
implements
Callable
<
DBRResult
>
{
public
class
PostgreDebugSessionWorker
implements
Callable
<
Void
>
{
private
final
Connection
conn
;
private
String
sql
=
""
;
private
final
String
sql
;
public
void
execSQL
(
String
sqlCommand
)
{
this
.
sql
=
sqlCommand
;
}
public
PostgreDebugSessionWorker
(
Connection
conn
)
public
PostgreDebugSessionWorker
(
Connection
conn
,
String
sqlCommand
)
{
this
.
conn
=
conn
;
this
.
sql
=
sqlCommand
;
}
@Override
public
DBRResult
call
()
throws
Exception
public
Void
call
()
throws
Exception
{
try
(
Statement
stmt
=
conn
.
createStatement
())
{
stmt
.
executeQuery
(
sql
);
return
DefaultResult
.
ok
();
return
null
;
}
catch
(
SQLException
e
)
{
String
message
=
String
.
format
(
"Failed to execute %s"
,
sql
);
return
DefaultResult
.
error
(
message
,
e
);
throw
new
Exception
(
message
,
e
);
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/Log.java
浏览文件 @
50860520
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver
;
import
org.eclipse.core.runtime.ILog
;
import
org.eclipse.core.runtime.Status
;
import
org.jkiss.dbeaver.bundle.ModelActivator
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.ArrayUtils
;
import
java.io.PrintStream
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* Log
*/
public
class
Log
{
private
static
String
corePluginID
=
ModelPreferences
.
PLUGIN_ID
;
private
static
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS"
);
private
static
final
ILog
eclipseLog
=
ModelActivator
.
getInstance
().
getLog
();
private
static
Listener
[]
listeners
=
new
Listener
[
0
];
private
final
String
name
;
public
static
ILog
getEclipseLog
()
{
return
eclipseLog
;
}
public
static
Log
getLog
(
Class
<?>
forClass
)
{
return
new
Log
(
forClass
.
getName
());
}
private
Log
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
public
boolean
isDebugEnabled
()
{
return
true
;
}
public
boolean
isErrorEnabled
()
{
return
true
;
}
public
boolean
isFatalEnabled
()
{
return
true
;
}
public
boolean
isInfoEnabled
()
{
return
true
;
}
public
boolean
isTraceEnabled
()
{
return
false
;
}
public
boolean
isWarnEnabled
()
{
return
true
;
}
public
void
trace
(
Object
message
)
{
}
public
void
trace
(
Object
message
,
Throwable
t
)
{
}
public
void
debug
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
debug
(
message
.
toString
(),
(
Throwable
)
message
);
}
else
{
debug
(
message
,
null
);
}
}
public
void
debug
(
Object
message
,
Throwable
t
)
{
ModelActivator
activator
=
ModelActivator
.
getInstance
();
debugMessage
(
message
,
t
,
System
.
err
);
// if (activator != null) {
// debugMessage(message, t, activator.getDebugWriter());
// }
}
private
static
void
debugMessage
(
Object
message
,
Throwable
t
,
PrintStream
debugWriter
)
{
synchronized
(
Log
.
class
)
{
debugWriter
.
print
(
sdf
.
format
(
new
Date
())
+
" - "
);
debugWriter
.
println
(
message
);
if
(
t
!=
null
)
{
t
.
printStackTrace
(
debugWriter
);
}
debugWriter
.
flush
();
for
(
Listener
listener
:
listeners
)
{
listener
.
loggedMessage
(
message
,
t
);
}
}
}
public
void
info
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
info
(
message
.
toString
(),
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
eclipseLog
.
log
(
new
Status
(
Status
.
INFO
,
corePluginID
,
message
==
null
?
null
:
message
.
toString
()));
}
public
void
info
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
INFO
,
message
,
t
);
}
public
void
warn
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
warn
(
message
.
toString
(),
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
ModelActivator
.
getInstance
().
getLog
().
log
(
new
Status
(
Status
.
WARNING
,
corePluginID
,
message
==
null
?
null
:
message
.
toString
()));
}
public
void
warn
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
WARNING
,
message
,
t
);
}
public
void
error
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
error
(
null
,
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
ModelActivator
.
getInstance
().
getLog
().
log
(
new
Status
(
Status
.
ERROR
,
corePluginID
,
message
==
null
?
null
:
message
.
toString
()));
}
public
void
error
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
ERROR
,
message
,
t
);
}
public
void
fatal
(
Object
message
)
{
error
(
message
);
}
public
void
fatal
(
Object
message
,
Throwable
t
)
{
error
(
message
,
t
);
}
private
static
void
writeExceptionStatus
(
int
severity
,
Object
message
,
Throwable
t
)
{
debugMessage
(
message
,
t
,
System
.
err
);
ModelActivator
activator
=
ModelActivator
.
getInstance
();
if
(
activator
!=
null
)
{
// Activator may be null in some unclear circumstances (like shutdown is in progress)
ILog
log
=
activator
.
getLog
();
if
(
log
!=
null
)
{
if
(
t
==
null
)
{
log
.
log
(
new
Status
(
severity
,
corePluginID
,
message
==
null
?
null
:
message
.
toString
()));
}
else
{
if
(
message
==
null
)
{
log
.
log
(
GeneralUtils
.
makeExceptionStatus
(
severity
,
t
));
}
else
{
log
.
log
(
GeneralUtils
.
makeExceptionStatus
(
severity
,
message
.
toString
(),
t
));
}
}
}
}
}
public
static
void
addListener
(
Listener
listener
)
{
synchronized
(
Log
.
class
)
{
listeners
=
ArrayUtils
.
add
(
Listener
.
class
,
listeners
,
listener
);
}
}
public
static
void
removeListener
(
Listener
listener
)
{
synchronized
(
Log
.
class
)
{
listeners
=
ArrayUtils
.
remove
(
Listener
.
class
,
listeners
,
listener
);
}
}
public
static
interface
Listener
{
void
loggedMessage
(
Object
message
,
Throwable
t
);
}
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver
;
import
org.eclipse.core.runtime.ILog
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.jkiss.dbeaver.bundle.ModelActivator
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.ArrayUtils
;
import
java.io.PrintStream
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* Log
*/
public
class
Log
{
private
static
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS"
);
//$NON-NLS-1$
private
static
final
ILog
eclipseLog
=
ModelActivator
.
getInstance
().
getLog
();
private
static
Listener
[]
listeners
=
new
Listener
[
0
];
private
final
String
name
;
public
static
ILog
getEclipseLog
()
{
return
eclipseLog
;
}
public
static
Log
getLog
(
Class
<?>
forClass
)
{
return
new
Log
(
forClass
.
getName
());
}
public
static
void
log
(
Log
delegate
,
IStatus
status
)
{
if
(
status
==
null
)
{
// nothing to log
return
;
}
if
(
delegate
==
null
)
{
getEclipseLog
().
log
(
status
);
// no way to log
return
;
}
int
severity
=
status
.
getSeverity
();
String
message
=
status
.
getMessage
();
Throwable
exception
=
status
.
getException
();
switch
(
severity
)
{
case
IStatus
.
CANCEL
:
delegate
.
debug
(
message
,
exception
);
break
;
case
IStatus
.
ERROR
:
delegate
.
error
(
message
,
exception
);
break
;
case
IStatus
.
WARNING
:
delegate
.
warn
(
message
,
exception
);
break
;
case
IStatus
.
INFO
:
delegate
.
info
(
message
,
exception
);
break
;
case
IStatus
.
OK
:
delegate
.
trace
(
message
,
exception
);
break
;
default
:
break
;
}
}
private
Log
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
public
boolean
isDebugEnabled
()
{
return
true
;
}
public
boolean
isErrorEnabled
()
{
return
true
;
}
public
boolean
isFatalEnabled
()
{
return
true
;
}
public
boolean
isInfoEnabled
()
{
return
true
;
}
public
boolean
isTraceEnabled
()
{
return
false
;
}
public
boolean
isWarnEnabled
()
{
return
true
;
}
public
void
trace
(
Object
message
)
{
}
public
void
trace
(
Object
message
,
Throwable
t
)
{
}
public
void
debug
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
debug
(
message
.
toString
(),
(
Throwable
)
message
);
}
else
{
debug
(
message
,
null
);
}
}
public
void
debug
(
Object
message
,
Throwable
t
)
{
debugMessage
(
message
,
t
,
System
.
err
);
}
private
static
void
debugMessage
(
Object
message
,
Throwable
t
,
PrintStream
debugWriter
)
{
synchronized
(
Log
.
class
)
{
debugWriter
.
print
(
sdf
.
format
(
new
Date
())
+
" - "
);
//$NON-NLS-1$
debugWriter
.
println
(
message
);
if
(
t
!=
null
)
{
t
.
printStackTrace
(
debugWriter
);
}
debugWriter
.
flush
();
for
(
Listener
listener
:
listeners
)
{
listener
.
loggedMessage
(
message
,
t
);
}
}
}
public
void
info
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
info
(
message
.
toString
(),
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
int
severity
=
Status
.
INFO
;
getEclipseLog
().
log
(
createStatus
(
severity
,
message
));
}
public
void
info
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
INFO
,
message
,
t
);
}
public
void
warn
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
warn
(
message
.
toString
(),
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
int
severity
=
Status
.
WARNING
;
getEclipseLog
().
log
(
createStatus
(
severity
,
message
));
}
public
void
warn
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
WARNING
,
message
,
t
);
}
public
void
error
(
Object
message
)
{
if
(
message
instanceof
Throwable
)
{
error
(
null
,
(
Throwable
)
message
);
return
;
}
debugMessage
(
message
,
null
,
System
.
err
);
int
severity
=
Status
.
ERROR
;
getEclipseLog
().
log
(
createStatus
(
severity
,
message
));
}
public
void
error
(
Object
message
,
Throwable
t
)
{
writeExceptionStatus
(
Status
.
ERROR
,
message
,
t
);
}
public
void
fatal
(
Object
message
)
{
error
(
message
);
}
public
void
fatal
(
Object
message
,
Throwable
t
)
{
error
(
message
,
t
);
}
private
static
void
writeExceptionStatus
(
int
severity
,
Object
message
,
Throwable
t
)
{
debugMessage
(
message
,
t
,
System
.
err
);
ILog
log
=
getEclipseLog
();
if
(
t
==
null
)
{
log
.
log
(
createStatus
(
severity
,
message
));
}
else
{
if
(
message
==
null
)
{
log
.
log
(
GeneralUtils
.
makeExceptionStatus
(
severity
,
t
));
}
else
{
log
.
log
(
GeneralUtils
.
makeExceptionStatus
(
severity
,
message
.
toString
(),
t
));
}
}
}
private
static
Status
createStatus
(
int
severity
,
Object
message
)
{
//we never include Exception to the status for some reason
return
new
Status
(
severity
,
ModelPreferences
.
PLUGIN_ID
,
message
==
null
?
null
:
message
.
toString
());
}
public
static
void
addListener
(
Listener
listener
)
{
synchronized
(
Log
.
class
)
{
listeners
=
ArrayUtils
.
add
(
Listener
.
class
,
listeners
,
listener
);
}
}
public
static
void
removeListener
(
Listener
listener
)
{
synchronized
(
Log
.
class
)
{
listeners
=
ArrayUtils
.
remove
(
Listener
.
class
,
listeners
,
listener
);
}
}
public
static
interface
Listener
{
void
loggedMessage
(
Object
message
,
Throwable
t
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录