Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
8187191a
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,发现更多精彩内容 >>
提交
8187191a
编写于
12月 26, 2017
作者:
S
Sergei.Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#1808 RSV data container
Former-commit-id:
3371d612
上级
7b50bdda
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
216 addition
and
0 deletion
+216
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataContainer.java
...dbeaver/ui/controls/resultset/ResultSetDataContainer.java
+216
-0
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataContainer.java
0 → 100644
浏览文件 @
8187191a
/*
* 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.ui.controls.resultset
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBinding
;
import
org.jkiss.dbeaver.model.data.DBDDataFilter
;
import
org.jkiss.dbeaver.model.data.DBDDataReceiver
;
import
org.jkiss.dbeaver.model.data.DBDValueMeta
;
import
org.jkiss.dbeaver.model.exec.DBCAttributeMetaData
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionSource
;
import
org.jkiss.dbeaver.model.exec.DBCResultSet
;
import
org.jkiss.dbeaver.model.exec.DBCResultSetMetaData
;
import
org.jkiss.dbeaver.model.exec.DBCSession
;
import
org.jkiss.dbeaver.model.exec.DBCStatement
;
import
org.jkiss.dbeaver.model.exec.DBCStatistics
;
import
org.jkiss.dbeaver.model.struct.DBSDataContainer
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Client-side data container.
* Wraps RSV model and original data container.
*/
public
class
ResultSetDataContainer
implements
DBSDataContainer
{
private
static
final
Log
log
=
Log
.
getLog
(
ResultSetDataContainer
.
class
);
private
final
ResultSetDataContainer
dataContainer
;
private
final
ResultSetModel
model
;
public
ResultSetDataContainer
(
ResultSetDataContainer
dataContainer
,
ResultSetModel
model
)
{
this
.
dataContainer
=
dataContainer
;
this
.
model
=
model
;
}
@Override
public
String
getDescription
()
{
return
dataContainer
.
getDescription
();
}
@Override
public
DBSObject
getParentObject
()
{
return
dataContainer
.
getParentObject
();
}
@Override
public
DBPDataSource
getDataSource
()
{
return
dataContainer
.
getDataSource
();
}
@Override
public
int
getSupportedFeatures
()
{
return
DATA_SELECT
|
DATA_COUNT
;
}
@Override
public
DBCStatistics
readData
(
DBCExecutionSource
source
,
DBCSession
session
,
DBDDataReceiver
dataReceiver
,
DBDDataFilter
dataFilter
,
long
firstRow
,
long
maxRows
,
long
flags
)
throws
DBCException
{
DBCStatistics
statistics
=
new
DBCStatistics
();
long
startTime
=
System
.
currentTimeMillis
();
statistics
.
setExecuteTime
(
System
.
currentTimeMillis
()
-
startTime
);
//LocalSta
ModelResultSet
resultSet
=
new
ModelResultSet
(
session
);
long
resultCount
=
0
;
try
{
dataReceiver
.
fetchStart
(
session
,
resultSet
,
firstRow
,
maxRows
);
while
(
resultSet
.
nextRow
())
{
resultCount
++;
dataReceiver
.
fetchRow
(
session
,
resultSet
);
}
}
finally
{
try
{
dataReceiver
.
fetchEnd
(
session
,
resultSet
);
}
catch
(
DBCException
e
)
{
log
.
error
(
"Error while finishing result set fetch"
,
e
);
//$NON-NLS-1$
}
resultSet
.
close
();
dataReceiver
.
close
();
}
statistics
.
setFetchTime
(
System
.
currentTimeMillis
()
-
startTime
);
statistics
.
setRowsFetched
(
resultCount
);
return
statistics
;
}
@Override
public
long
countData
(
DBCExecutionSource
source
,
DBCSession
session
,
DBDDataFilter
dataFilter
)
throws
DBCException
{
return
model
.
getRowCount
();
}
@Override
public
String
getName
()
{
return
dataContainer
.
getName
();
}
@Override
public
boolean
isPersisted
()
{
return
dataContainer
.
isPersisted
();
}
private
class
ModelResultSet
implements
DBCResultSet
{
private
final
DBCSession
session
;
private
ResultSetRow
curRow
;
ModelResultSet
(
DBCSession
session
)
{
this
.
session
=
session
;
}
@Override
public
DBCSession
getSession
()
{
return
session
;
}
@Override
public
DBCStatement
getSourceStatement
()
{
return
null
;
}
@Override
public
Object
getAttributeValue
(
int
index
)
throws
DBCException
{
return
model
.
getCellValue
(
model
.
getVisibleAttribute
(
index
),
curRow
);
}
@Override
public
Object
getAttributeValue
(
String
name
)
throws
DBCException
{
DBDAttributeBinding
attr
=
DBUtils
.
findObject
(
model
.
getVisibleAttributes
(),
name
);
if
(
attr
==
null
)
{
throw
new
DBCException
(
"Attribute '"
+
name
+
"' not found"
);
}
return
model
.
getCellValue
(
attr
,
curRow
);
}
@Override
public
DBDValueMeta
getAttributeValueMeta
(
int
index
)
throws
DBCException
{
return
null
;
}
@Override
public
DBDValueMeta
getRowMeta
()
throws
DBCException
{
return
null
;
}
@Override
public
boolean
nextRow
()
throws
DBCException
{
if
(
curRow
==
null
)
{
if
(
model
.
getRowCount
()
==
0
)
{
return
false
;
}
curRow
=
model
.
getRow
(
0
);
}
else
{
if
(
curRow
.
getRowNumber
()
>=
model
.
getRowCount
()
-
1
)
{
return
false
;
}
curRow
=
model
.
getRow
(
curRow
.
getRowNumber
()
+
1
);
}
return
true
;
}
@Override
public
boolean
moveTo
(
int
position
)
throws
DBCException
{
if
(
position
>=
model
.
getRowCount
()
-
1
)
{
return
false
;
}
curRow
=
model
.
getRow
(
position
);
return
true
;
}
@Override
public
DBCResultSetMetaData
getMeta
()
throws
DBCException
{
return
new
DBCResultSetMetaData
()
{
@Override
public
List
<
DBCAttributeMetaData
>
getAttributes
()
{
DBDAttributeBinding
[]
attributes
=
model
.
getAttributes
();
List
<
DBCAttributeMetaData
>
meta
=
new
ArrayList
<>(
attributes
.
length
);
for
(
DBDAttributeBinding
attribute
:
attributes
)
{
meta
.
add
(
attribute
.
getMetaAttribute
());
}
return
meta
;
}
};
}
@Override
public
String
getResultSetName
()
throws
DBCException
{
return
"ClientResults"
;
}
@Override
public
void
close
()
{
// do nothing
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录