Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
b14420c4
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,发现更多精彩内容 >>
提交
b14420c4
编写于
10月 03, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6896 Data consumer settings loading fix
Former-commit-id:
5596b3fd
上级
4b87328b
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
105 addition
and
60 deletion
+105
-60
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/wizard/DataTransferWizard.java
.../dbeaver/tools/transfer/ui/wizard/DataTransferWizard.java
+17
-8
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/DataTransferSettings.java
...rg/jkiss/dbeaver/tools/transfer/DataTransferSettings.java
+2
-2
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerSettings.java
...ver/tools/transfer/database/DatabaseConsumerSettings.java
+26
-7
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferConsumer.java
...ver/tools/transfer/database/DatabaseTransferConsumer.java
+33
-34
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferProducer.java
...ver/tools/transfer/database/DatabaseTransferProducer.java
+1
-1
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java
...dbeaver/tools/transfer/stream/StreamTransferConsumer.java
+1
-1
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferProducer.java
...dbeaver/tools/transfer/stream/StreamTransferProducer.java
+1
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/json/JSONUtils.java
...odel/src/org/jkiss/dbeaver/model/data/json/JSONUtils.java
+3
-2
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/runtime/serialize/DBPObjectSerializer.java
.../jkiss/dbeaver/runtime/serialize/DBPObjectSerializer.java
+2
-1
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/task/TaskConfigurationWizard.java
...rc/org/jkiss/dbeaver/ui/task/TaskConfigurationWizard.java
+17
-2
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/task/TaskConfigurationWizardStub.java
...rg/jkiss/dbeaver/ui/task/TaskConfigurationWizardStub.java
+2
-1
未找到文件。
plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/wizard/DataTransferWizard.java
浏览文件 @
b14420c4
...
...
@@ -25,6 +25,7 @@ import org.eclipse.ui.IWorkbenchWindow;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
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
;
...
...
@@ -46,6 +47,7 @@ import org.jkiss.dbeaver.ui.task.TaskConfigurationWizardDialog;
import
org.jkiss.utils.ArrayUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.*
;
public
class
DataTransferWizard
extends
TaskConfigurationWizard
implements
IExportWizard
,
IImportWizard
{
...
...
@@ -253,7 +255,14 @@ public class DataTransferWizard extends TaskConfigurationWizard implements IExpo
@Override
public
boolean
performFinish
()
{
// Save settings
saveSettings
();
try
{
getRunnableContext
().
run
(
true
,
true
,
this
::
saveSettings
);
}
catch
(
InvocationTargetException
e
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
e
.
getMessage
(),
"Can't save settings"
,
e
.
getTargetException
());
return
false
;
}
catch
(
InterruptedException
e
)
{
return
false
;
}
super
.
performFinish
();
...
...
@@ -285,9 +294,9 @@ public class DataTransferWizard extends TaskConfigurationWizard implements IExpo
//wizardContainer.
}
private
void
saveSettings
()
{
private
void
saveSettings
(
DBRProgressMonitor
monitor
)
{
DialogSettingsMap
dialogSettings
=
new
DialogSettingsMap
(
getDialogSettings
());
saveConfiguration
(
dialogSettings
);
saveConfiguration
(
monitor
,
dialogSettings
);
}
private
void
addNodeSettings
(
DataTransferNodeDescriptor
node
)
{
...
...
@@ -382,7 +391,7 @@ public class DataTransferWizard extends TaskConfigurationWizard implements IExpo
return
null
;
}
public
void
saveTaskState
(
Map
<
String
,
Object
>
state
)
{
public
void
saveTaskState
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
state
)
{
List
<
IDataTransferNode
>
producers
=
new
ArrayList
<>();
List
<
IDataTransferNode
>
consumers
=
new
ArrayList
<>();
for
(
DataTransferPipe
pipe
:
settings
.
getDataPipes
())
{
...
...
@@ -393,12 +402,12 @@ public class DataTransferWizard extends TaskConfigurationWizard implements IExpo
consumers
.
add
(
pipe
.
getConsumer
());
}
}
DataTransferSettings
.
saveNodesLocation
(
state
,
producers
,
"producers"
);
DataTransferSettings
.
saveNodesLocation
(
state
,
consumers
,
"consumers"
);
state
.
put
(
"configuration"
,
saveConfiguration
(
new
LinkedHashMap
<>()));
DataTransferSettings
.
saveNodesLocation
(
monitor
,
state
,
producers
,
"producers"
);
DataTransferSettings
.
saveNodesLocation
(
monitor
,
state
,
consumers
,
"consumers"
);
state
.
put
(
"configuration"
,
saveConfiguration
(
monitor
,
new
LinkedHashMap
<>()));
}
private
Map
<
String
,
Object
>
saveConfiguration
(
Map
<
String
,
Object
>
config
)
{
private
Map
<
String
,
Object
>
saveConfiguration
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
config
)
{
config
.
put
(
"maxJobCount"
,
settings
.
getMaxJobCount
());
config
.
put
(
"showFinalMessage"
,
settings
.
isShowFinalMessage
());
// Save nodes' settings
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/DataTransferSettings.java
浏览文件 @
b14420c4
...
...
@@ -433,11 +433,11 @@ public class DataTransferSettings {
this
.
showFinalMessage
=
showFinalMessage
;
}
public
static
void
saveNodesLocation
(
Map
<
String
,
Object
>
state
,
Collection
<
IDataTransferNode
>
nodes
,
String
nodeType
)
{
public
static
void
saveNodesLocation
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
state
,
Collection
<
IDataTransferNode
>
nodes
,
String
nodeType
)
{
if
(
nodes
!=
null
)
{
List
<
Map
<
String
,
Object
>>
inputObjects
=
new
ArrayList
<>();
for
(
Object
inputObject
:
nodes
)
{
inputObjects
.
add
(
JSONUtils
.
serializeObject
(
inputObject
));
inputObjects
.
add
(
JSONUtils
.
serializeObject
(
monitor
,
inputObject
));
}
state
.
put
(
nodeType
,
inputObjects
);
}
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerSettings.java
浏览文件 @
b14420c4
...
...
@@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.struct.DBSDataContainer
;
import
org.jkiss.dbeaver.model.struct.DBSDataManipulator
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.tools.transfer.*
;
...
...
@@ -174,8 +175,8 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
truncateBeforeLoad
=
CommonUtils
.
getBoolean
(
settings
.
get
(
"truncateBeforeLoad"
),
truncateBeforeLoad
);
openTableOnFinish
=
CommonUtils
.
getBoolean
(
settings
.
get
(
"openTableOnFinish"
),
openTableOnFinish
);
List
<
DataTransferPipe
>
dataPipes
=
dataTransferSettings
.
getDataPipes
();
{
List
<
DataTransferPipe
>
dataPipes
=
dataTransferSettings
.
getDataPipes
();
if
(!
dataPipes
.
isEmpty
())
{
IDataTransferConsumer
consumer
=
dataPipes
.
get
(
0
).
getConsumer
();
if
(
consumer
instanceof
DatabaseTransferConsumer
)
{
...
...
@@ -190,15 +191,33 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
checkContainerConnection
(
runnableContext
);
}
loadNode
(
runnableContext
,
null
);
// Load mapping for current objects
Map
<
String
,
Object
>
mappings
=
(
Map
<
String
,
Object
>)
settings
.
get
(
"mappings"
);
if
(
mappings
!=
null
)
{
for
(
DatabaseMappingContainer
dmc
:
dataMappings
.
values
())
{
DBSDataContainer
sourceDatacontainer
=
dmc
.
getSource
();
if
(
sourceDatacontainer
!=
null
)
{
Map
<
String
,
Object
>
dmcSettings
=
(
Map
<
String
,
Object
>)
mappings
.
get
(
DBUtils
.
getObjectFullId
(
sourceDatacontainer
));
if
(
dmcSettings
!=
null
)
{
dmc
.
loadSettings
(
runnableContext
,
dmcSettings
);
if
(!
dataMappings
.
isEmpty
())
{
for
(
DatabaseMappingContainer
dmc
:
dataMappings
.
values
())
{
DBSDataContainer
sourceDatacontainer
=
dmc
.
getSource
();
if
(
sourceDatacontainer
!=
null
)
{
Map
<
String
,
Object
>
dmcSettings
=
(
Map
<
String
,
Object
>)
mappings
.
get
(
DBUtils
.
getObjectFullId
(
sourceDatacontainer
));
if
(
dmcSettings
!=
null
)
{
dmc
.
loadSettings
(
runnableContext
,
dmcSettings
);
}
}
}
}
else
if
(!
dataPipes
.
isEmpty
())
{
for
(
DataTransferPipe
pipe
:
dataPipes
)
{
IDataTransferProducer
producer
=
pipe
.
getProducer
();
DBSObject
dbObject
=
producer
.
getDatabaseObject
();
if
(
dbObject
instanceof
DBSDataContainer
)
{
DBSDataContainer
sourceDC
=
(
DBSDataContainer
)
dbObject
;
Map
<
String
,
Object
>
dmcSettings
=
(
Map
<
String
,
Object
>)
mappings
.
get
(
DBUtils
.
getObjectFullId
(
dbObject
));
if
(
dmcSettings
!=
null
)
{
DatabaseMappingContainer
dmc
=
new
DatabaseMappingContainer
(
this
,
sourceDC
);
dmc
.
loadSettings
(
runnableContext
,
dmcSettings
);
dataMappings
.
put
(
sourceDC
,
dmc
);
}
}
}
}
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferConsumer.java
浏览文件 @
b14420c4
...
...
@@ -20,7 +20,6 @@ import org.jkiss.code.NotNull;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.*
;
import
org.jkiss.dbeaver.model.app.DBPProject
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBinding
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBindingCustom
;
import
org.jkiss.dbeaver.model.data.DBDValueHandler
;
...
...
@@ -45,7 +44,6 @@ import org.jkiss.dbeaver.tools.transfer.IDataTransferNodePrimary;
import
org.jkiss.dbeaver.tools.transfer.IDataTransferProcessor
;
import
org.jkiss.utils.CommonUtils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.*
;
/**
...
...
@@ -284,7 +282,7 @@ public class DatabaseTransferConsumer implements IDataTransferConsumer<DatabaseC
}
private
void
initExporter
(
DBRProgressMonitor
monitor
)
throws
DBCException
{
DBSObject
targetDB
=
checkTargetContainer
();
DBSObject
targetDB
=
checkTargetContainer
(
monitor
);
DBPDataSourceContainer
dataSourceContainer
=
targetDB
.
getDataSource
().
getContainer
();
if
(!
dataSourceContainer
.
hasModifyPermission
(
DBPDataSourcePermission
.
PERMISSION_IMPORT_DATA
))
{
...
...
@@ -308,9 +306,15 @@ public class DatabaseTransferConsumer implements IDataTransferConsumer<DatabaseC
}
}
private
DBSObject
checkTargetContainer
()
throws
DBCException
{
if
(
targetObject
==
null
&&
settings
.
getContainer
()
==
null
)
{
throw
new
DBCException
(
"Can't initialize database consumer. No target object and no taregt container"
);
private
DBSObject
checkTargetContainer
(
DBRProgressMonitor
monitor
)
throws
DBCException
{
if
(
targetObject
==
null
)
{
if
(
settings
.
getContainerNode
()
!=
null
&&
settings
.
getContainerNode
().
getDataSource
()
==
null
)
{
// Init connection
settings
.
getContainerNode
().
initializeNode
(
monitor
,
null
);
}
if
(
settings
.
getContainer
()
==
null
)
{
throw
new
DBCException
(
"Can't initialize database consumer. No target object and no target container"
);
}
}
containerMapping
=
sourceObject
==
null
?
null
:
settings
.
getDataMapping
(
sourceObject
);
...
...
@@ -343,7 +347,7 @@ public class DatabaseTransferConsumer implements IDataTransferConsumer<DatabaseC
// Create all necessary database objects
monitor
.
beginTask
(
"Create necessary database objects"
,
1
);
try
{
DBSObject
dbObject
=
checkTargetContainer
();
DBSObject
dbObject
=
checkTargetContainer
(
monitor
);
boolean
hasNewObjects
=
false
;
if
(
containerMapping
!=
null
)
{
...
...
@@ -536,7 +540,7 @@ public class DatabaseTransferConsumer implements IDataTransferConsumer<DatabaseC
}
public
DBSDataManipulator
getTargetObject
()
{
return
targetObject
;
return
targetObject
!=
null
?
targetObject
:
containerMapping
==
null
?
null
:
containerMapping
.
getTarget
()
;
}
@Override
...
...
@@ -612,48 +616,43 @@ public class DatabaseTransferConsumer implements IDataTransferConsumer<DatabaseC
public
boolean
equals
(
Object
obj
)
{
return
obj
instanceof
DatabaseTransferConsumer
&&
CommonUtils
.
equalObjects
(
targetObject
,
((
DatabaseTransferConsumer
)
obj
).
targetObject
);
}
public
static
class
ObjectSerializer
implements
DBPObjectSerializer
<
DBTTask
,
DatabaseTransferConsumer
>
{
@Override
public
void
serializeObject
(
DatabaseTransferConsumer
object
,
Map
<
String
,
Object
>
state
)
{
DBSDataContainer
dataContainer
=
object
.
targetObject
;
if
(
dataContainer
instanceof
DBSEntity
)
{
state
.
put
(
"type"
,
"entity"
);
if
(
dataContainer
.
getDataSource
()
!
=
null
)
{
state
.
put
(
"project"
,
dataContainer
.
getDataSource
().
getContainer
().
getProject
().
getName
()
);
public
void
serializeObject
(
D
BRProgressMonitor
monitor
,
D
atabaseTransferConsumer
object
,
Map
<
String
,
Object
>
state
)
{
try
{
DatabaseMappingContainer
targetMapping
=
object
.
containerMapping
;
DBPDataSourceContainer
targetDS
=
object
.
getDataSourceContainer
(
);
if
(
targetDS
=
=
null
)
{
throw
new
DBException
(
"Can't get target datasource container"
);
}
state
.
put
(
"entityId"
,
DBUtils
.
getObjectFullId
(
dataContainer
));
}
else
{
state
.
put
(
"type"
,
"unknown"
);
log
.
error
(
"Unsupported consumer data container: "
+
dataContainer
);
state
.
put
(
"type"
,
"mappings"
);
state
.
put
(
"project"
,
targetDS
.
getProject
().
getName
());
state
.
put
(
"dataSource"
,
targetDS
.
getId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"Error initializing database consumer"
,
e
);
}
}
@Override
public
DatabaseTransferConsumer
deserializeObject
(
DBRRunnableContext
runnableContext
,
DBTTask
objectContext
,
Map
<
String
,
Object
>
state
)
{
DatabaseTransferConsumer
consumer
=
new
DatabaseTransferConsumer
();
try
{
runnableContext
.
run
(
false
,
true
,
monitor
->
{
try
{
String
projectName
=
CommonUtils
.
toString
(
state
.
get
(
"project"
));
DBPProject
project
=
CommonUtils
.
isEmpty
(
projectName
)
?
null
:
DBWorkbench
.
getPlatform
().
getWorkspace
().
getProject
(
projectName
);
if
(
project
==
null
)
{
project
=
objectContext
.
getProject
();
}
String
id
=
CommonUtils
.
toString
(
state
.
get
(
"entityId"
));
consumer
.
targetObject
=
(
DBSDataManipulator
)
DBUtils
.
findObjectById
(
monitor
,
project
,
id
);
}
catch
(
Exception
e
)
{
throw
new
InvocationTargetException
(
e
);
}
});
/*try {
String projectName = CommonUtils.toString(state.get("project"));
DBPProject project = CommonUtils.isEmpty(projectName) ? null : DBWorkbench.getPlatform().getWorkspace().getProject(projectName);
if (project == null) {
project = objectContext.getProject();
}
DatabaseMappingContainer targetMapping = new DatabaseMappingContainer();
targetMapping.loadSettings(runnableContext, state);
targetMapping.getTarget()
} catch (InvocationTargetException e) {
log.debug("Error deserializing node location", e.getTargetException());
} catch (InterruptedException e) {
// Ignore
}
}
*/
return
consumer
;
}
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferProducer.java
浏览文件 @
b14420c4
...
...
@@ -241,7 +241,7 @@ public class DatabaseTransferProducer implements IDataTransferProducer<DatabaseP
public
static
class
ObjectSerializer
implements
DBPObjectSerializer
<
DBTTask
,
DatabaseTransferProducer
>
{
@Override
public
void
serializeObject
(
DatabaseTransferProducer
object
,
Map
<
String
,
Object
>
state
)
{
public
void
serializeObject
(
D
BRProgressMonitor
monitor
,
D
atabaseTransferProducer
object
,
Map
<
String
,
Object
>
state
)
{
DBSDataContainer
dataContainer
=
object
.
dataContainer
;
if
(
dataContainer
instanceof
IAdaptable
)
{
DBSDataContainer
nestedDataContainer
=
((
IAdaptable
)
dataContainer
).
getAdapter
(
DBSDataContainer
.
class
);
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java
浏览文件 @
b14420c4
...
...
@@ -677,7 +677,7 @@ public class StreamTransferConsumer implements IDataTransferConsumer<StreamConsu
public
static
class
ObjectSerializer
implements
DBPObjectSerializer
<
DBTTask
,
StreamTransferConsumer
>
{
@Override
public
void
serializeObject
(
StreamTransferConsumer
object
,
Map
<
String
,
Object
>
state
)
{
public
void
serializeObject
(
DBRProgressMonitor
monitor
,
StreamTransferConsumer
object
,
Map
<
String
,
Object
>
state
)
{
}
@Override
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferProducer.java
浏览文件 @
b14420c4
...
...
@@ -284,7 +284,7 @@ public class StreamTransferProducer implements IDataTransferProducer<StreamProdu
public
static
class
ObjectSerializer
implements
DBPObjectSerializer
<
DBTTask
,
StreamTransferProducer
>
{
@Override
public
void
serializeObject
(
StreamTransferProducer
object
,
Map
<
String
,
Object
>
state
)
{
public
void
serializeObject
(
DBRProgressMonitor
monitor
,
StreamTransferProducer
object
,
Map
<
String
,
Object
>
state
)
{
state
.
put
(
"file"
,
object
.
inputFile
.
getAbsolutePath
());
if
(
object
.
defaultProcessor
!=
null
)
{
state
.
put
(
"node"
,
object
.
defaultProcessor
.
getNode
().
getId
());
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/json/JSONUtils.java
浏览文件 @
b14420c4
...
...
@@ -23,6 +23,7 @@ import org.jkiss.code.NotNull;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBConstants
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.runtime.serialize.DBPObjectSerializer
;
import
org.jkiss.dbeaver.runtime.serialize.SerializerRegistry
;
...
...
@@ -225,7 +226,7 @@ public class JSONUtils {
json
.
endObject
();
}
public
static
<
OBJECT_CONTEXT
,
OBJECT_TYPE
>
Map
<
String
,
Object
>
serializeObject
(
@NotNull
OBJECT_TYPE
object
)
{
public
static
<
OBJECT_CONTEXT
,
OBJECT_TYPE
>
Map
<
String
,
Object
>
serializeObject
(
DBRProgressMonitor
monitor
,
@NotNull
OBJECT_TYPE
object
)
{
DBPObjectSerializer
<
OBJECT_CONTEXT
,
OBJECT_TYPE
>
serializer
=
SerializerRegistry
.
getInstance
().
createSerializer
(
object
);
if
(
serializer
==
null
)
{
log
.
error
(
"No serializer found for object "
+
object
.
getClass
().
getName
());
...
...
@@ -234,7 +235,7 @@ public class JSONUtils {
Map
<
String
,
Object
>
state
=
new
LinkedHashMap
<>();
Map
<
String
,
Object
>
location
=
new
LinkedHashMap
<>();
serializer
.
serializeObject
(
object
,
location
);
serializer
.
serializeObject
(
monitor
,
object
,
location
);
state
.
put
(
"type"
,
SerializerRegistry
.
getInstance
().
getObjectType
(
object
));
state
.
put
(
"location"
,
location
);
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/runtime/serialize/DBPObjectSerializer.java
浏览文件 @
b14420c4
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.runtime.serialize
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
java.util.Map
;
...
...
@@ -26,7 +27,7 @@ import java.util.Map;
*/
public
interface
DBPObjectSerializer
<
CONTEXT_TYPE
,
OBJECT_TYPE
>
{
void
serializeObject
(
OBJECT_TYPE
object
,
Map
<
String
,
Object
>
state
);
void
serializeObject
(
DBRProgressMonitor
monitor
,
OBJECT_TYPE
object
,
Map
<
String
,
Object
>
state
);
OBJECT_TYPE
deserializeObject
(
DBRRunnableContext
runnableContext
,
CONTEXT_TYPE
objectContext
,
Map
<
String
,
Object
>
state
);
...
...
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/task/TaskConfigurationWizard.java
浏览文件 @
b14420c4
...
...
@@ -23,6 +23,7 @@ import org.eclipse.ui.IWorkbench;
import
org.eclipse.ui.IWorkbenchWizard
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.app.DBPProject
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.task.DBTTask
;
import
org.jkiss.dbeaver.model.task.DBTTaskType
;
import
org.jkiss.dbeaver.registry.task.TaskRegistry
;
...
...
@@ -30,6 +31,7 @@ import org.jkiss.dbeaver.runtime.DBWorkbench;
import
org.jkiss.dbeaver.ui.dialogs.BaseWizard
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Map
;
public
abstract
class
TaskConfigurationWizard
extends
BaseWizard
implements
IWorkbenchWizard
{
...
...
@@ -52,7 +54,7 @@ public abstract class TaskConfigurationWizard extends BaseWizard implements IWor
public
abstract
String
getTaskTypeId
();
public
abstract
void
saveTaskState
(
Map
<
String
,
Object
>
state
);
public
abstract
void
saveTaskState
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
state
);
public
IStructuredSelection
getCurrentSelection
()
{
return
currentSelection
;
...
...
@@ -155,7 +157,20 @@ public abstract class TaskConfigurationWizard extends BaseWizard implements IWor
taskPage
.
saveSettings
();
}
}
saveTaskState
(
currentTask
.
getProperties
());
try
{
DBTTask
theTask
=
currentTask
;
getRunnableContext
().
run
(
true
,
true
,
monitor
->
{
try
{
saveTaskState
(
monitor
,
theTask
.
getProperties
());
}
catch
(
Exception
e
)
{
throw
new
InvocationTargetException
(
e
);
}
});
}
catch
(
InvocationTargetException
e
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
"Tsk save error"
,
"Error saving task configuration"
,
e
.
getTargetException
());
}
catch
(
InterruptedException
e
)
{
// ignore
}
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/task/TaskConfigurationWizardStub.java
浏览文件 @
b14420c4
...
...
@@ -20,6 +20,7 @@ import org.eclipse.jface.wizard.IWizardPage;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Label
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage
;
import
java.util.Map
;
...
...
@@ -45,7 +46,7 @@ class TaskConfigurationWizardStub extends TaskConfigurationWizard {
}
@Override
public
void
saveTaskState
(
Map
<
String
,
Object
>
state
)
{
public
void
saveTaskState
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
state
)
{
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录