Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
1ba318fe
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,发现更多精彩内容 >>
提交
1ba318fe
编写于
6月 05, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove JFace from model
上级
413c23d1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
55 addition
and
98 deletion
+55
-98
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
...beaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
+3
-54
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
....core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
...e/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
+51
-43
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
浏览文件 @
1ba318fe
...
...
@@ -28,21 +28,13 @@ import net.sf.jsqlparser.statement.select.PlainSelect;
import
net.sf.jsqlparser.statement.select.Select
;
import
net.sf.jsqlparser.statement.select.SelectBody
;
import
net.sf.jsqlparser.statement.update.Update
;
import
org.jkiss.dbeaver.core.Log
;
import
org.eclipse.jface.text.BadLocationException
;
import
org.eclipse.jface.text.IDocument
;
import
org.eclipse.jface.text.rules.IToken
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.core.Log
;
import
org.jkiss.dbeaver.model.exec.DBCAttributeMetaData
;
import
org.jkiss.dbeaver.model.exec.DBCEntityMetaData
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.SQLSyntaxManager
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockBeginToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockEndToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLParameterToken
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -195,52 +187,9 @@ public class SQLQuery {
return
singleTableMeta
;
}
public
void
parseParameters
(
IDocument
document
,
SQLSyntaxManager
syntaxManager
)
public
void
setParameters
(
List
<
SQLQueryParameter
>
parameters
)
{
syntaxManager
.
setRange
(
document
,
offset
,
length
);
int
blockDepth
=
0
;
for
(;;)
{
IToken
token
=
syntaxManager
.
nextToken
();
int
tokenOffset
=
syntaxManager
.
getTokenOffset
();
final
int
tokenLength
=
syntaxManager
.
getTokenLength
();
if
(
token
.
isEOF
()
||
tokenOffset
>
offset
+
length
)
{
break
;
}
// Handle only parameters which are not in SQL blocks
if
(
token
instanceof
SQLBlockBeginToken
)
{
blockDepth
++;
}
else
if
(
token
instanceof
SQLBlockEndToken
)
{
blockDepth
--;
}
if
(
token
instanceof
SQLParameterToken
&&
tokenLength
>
0
&&
blockDepth
<=
0
)
{
try
{
if
(
parameters
==
null
)
{
parameters
=
new
ArrayList
<
SQLQueryParameter
>();
}
String
paramName
=
document
.
get
(
tokenOffset
,
tokenLength
);
SQLQueryParameter
parameter
=
new
SQLQueryParameter
(
parameters
.
size
(),
paramName
,
tokenOffset
-
offset
,
tokenLength
);
SQLQueryParameter
previous
=
null
;
if
(
parameter
.
isNamed
())
{
for
(
int
i
=
parameters
.
size
();
i
>
0
;
i
--)
{
if
(
parameters
.
get
(
i
-
1
).
getName
().
equals
(
paramName
))
{
previous
=
parameters
.
get
(
i
-
1
);
break
;
}
}
}
parameter
.
setPrevious
(
previous
);
parameters
.
add
(
parameter
);
}
catch
(
BadLocationException
e
)
{
log
.
warn
(
"Can't extract query parameter"
,
e
);
}
}
}
this
.
parameters
=
parameters
;
if
(
parameters
!=
null
)
{
// Replace parameter tokens with "?" symbol
for
(
int
i
=
parameters
.
size
();
i
>
0
;
i
--)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
1ba318fe
...
...
@@ -664,7 +664,7 @@ public class SQLEditor extends SQLEditorBase implements
if
(
getActivePreferenceStore
().
getBoolean
(
DBeaverPreferences
.
SQL_PARAMETERS_ENABLED
))
{
// Parse parameters
for
(
SQLQuery
query
:
queryList
)
{
query
.
parseParameters
(
getDocument
(),
getSyntaxManager
(
));
query
.
setParameters
(
parseParameters
(
getDocument
(),
query
.
getOffset
(),
query
.
getLength
()
));
}
}
return
queryList
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java
浏览文件 @
1ba318fe
...
...
@@ -51,29 +51,25 @@ import org.jkiss.dbeaver.core.DBeaverActivator;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.core.Log
;
import
org.jkiss.dbeaver.runtime.sql.SQLConstants
;
import
org.jkiss.dbeaver.ui.ICommentsSupport
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionContext
;
import
org.jkiss.dbeaver.model.sql.SQLDataSource
;
import
org.jkiss.dbeaver.model.sql.SQLQuery
;
import
org.jkiss.dbeaver.model.sql.SQLQueryParameter
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.runtime.sql.SQLConstants
;
import
org.jkiss.dbeaver.ui.ICommandIds
;
import
org.jkiss.dbeaver.u
tils.TextUtils
;
import
org.jkiss.dbeaver.u
i.ICommentsSupport
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.SQLPartitionScanner
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.SQLSyntaxManager
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockBeginToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockEndToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLCommentToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLDelimiterToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.*
;
import
org.jkiss.dbeaver.ui.editors.sql.templates.SQLTemplatesPage
;
import
org.jkiss.dbeaver.ui.editors.sql.util.SQLSymbolInserter
;
import
org.jkiss.dbeaver.ui.editors.text.BaseTextEditor
;
import
org.jkiss.dbeaver.utils.TextUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.ResourceBundle
;
import
java.util.*
;
/**
* SQL Executor
...
...
@@ -473,7 +469,7 @@ public abstract class SQLEditorBase extends BaseTextEditor {
return
null
;
}
if
(
getActivePreferenceStore
().
getBoolean
(
DBeaverPreferences
.
SQL_PARAMETERS_ENABLED
))
{
sqlQuery
.
parseParameters
(
getDocument
(),
getSyntaxManager
(
));
sqlQuery
.
setParameters
(
parseParameters
(
getDocument
(),
sqlQuery
.
getOffset
(),
sqlQuery
.
getLength
()
));
}
return
sqlQuery
;
}
...
...
@@ -625,42 +621,54 @@ public abstract class SQLEditorBase extends BaseTextEditor {
}
}
/*
public synchronized void updateFoldingStructure(int offset, int length, List<Position> positions)
{
if (curAnnotations == null) {
curAnnotations = new HashMap<Annotation, Position>();
}
List<Annotation> deletedAnnotations = new ArrayList<Annotation>();
Map<Annotation, Position> newAnnotations = new HashMap<Annotation, Position>();
// Delete all annotations if specified range
for (Map.Entry<Annotation, Position> entry : curAnnotations.entrySet()) {
int entryOffset = entry.getValue().getOffset();
if (entryOffset >= offset && entryOffset < offset + length) {
deletedAnnotations.add(entry.getKey());
protected
List
<
SQLQueryParameter
>
parseParameters
(
IDocument
document
,
int
offset
,
int
length
)
{
List
<
SQLQueryParameter
>
parameters
=
null
;
syntaxManager
.
setRange
(
document
,
offset
,
length
);
int
blockDepth
=
0
;
for
(;;)
{
IToken
token
=
syntaxManager
.
nextToken
();
int
tokenOffset
=
syntaxManager
.
getTokenOffset
();
final
int
tokenLength
=
syntaxManager
.
getTokenLength
();
if
(
token
.
isEOF
()
||
tokenOffset
>
offset
+
length
)
{
break
;
}
}
for (Annotation annotation : deletedAnnotations) {
curAnnotations.remove(annotation);
}
// Handle only parameters which are not in SQL blocks
if
(
token
instanceof
SQLBlockBeginToken
)
{
blockDepth
++;
}
else
if
(
token
instanceof
SQLBlockEndToken
)
{
blockDepth
--;
}
if
(
token
instanceof
SQLParameterToken
&&
tokenLength
>
0
&&
blockDepth
<=
0
)
{
try
{
if
(
parameters
==
null
)
{
parameters
=
new
ArrayList
<
SQLQueryParameter
>();
}
// Add new annotations
for (Position position : positions) {
ProjectionAnnotation annotation = new ProjectionAnnotation();
newAnnotations.put(annotation, position);
String
paramName
=
document
.
get
(
tokenOffset
,
tokenLength
);
SQLQueryParameter
parameter
=
new
SQLQueryParameter
(
parameters
.
size
(),
paramName
,
tokenOffset
-
offset
,
tokenLength
);
SQLQueryParameter
previous
=
null
;
if
(
parameter
.
isNamed
())
{
for
(
int
i
=
parameters
.
size
();
i
>
0
;
i
--)
{
if
(
parameters
.
get
(
i
-
1
).
getName
().
equals
(
paramName
))
{
previous
=
parameters
.
get
(
i
-
1
);
break
;
}
}
}
parameter
.
setPrevious
(
previous
);
parameters
.
add
(
parameter
);
}
catch
(
BadLocationException
e
)
{
log
.
warn
(
"Can't extract query parameter"
,
e
);
}
}
}
// Modify annotation set
annotationModel.modifyAnnotations(
deletedAnnotations.toArray(new Annotation[deletedAnnotations.size()]),
newAnnotations,
null);
// Update current annotations
curAnnotations.putAll(newAnnotations);
return
parameters
;
}
*/
public
boolean
isDisposed
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录