Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
7b328afb
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,发现更多精彩内容 >>
提交
7b328afb
编写于
11月 26, 2014
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Data searcher
Former-commit-id:
73ab3733
上级
2a20a147
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
124 addition
and
8 deletion
+124
-8
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
...c/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
+9
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSearcher.java
...e/src/org/jkiss/dbeaver/model/struct/DBSDataSearcher.java
+5
-6
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataQuery.java
...src/org/jkiss/dbeaver/ui/search/data/SearchDataQuery.java
+110
-1
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
浏览文件 @
7b328afb
...
...
@@ -41,6 +41,7 @@ import org.jkiss.dbeaver.model.sql.SQLDialect;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.struct.DBSAttributeBase
;
import
org.jkiss.dbeaver.model.struct.DBSDataManipulator
;
import
org.jkiss.dbeaver.model.struct.DBSDataSearcher
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.utils.ArrayUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -52,7 +53,7 @@ import java.util.List;
*/
public
abstract
class
JDBCTable
<
DATASOURCE
extends
DBPDataSource
,
CONTAINER
extends
DBSObjectContainer
>
extends
AbstractTable
<
DATASOURCE
,
CONTAINER
>
implements
DBSDataManipulator
,
DBPSaveableObject
implements
DBSDataManipulator
,
DB
SDataSearcher
,
DB
PSaveableObject
{
static
final
Log
log
=
LogFactory
.
getLog
(
JDBCTable
.
class
);
public
static
final
String
DEFAULT_TABLE_ALIAS
=
"x"
;
...
...
@@ -295,6 +296,13 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
}
}
@Override
public
DBCStatistics
findRows
(
@NotNull
DBCSession
session
,
@NotNull
DBDDataReceiver
dataReceiver
,
@NotNull
String
searchString
,
long
flags
)
throws
DBCException
{
DBCStatistics
statistics
=
new
DBCStatistics
();
return
statistics
;
}
@NotNull
@Override
public
ExecuteBatch
insertData
(
@NotNull
DBCSession
session
,
@NotNull
DBSAttributeBase
[]
attributes
,
@Nullable
DBDDataReceiver
keysReceiver
)
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSearcher.java
浏览文件 @
7b328afb
...
...
@@ -34,16 +34,15 @@ public interface DBSDataSearcher extends DBSDataContainer {
public
static
final
long
FLAG_FAST_SEARCH
=
1
>>
16
;
public
static
final
long
FLAG_SEARCH_LOBS
=
1
>>
17
;
public
static
final
long
FLAG_SEARCH_
BINARY
=
1
>>
18
;
public
static
final
long
FLAG_SEARCH_
NUMBERS
=
1
>>
18
;
public
static
final
long
FLAG_CASE_SENSITIVE
=
1
>>
18
;
@NotNull
DBCStatistics
findRows
(
@NotNull
DBCSession
session
,
@NotNull
DBDDataReceiver
dataReceiver
,
@NotNull
String
searchString
,
int
maxResults
,
long
flags
)
@NotNull
DBCSession
session
,
@NotNull
DBDDataReceiver
dataReceiver
,
@NotNull
String
searchString
,
long
flags
)
throws
DBCException
;
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataQuery.java
浏览文件 @
7b328afb
...
...
@@ -21,9 +21,23 @@ package org.jkiss.dbeaver.ui.search.data;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.data.DBDDataReceiver
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionPurpose
;
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.model.struct.DBSDataSearcher
;
import
org.jkiss.dbeaver.model.struct.DBSFolder
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.dbeaver.ui.search.IObjectSearchListener
;
import
org.jkiss.dbeaver.ui.search.IObjectSearchQuery
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.*
;
public
class
SearchDataQuery
implements
IObjectSearchQuery
{
...
...
@@ -50,8 +64,52 @@ public class SearchDataQuery implements IObjectSearchQuery {
try
{
String
searchString
=
params
.
getSearchString
();
monitor
.
subTask
(
"Collect tables"
);
List
<
DBSDataSearcher
>
searchers
=
new
ArrayList
<
DBSDataSearcher
>();
for
(
DBSObject
object
:
params
.
sources
)
{
addSearchers
(
monitor
,
searchers
,
object
);
}
Set
<
DBPDataSource
>
dataSources
=
new
HashSet
<
DBPDataSource
>();
for
(
DBSDataSearcher
searcher
:
searchers
)
{
dataSources
.
add
(
searcher
.
getDataSource
());
}
// Search
long
flags
=
0
;
if
(
params
.
caseSensitive
)
flags
|=
DBSDataSearcher
.
FLAG_CASE_SENSITIVE
;
if
(
params
.
fastSearch
)
flags
|=
DBSDataSearcher
.
FLAG_FAST_SEARCH
;
if
(
params
.
searchNumbers
)
flags
|=
DBSDataSearcher
.
FLAG_SEARCH_NUMBERS
;
if
(
params
.
searchLOBs
)
flags
|=
DBSDataSearcher
.
FLAG_SEARCH_LOBS
;
int
objectsFound
=
0
;
monitor
.
beginTask
(
"Search \""
+
searchString
+
"\" in "
+
searchers
.
size
()
+
" table(s) / "
+
dataSources
.
size
()
+
" database(s)"
,
searchers
.
size
());
try
{
for
(
DBSDataSearcher
searcher
:
searchers
)
{
if
(
monitor
.
isCanceled
())
{
break
;
}
DBCSession
session
=
searcher
.
getDataSource
().
openSession
(
monitor
,
DBCExecutionPurpose
.
UTIL
,
DBUtils
.
getObjectFullName
(
searcher
));
try
{
DBDDataReceiver
dataReceiver
=
new
TestDataReceiver
();
searcher
.
findRows
(
session
,
dataReceiver
,
searchString
,
flags
);
try
{
Thread
.
sleep
(
100
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
finally
{
session
.
close
();
}
if
(
objectsFound
>=
params
.
maxResults
)
{
break
;
}
monitor
.
worked
(
1
);
}
/*
DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel();
Collection<DBSObjectReference> objects = structureAssistant.findObjectsByMask(
monitor,
params.getParentObject(),
...
...
@@ -80,16 +138,67 @@ public class SearchDataQuery implements IObjectSearchQuery {
listener.objectsFound(monitor, nodes);
}
*/
}
finally
{
monitor
.
done
();
}
}
finally
{
listener
.
searchFinished
();
}
}
private
void
addSearchers
(
DBRProgressMonitor
monitor
,
List
<
DBSDataSearcher
>
searchers
,
DBSObject
object
)
throws
DBException
{
if
(
monitor
.
isCanceled
())
{
return
;
}
Collection
<?
extends
DBSObject
>
children
=
null
;
if
(
object
instanceof
DBSDataSearcher
)
{
if
(!
searchers
.
contains
(
object
))
{
searchers
.
add
((
DBSDataSearcher
)
object
);
}
}
else
if
(
object
instanceof
DBSObjectContainer
)
{
children
=
((
DBSObjectContainer
)
object
).
getChildren
(
monitor
);
}
else
if
(
object
instanceof
DBSFolder
)
{
children
=
((
DBSFolder
)
object
).
getChildrenObjects
(
monitor
);
}
if
(!
CommonUtils
.
isEmpty
(
children
))
{
for
(
DBSObject
child
:
children
)
{
if
(
monitor
.
isCanceled
())
{
return
;
}
addSearchers
(
monitor
,
searchers
,
child
);
}
}
}
public
static
SearchDataQuery
createQuery
(
SearchDataParams
params
)
throws
DBException
{
return
new
SearchDataQuery
(
params
);
}
private
class
TestDataReceiver
implements
DBDDataReceiver
{
@Override
public
void
fetchStart
(
DBCSession
session
,
DBCResultSet
resultSet
)
throws
DBCException
{
}
@Override
public
void
fetchRow
(
DBCSession
session
,
DBCResultSet
resultSet
)
throws
DBCException
{
}
@Override
public
void
fetchEnd
(
DBCSession
session
)
throws
DBCException
{
}
@Override
public
void
close
()
{
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录