Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
aa05fd8e
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,发现更多精彩内容 >>
提交
aa05fd8e
编写于
8月 25, 2019
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Data transfer: support document-based export for JSON
Former-commit-id:
c670f003
上级
077aefea
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
60 addition
and
22 deletion
+60
-22
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/IDocumentDataExporter.java
.../dbeaver/tools/transfer/stream/IDocumentDataExporter.java
+27
-0
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java
...dbeaver/tools/transfer/stream/StreamTransferConsumer.java
+31
-21
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterJSON.java
...aver/tools/transfer/stream/exporter/DataExporterJSON.java
+2
-1
未找到文件。
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/IDocumentDataExporter.java
0 → 100644
浏览文件 @
aa05fd8e
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 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.tools.transfer.stream
;
/**
* IDocumentDataExporter.
* Supports export of raw documents.
* For such processors no additional data transofrmation will be performed.
*/
public
interface
IDocumentDataExporter
extends
IStreamDataExporter
{
}
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java
浏览文件 @
aa05fd8e
...
...
@@ -50,6 +50,7 @@ import org.jkiss.utils.Base64;
import
org.jkiss.utils.IOUtils
;
import
java.io.*
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
...
...
@@ -109,7 +110,11 @@ public class StreamTransferConsumer implements IDataTransferConsumer<StreamConsu
// Prepare columns
columnMetas
=
DBUtils
.
getAttributeBindings
(
session
,
dataContainer
,
resultSet
.
getMeta
());
columnBindings
=
DBUtils
.
makeLeafAttributeBindings
(
session
,
dataContainer
,
resultSet
);
if
(
processor
instanceof
IDocumentDataExporter
)
{
columnBindings
=
Arrays
.
asList
(
columnMetas
);
}
else
{
columnBindings
=
DBUtils
.
makeLeafAttributeBindings
(
session
,
dataContainer
,
resultSet
);
}
if
(!
initialized
)
{
/*// For multi-streams export header only once
...
...
@@ -132,29 +137,34 @@ public class StreamTransferConsumer implements IDataTransferConsumer<StreamConsu
try
{
// Get values
Object
[]
srcRow
=
DBUtils
.
fetchRow
(
session
,
resultSet
,
columnMetas
);
Object
[]
targetRow
=
new
Object
[
columnBindings
.
size
()];
for
(
int
i
=
0
;
i
<
columnBindings
.
size
();
i
++)
{
DBDAttributeBinding
column
=
columnBindings
.
get
(
i
);
Object
value
=
DBUtils
.
getAttributeValue
(
column
,
srcRow
);
if
(
value
instanceof
DBDContent
&&
!
settings
.
isOutputClipboard
())
{
// Check for binary type export
if
(!
ContentUtils
.
isTextContent
((
DBDContent
)
value
))
{
switch
(
settings
.
getLobExtractType
())
{
case
SKIP:
// Set it it null
value
=
null
;
break
;
case
INLINE:
// Just pass content to exporter
break
;
case
FILES:
// Save content to file and pass file reference to exporter
value
=
saveContentToFile
(
session
.
getProgressMonitor
(),
(
DBDContent
)
value
);
break
;
Object
[]
targetRow
;
if
(
processor
instanceof
IDocumentDataExporter
)
{
targetRow
=
srcRow
;
}
else
{
targetRow
=
new
Object
[
columnBindings
.
size
()];
for
(
int
i
=
0
;
i
<
columnBindings
.
size
();
i
++)
{
DBDAttributeBinding
column
=
columnBindings
.
get
(
i
);
Object
value
=
DBUtils
.
getAttributeValue
(
column
,
srcRow
);
if
(
value
instanceof
DBDContent
&&
!
settings
.
isOutputClipboard
())
{
// Check for binary type export
if
(!
ContentUtils
.
isTextContent
((
DBDContent
)
value
))
{
switch
(
settings
.
getLobExtractType
())
{
case
SKIP:
// Set it it null
value
=
null
;
break
;
case
INLINE:
// Just pass content to exporter
break
;
case
FILES:
// Save content to file and pass file reference to exporter
value
=
saveContentToFile
(
session
.
getProgressMonitor
(),
(
DBDContent
)
value
);
break
;
}
}
}
targetRow
[
i
]
=
value
;
}
targetRow
[
i
]
=
value
;
}
// Export row
processor
.
exportRow
(
session
,
resultSet
,
targetRow
);
...
...
plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterJSON.java
浏览文件 @
aa05fd8e
...
...
@@ -29,6 +29,7 @@ import org.jkiss.dbeaver.model.data.json.JSONUtils;
import
org.jkiss.dbeaver.model.exec.DBCResultSet
;
import
org.jkiss.dbeaver.model.exec.DBCSession
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.tools.transfer.stream.IDocumentDataExporter
;
import
org.jkiss.dbeaver.tools.transfer.stream.IStreamDataExporterSite
;
import
org.jkiss.dbeaver.utils.ContentUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -46,7 +47,7 @@ import java.util.List;
/**
* JSON Exporter
*/
public
class
DataExporterJSON
extends
StreamExporterAbstract
{
public
class
DataExporterJSON
extends
StreamExporterAbstract
implements
IDocumentDataExporter
{
public
static
final
String
PROP_FORMAT_DATE_ISO
=
"formatDateISO"
;
public
static
final
String
PROP_PRINT_TABLE_NAME
=
"printTableName"
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录