Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
9c4f69c3
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,发现更多精彩内容 >>
提交
9c4f69c3
编写于
8月 07, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Dictionary/enum reading refactoring (support cross-database queries)
Former-commit-id:
4f1ee1c7
上级
70696a8e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
103 addition
and
94 deletion
+103
-94
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
...c/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
+55
-50
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/struct/DBSDictionary.java
...del/src/org/jkiss/dbeaver/model/struct/DBSDictionary.java
+4
-4
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/virtual/DBVEntity.java
....model/src/org/jkiss/dbeaver/model/virtual/DBVEntity.java
+16
-8
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java
...ontrols/resultset/valuefilter/GenericFilterValueEdit.java
+17
-16
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java
...g/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java
+11
-16
未找到文件。
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java
浏览文件 @
9c4f69c3
...
...
@@ -24,6 +24,7 @@ import org.jkiss.dbeaver.ModelPreferences;
import
org.jkiss.dbeaver.model.*
;
import
org.jkiss.dbeaver.model.data.*
;
import
org.jkiss.dbeaver.model.exec.*
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCSession
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCStatement
;
import
org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer
;
import
org.jkiss.dbeaver.model.impl.data.ExecuteBatchImpl
;
...
...
@@ -554,7 +555,7 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
/**
* Returns prepared statements for enumeration fetch
* @param
session
execution context
* @param
monitor
execution context
* @param keyColumn enumeration column.
* @param keyPattern pattern for enumeration values. If null or empty then returns full enumration set
* @param preceedingKeys other constrain key values. May be null.
...
...
@@ -565,7 +566,7 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
@NotNull
@Override
public
List
<
DBDLabelValuePair
>
getDictionaryEnumeration
(
@NotNull
DB
CSession
session
,
@NotNull
DB
RProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
Object
keyPattern
,
List
<
DBDAttributeValue
>
preceedingKeys
,
...
...
@@ -576,7 +577,7 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
{
// Use default one
return
readKeyEnumeration
(
session
,
monitor
,
keyColumn
,
keyPattern
,
preceedingKeys
,
...
...
@@ -588,19 +589,19 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
@NotNull
@Override
public
List
<
DBDLabelValuePair
>
getDictionaryValues
(
@NotNull
DB
CSession
session
,
@NotNull
DB
RProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
@NotNull
List
<
Object
>
keyValues
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
boolean
sortByValue
,
boolean
sortAsc
)
throws
DBException
{
DBDValueHandler
keyValueHandler
=
DBUtils
.
findValueHandler
(
session
,
keyColumn
);
DBDValueHandler
keyValueHandler
=
DBUtils
.
findValueHandler
(
keyColumn
.
getDataSource
()
,
keyColumn
);
StringBuilder
query
=
new
StringBuilder
();
query
.
append
(
"SELECT "
).
append
(
DBUtils
.
getQuotedIdentifier
(
keyColumn
));
String
descColumns
=
DBVUtils
.
getDictionaryDescriptionColumns
(
session
.
getProgressMonitor
()
,
keyColumn
);
String
descColumns
=
DBVUtils
.
getDictionaryDescriptionColumns
(
monitor
,
keyColumn
);
if
(
descColumns
!=
null
)
{
query
.
append
(
", "
).
append
(
descColumns
);
}
...
...
@@ -633,30 +634,32 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
query
.
append
(
" DESC"
);
}
try
(
DBCStatement
dbStat
=
session
.
prepareStatement
(
DBCStatementType
.
QUERY
,
query
.
toString
(),
false
,
false
,
false
))
{
int
paramPos
=
0
;
if
(
preceedingKeys
!=
null
&&
!
preceedingKeys
.
isEmpty
())
{
for
(
DBDAttributeValue
precAttribute
:
preceedingKeys
)
{
DBDValueHandler
precValueHandler
=
DBUtils
.
findValueHandler
(
session
,
precAttribute
.
getAttribute
());
precValueHandler
.
bindValueObject
(
session
,
dbStat
,
precAttribute
.
getAttribute
(),
paramPos
++,
precAttribute
.
getValue
());
try
(
JDBCSession
session
=
DBUtils
.
openUtilSession
(
monitor
,
this
,
"Load dictionary values"
))
{
try
(
DBCStatement
dbStat
=
session
.
prepareStatement
(
DBCStatementType
.
QUERY
,
query
.
toString
(),
false
,
false
,
false
))
{
int
paramPos
=
0
;
if
(
preceedingKeys
!=
null
&&
!
preceedingKeys
.
isEmpty
())
{
for
(
DBDAttributeValue
precAttribute
:
preceedingKeys
)
{
DBDValueHandler
precValueHandler
=
DBUtils
.
findValueHandler
(
session
,
precAttribute
.
getAttribute
());
precValueHandler
.
bindValueObject
(
session
,
dbStat
,
precAttribute
.
getAttribute
(),
paramPos
++,
precAttribute
.
getValue
());
}
}
}
for
(
Object
value
:
keyValues
)
{
keyValueHandler
.
bindValueObject
(
session
,
dbStat
,
keyColumn
,
paramPos
++,
value
);
}
dbStat
.
setLimit
(
0
,
keyValues
.
size
());
if
(
dbStat
.
executeStatement
())
{
try
(
DBCResultSet
dbResult
=
dbStat
.
openResultSet
())
{
return
DBVUtils
.
readDictionaryRows
(
session
,
keyColumn
,
keyValueHandler
,
dbResult
);
for
(
Object
value
:
keyValues
)
{
keyValueHandler
.
bindValueObject
(
session
,
dbStat
,
keyColumn
,
paramPos
++,
value
);
}
dbStat
.
setLimit
(
0
,
keyValues
.
size
());
if
(
dbStat
.
executeStatement
())
{
try
(
DBCResultSet
dbResult
=
dbStat
.
openResultSet
())
{
return
DBVUtils
.
readDictionaryRows
(
session
,
keyColumn
,
keyValueHandler
,
dbResult
);
}
}
else
{
return
Collections
.
emptyList
();
}
}
else
{
return
Collections
.
emptyList
();
}
}
}
private
List
<
DBDLabelValuePair
>
readKeyEnumeration
(
DB
CSession
session
,
DB
RProgressMonitor
monitor
,
DBSEntityAttribute
keyColumn
,
Object
keyPattern
,
List
<
DBDAttributeValue
>
preceedingKeys
,
...
...
@@ -669,7 +672,7 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
throw
new
IllegalArgumentException
(
"Bad key column argument"
);
}
DBDValueHandler
keyValueHandler
=
DBUtils
.
findValueHandler
(
session
,
keyColumn
);
DBDValueHandler
keyValueHandler
=
DBUtils
.
findValueHandler
(
keyColumn
.
getDataSource
()
,
keyColumn
);
boolean
searchInKeys
=
keyPattern
!=
null
;
...
...
@@ -721,10 +724,10 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
StringBuilder
query
=
new
StringBuilder
();
query
.
append
(
"SELECT "
).
append
(
DBUtils
.
getQuotedIdentifier
(
keyColumn
));
String
descColumns
=
DBVUtils
.
getDictionaryDescriptionColumns
(
session
.
getProgressMonitor
()
,
keyColumn
);
String
descColumns
=
DBVUtils
.
getDictionaryDescriptionColumns
(
monitor
,
keyColumn
);
Collection
<
DBSEntityAttribute
>
descAttributes
=
null
;
if
(
descColumns
!=
null
)
{
descAttributes
=
DBVEntity
.
getDescriptionColumns
(
session
.
getProgressMonitor
()
,
this
,
descColumns
);
descAttributes
=
DBVEntity
.
getDescriptionColumns
(
monitor
,
this
,
descColumns
);
query
.
append
(
", "
).
append
(
descColumns
);
}
query
.
append
(
" FROM "
).
append
(
DBUtils
.
getObjectFullName
(
this
,
DBPEvaluationContext
.
DML
));
...
...
@@ -791,38 +794,40 @@ public abstract class JDBCTable<DATASOURCE extends DBPDataSource, CONTAINER exte
query
.
append
(
" DESC"
);
}
try
(
DBCStatement
dbStat
=
session
.
prepareStatement
(
DBCStatementType
.
QUERY
,
query
.
toString
(),
false
,
false
,
false
))
{
int
paramPos
=
0
;
try
(
JDBCSession
session
=
DBUtils
.
openUtilSession
(
monitor
,
this
,
"Load attribute value enumeration"
))
{
try
(
DBCStatement
dbStat
=
session
.
prepareStatement
(
DBCStatementType
.
QUERY
,
query
.
toString
(),
false
,
false
,
false
))
{
int
paramPos
=
0
;
if
(
preceedingKeys
!=
null
&&
!
preceedingKeys
.
isEmpty
())
{
for
(
DBDAttributeValue
precAttribute
:
preceedingKeys
)
{
DBDValueHandler
precValueHandler
=
DBUtils
.
findValueHandler
(
session
,
precAttribute
.
getAttribute
());
precValueHandler
.
bindValueObject
(
session
,
dbStat
,
precAttribute
.
getAttribute
(),
paramPos
++,
precAttribute
.
getValue
());
if
(
preceedingKeys
!=
null
&&
!
preceedingKeys
.
isEmpty
())
{
for
(
DBDAttributeValue
precAttribute
:
preceedingKeys
)
{
DBDValueHandler
precValueHandler
=
DBUtils
.
findValueHandler
(
session
,
precAttribute
.
getAttribute
());
precValueHandler
.
bindValueObject
(
session
,
dbStat
,
precAttribute
.
getAttribute
(),
paramPos
++,
precAttribute
.
getValue
());
}
}
}
if
(
keyPattern
!=
null
&&
searchInKeys
)
{
keyValueHandler
.
bindValueObject
(
session
,
dbStat
,
keyColumn
,
paramPos
++,
keyColumn
.
getDataKind
()
==
DBPDataKind
.
STRING
?
"%"
+
keyPattern
+
"%"
:
keyPattern
);
}
if
(
keyPattern
!=
null
&&
searchInKeys
)
{
keyValueHandler
.
bindValueObject
(
session
,
dbStat
,
keyColumn
,
paramPos
++,
keyColumn
.
getDataKind
()
==
DBPDataKind
.
STRING
?
"%"
+
keyPattern
+
"%"
:
keyPattern
);
}
if
(
searchInDesc
)
{
for
(
DBSEntityAttribute
descAttr
:
descAttributes
)
{
if
(
descAttr
.
getDataKind
()
==
DBPDataKind
.
STRING
)
{
final
DBDValueHandler
valueHandler
=
DBUtils
.
findValueHandler
(
session
,
descAttr
);
valueHandler
.
bindValueObject
(
session
,
dbStat
,
descAttr
,
paramPos
++,
descAttr
.
getDataKind
()
==
DBPDataKind
.
STRING
?
"%"
+
keyPattern
+
"%"
:
keyPattern
);
if
(
searchInDesc
)
{
for
(
DBSEntityAttribute
descAttr
:
descAttributes
)
{
if
(
descAttr
.
getDataKind
()
==
DBPDataKind
.
STRING
)
{
final
DBDValueHandler
valueHandler
=
DBUtils
.
findValueHandler
(
session
,
descAttr
);
valueHandler
.
bindValueObject
(
session
,
dbStat
,
descAttr
,
paramPos
++,
descAttr
.
getDataKind
()
==
DBPDataKind
.
STRING
?
"%"
+
keyPattern
+
"%"
:
keyPattern
);
}
}
}
}
dbStat
.
setLimit
(
0
,
maxResults
);
if
(
dbStat
.
executeStatement
())
{
try
(
DBCResultSet
dbResult
=
dbStat
.
openResultSet
())
{
return
DBVUtils
.
readDictionaryRows
(
session
,
keyColumn
,
keyValueHandler
,
dbResult
);
dbStat
.
setLimit
(
0
,
maxResults
);
if
(
dbStat
.
executeStatement
())
{
try
(
DBCResultSet
dbResult
=
dbStat
.
openResultSet
())
{
return
DBVUtils
.
readDictionaryRows
(
session
,
keyColumn
,
keyValueHandler
,
dbResult
);
}
}
else
{
return
Collections
.
emptyList
();
}
}
else
{
return
Collections
.
emptyList
();
}
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/struct/DBSDictionary.java
浏览文件 @
9c4f69c3
...
...
@@ -21,7 +21,7 @@ import org.jkiss.code.Nullable;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.data.DBDAttributeValue
;
import
org.jkiss.dbeaver.model.data.DBDLabelValuePair
;
import
org.jkiss.dbeaver.model.
exec.DBCSession
;
import
org.jkiss.dbeaver.model.
runtime.DBRProgressMonitor
;
import
java.util.List
;
...
...
@@ -40,7 +40,7 @@ public interface DBSDictionary
/**
* Gets enumeration values
* @param
session
session
* @param
monitor
session
* @param keyColumn enumeration column.
* @param keyPattern pattern for enumeration values. If null or empty then returns full enumration set
* @param preceedingKeys other constrain key values. May be null.
...
...
@@ -51,7 +51,7 @@ public interface DBSDictionary
*/
@NotNull
List
<
DBDLabelValuePair
>
getDictionaryEnumeration
(
@NotNull
DB
CSession
session
,
@NotNull
DB
RProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
Object
keyPattern
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
...
...
@@ -62,7 +62,7 @@ public interface DBSDictionary
@NotNull
List
<
DBDLabelValuePair
>
getDictionaryValues
(
@NotNull
DB
CSession
session
,
@NotNull
DB
RProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
@NotNull
List
<
Object
>
keyValues
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/virtual/DBVEntity.java
浏览文件 @
9c4f69c3
...
...
@@ -602,19 +602,27 @@ public class DBVEntity extends DBVObject implements DBSEntity, DBPQualifiedObjec
@NotNull
@Override
public
List
<
DBDLabelValuePair
>
getDictionaryEnumeration
(
@NotNull
DBCSession
session
,
@NotNull
DBSEntityAttribute
keyColumn
,
Object
keyPattern
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
boolean
sortByValue
,
boolean
sortAsc
,
int
maxResults
)
throws
DBException
{
DBSEntity
realEntity
=
getRealEntity
(
session
.
getProgressMonitor
());
return
realEntity
instanceof
DBSDictionary
?
((
DBSDictionary
)
realEntity
).
getDictionaryEnumeration
(
session
,
keyColumn
,
keyPattern
,
preceedingKeys
,
sortByValue
,
sortAsc
,
maxResults
)
:
Collections
.
emptyList
();
public
List
<
DBDLabelValuePair
>
getDictionaryEnumeration
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
Object
keyPattern
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
boolean
sortByValue
,
boolean
sortAsc
,
int
maxResults
)
throws
DBException
{
DBSEntity
realEntity
=
getRealEntity
(
monitor
);
if
(
realEntity
instanceof
DBSDictionary
)
{
return
((
DBSDictionary
)
realEntity
).
getDictionaryEnumeration
(
monitor
,
keyColumn
,
keyPattern
,
preceedingKeys
,
sortByValue
,
sortAsc
,
maxResults
);
}
return
Collections
.
emptyList
();
}
@NotNull
@Override
public
List
<
DBDLabelValuePair
>
getDictionaryValues
(
@NotNull
DB
CSession
session
,
@NotNull
DBSEntityAttribute
keyColumn
,
@NotNull
List
<
Object
>
keyValues
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
boolean
sortByValue
,
boolean
sortAsc
)
throws
DBException
{
DBSEntity
realEntity
=
getRealEntity
(
session
.
getProgressMonitor
()
);
public
List
<
DBDLabelValuePair
>
getDictionaryValues
(
@NotNull
DB
RProgressMonitor
monitor
,
@NotNull
DBSEntityAttribute
keyColumn
,
@NotNull
List
<
Object
>
keyValues
,
@Nullable
List
<
DBDAttributeValue
>
preceedingKeys
,
boolean
sortByValue
,
boolean
sortAsc
)
throws
DBException
{
DBSEntity
realEntity
=
getRealEntity
(
monitor
);
return
realEntity
instanceof
DBSDictionary
?
((
DBSDictionary
)
realEntity
).
getDictionaryValues
(
session
,
keyColumn
,
keyValues
,
preceedingKeys
,
sortByValue
,
sortAsc
)
:
((
DBSDictionary
)
realEntity
).
getDictionaryValues
(
monitor
,
keyColumn
,
keyValues
,
preceedingKeys
,
sortByValue
,
sortAsc
)
:
Collections
.
emptyList
();
}
}
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java
浏览文件 @
9c4f69c3
...
...
@@ -39,7 +39,6 @@ import org.jkiss.dbeaver.model.data.DBDAttributeConstraint;
import
org.jkiss.dbeaver.model.data.DBDDisplayFormat
;
import
org.jkiss.dbeaver.model.data.DBDLabelValuePair
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionContext
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionPurpose
;
import
org.jkiss.dbeaver.model.exec.DBCLogicalOperator
;
import
org.jkiss.dbeaver.model.exec.DBCSession
;
import
org.jkiss.dbeaver.model.runtime.AbstractJob
;
...
...
@@ -181,12 +180,12 @@ class GenericFilterValueEdit {
private
void
loadConstraintEnum
(
final
DBSEntityReferrer
refConstraint
)
{
loadJob
=
new
KeyLoadJob
(
"Load constraint '"
+
refConstraint
.
getName
()
+
"' values"
)
{
@Override
List
<
DBDLabelValuePair
>
readEnumeration
(
DB
CSession
session
)
throws
DBException
{
List
<
DBDLabelValuePair
>
readEnumeration
(
DB
RProgressMonitor
monitor
)
throws
DBException
{
final
DBSEntityAttribute
tableColumn
=
attr
.
getEntityAttribute
();
if
(
tableColumn
==
null
)
{
return
null
;
}
final
DBSEntityAttributeRef
fkColumn
=
DBUtils
.
getConstraintAttribute
(
session
.
getProgressMonitor
()
,
refConstraint
,
tableColumn
);
final
DBSEntityAttributeRef
fkColumn
=
DBUtils
.
getConstraintAttribute
(
monitor
,
refConstraint
,
tableColumn
);
if
(
fkColumn
==
null
)
{
return
null
;
}
...
...
@@ -196,7 +195,7 @@ class GenericFilterValueEdit {
}
else
{
return
null
;
}
final
DBSEntityAttribute
refColumn
=
DBUtils
.
getReferenceAttribute
(
session
.
getProgressMonitor
()
,
association
,
tableColumn
,
false
);
final
DBSEntityAttribute
refColumn
=
DBUtils
.
getReferenceAttribute
(
monitor
,
association
,
tableColumn
,
false
);
if
(
refColumn
==
null
)
{
return
null
;
}
...
...
@@ -205,13 +204,13 @@ class GenericFilterValueEdit {
final
DBSDictionary
enumConstraint
=
(
DBSDictionary
)
refConstraint
.
getParentObject
();
if
(
fkAttribute
!=
null
&&
enumConstraint
!=
null
)
{
return
enumConstraint
.
getDictionaryEnumeration
(
session
,
refColumn
,
filterPattern
,
null
,
true
,
true
,
MAX_MULTI_VALUES
);
monitor
,
refColumn
,
filterPattern
,
null
,
true
,
true
,
MAX_MULTI_VALUES
);
}
return
null
;
}
...
...
@@ -226,8 +225,10 @@ class GenericFilterValueEdit {
tableViewer
.
getTable
().
getColumn
(
1
).
setText
(
"Count"
);
loadJob
=
new
KeyLoadJob
(
"Load '"
+
attr
.
getName
()
+
"' values"
)
{
@Override
List
<
DBDLabelValuePair
>
readEnumeration
(
DBCSession
session
)
throws
DBException
{
return
attributeEnumerable
.
getValueEnumeration
(
session
,
filterPattern
,
MAX_MULTI_VALUES
);
List
<
DBDLabelValuePair
>
readEnumeration
(
DBRProgressMonitor
monitor
)
throws
DBException
{
try
(
DBCSession
session
=
DBUtils
.
openUtilSession
(
monitor
,
attributeEnumerable
,
"Read value enumeration"
))
{
return
attributeEnumerable
.
getValueEnumeration
(
session
,
filterPattern
,
MAX_MULTI_VALUES
);
}
}
};
loadJob
.
schedule
();
...
...
@@ -382,8 +383,8 @@ class GenericFilterValueEdit {
if
(
executionContext
==
null
)
{
return
Status
.
OK_STATUS
;
}
try
(
DBCSession
session
=
executionContext
.
openSession
(
monitor
,
DBCExecutionPurpose
.
UTIL
,
"Read value enumeration"
))
{
final
List
<
DBDLabelValuePair
>
valueEnumeration
=
readEnumeration
(
session
);
try
{
final
List
<
DBDLabelValuePair
>
valueEnumeration
=
readEnumeration
(
monitor
);
if
(
valueEnumeration
==
null
)
{
return
Status
.
OK_STATUS
;
}
else
{
...
...
@@ -397,7 +398,7 @@ class GenericFilterValueEdit {
}
@Nullable
abstract
List
<
DBDLabelValuePair
>
readEnumeration
(
DB
CSession
session
)
throws
DBException
;
abstract
List
<
DBDLabelValuePair
>
readEnumeration
(
DB
RProgressMonitor
monitor
)
throws
DBException
;
boolean
mergeResultsWithData
()
{
return
CommonUtils
.
isEmpty
(
filterPattern
);
...
...
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java
浏览文件 @
9c4f69c3
...
...
@@ -491,27 +491,22 @@ public class ReferenceValueEditor {
final
DBSEntityConstraint
refConstraint
=
association
.
getReferencedConstraint
();
final
DBSDictionary
enumConstraint
=
(
DBSDictionary
)
refConstraint
.
getParentObject
();
if
(
fkAttribute
!=
null
&&
enumConstraint
!=
null
)
{
try
(
DBCSession
session
=
valueController
.
getExecutionContext
().
openSess
ion
(
Collection
<
DBDLabelValuePair
>
enumValues
=
enumConstraint
.
getDictionaryEnumerat
ion
(
monitor
,
DBCExecutionPurpose
.
UTIL
,
NLS
.
bind
(
ResultSetMessages
.
dialog_value_view_context_name
,
fkAttribute
.
getName
())))
{
Collection
<
DBDLabelValuePair
>
enumValues
=
enumConstraint
.
getDictionaryEnumeration
(
session
,
refColumn
,
pattern
,
precedingKeys
,
sortByValue
,
sortAsc
,
200
);
refColumn
,
pattern
,
precedingKeys
,
sortByValue
,
sortAsc
,
200
);
// for (DBDLabelValuePair pair : enumValues) {
// keyValues.put(pair.getValue(), pair.getLabel());
// }
if
(
monitor
.
isCanceled
())
{
return
null
;
}
final
DBDValueHandler
colHandler
=
DBUtils
.
findValueHandler
(
session
,
fkAttribute
);
return
new
EnumValuesData
(
enumValues
,
fkColumn
,
colHandler
);
if
(
monitor
.
isCanceled
())
{
return
null
;
}
final
DBDValueHandler
colHandler
=
DBUtils
.
findValueHandler
(
fkAttribute
.
getDataSource
(),
fkAttribute
);
return
new
EnumValuesData
(
enumValues
,
fkColumn
,
colHandler
);
}
}
catch
(
DBException
e
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录