Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
76feb2b3
提交
76feb2b3
authored
15 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JaQu: the decompiler has been improved.
上级
f3d7da92
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
39 行增加
和
13 行删除
+39
-13
Condition.java
h2/src/tools/org/h2/jaqu/Condition.java
+1
-0
Function.java
h2/src/tools/org/h2/jaqu/Function.java
+1
-1
Query.java
h2/src/tools/org/h2/jaqu/Query.java
+31
-12
SelectTable.java
h2/src/tools/org/h2/jaqu/SelectTable.java
+6
-0
没有找到文件。
h2/src/tools/org/h2/jaqu/Condition.java
浏览文件 @
76feb2b3
...
...
@@ -27,6 +27,7 @@ class Condition<A> implements Token {
stat
.
appendSQL
(
" "
);
stat
.
appendSQL
(
compareType
.
getString
());
if
(
compareType
.
hasRightExpression
())
{
stat
.
appendSQL
(
" "
);
query
.
appendSQL
(
stat
,
y
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/jaqu/Function.java
浏览文件 @
76feb2b3
...
...
@@ -16,7 +16,7 @@ import org.h2.jaqu.util.Utils;
public
class
Function
implements
Token
{
//## Java 1.5 begin ##
//
it
must be a new instance
// must be a new instance
private
static
final
Long
COUNT_STAR
=
new
Long
(
0
);
protected
Object
[]
x
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/jaqu/Query.java
浏览文件 @
76feb2b3
...
...
@@ -11,12 +11,15 @@ import java.lang.reflect.Field;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.IdentityHashMap
;
import
java.util.List
;
import
org.h2.jaqu.
util
.ClassReader
;
import
org.h2.jaqu.
bytecode
.ClassReader
;
import
org.h2.jaqu.util.Utils
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.New
;
//## Java 1.5 end ##
/**
* This class represents a query.
*
...
...
@@ -177,18 +180,28 @@ public class Query<T> {
}
public
<
A
>
QueryWhere
<
T
>
where
(
Filter
filter
)
{
// TODO decompile the filter and add conditions accordingly
HashMap
<
String
,
Object
>
fieldMap
=
New
.
hashMap
();
for
(
Field
f
:
filter
.
getClass
().
getDeclaredFields
())
{
f
.
setAccessible
(
true
);
// try {
// System.out.println(f.getName() + "=" + f.get(filter));
// } catch (Exception e) {
// // convert
// }
try
{
Object
obj
=
f
.
get
(
filter
);
if
(
obj
==
from
.
getAlias
())
{
List
<
TableDefinition
.
FieldDefinition
>
fields
=
from
.
getAliasDefinition
().
getFields
();
String
name
=
f
.
getName
();
for
(
TableDefinition
.
FieldDefinition
field
:
fields
)
{
String
n
=
name
+
"."
+
field
.
field
.
getName
();
Object
o
=
field
.
field
.
get
(
obj
);
fieldMap
.
put
(
n
,
o
);
}
}
fieldMap
.
put
(
f
.
getName
(),
f
.
get
(
filter
));
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
}
// String filterQuery =
new
ClassReader
().
decompile
(
filter
,
"where"
);
// System.out.println(filterQuery
);
Token
filterCode
=
new
ClassReader
().
decompile
(
filter
,
fieldMap
,
"where"
);
// String filterQuery = filterCode.toString(
);
conditions
.
add
(
filterCode
);
return
new
QueryWhere
<
T
>(
this
);
}
...
...
@@ -227,7 +240,13 @@ public class Query<T> {
return
this
;
}
void
appendSQL
(
SQLStatement
stat
,
Object
x
)
{
/**
* INTERNAL
*
* @param stat the statement
* @param x the alias object
*/
public
void
appendSQL
(
SQLStatement
stat
,
Object
x
)
{
if
(
x
==
Function
.
count
())
{
stat
.
appendSQL
(
"COUNT(*)"
);
return
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/jaqu/SelectTable.java
浏览文件 @
76feb2b3
...
...
@@ -29,9 +29,11 @@ class SelectTable <T> {
private
TableDefinition
<
T
>
aliasDef
;
private
boolean
outerJoin
;
private
ArrayList
<
Token
>
joinConditions
=
Utils
.
newArrayList
();
private
T
alias
;
@SuppressWarnings
(
"unchecked"
)
SelectTable
(
Db
db
,
Query
<
T
>
query
,
T
alias
,
boolean
outerJoin
)
{
this
.
alias
=
alias
;
this
.
query
=
query
;
this
.
outerJoin
=
outerJoin
;
aliasDef
=
(
TableDefinition
<
T
>)
db
.
getTableDefinition
(
alias
.
getClass
());
...
...
@@ -39,6 +41,10 @@ class SelectTable <T> {
as
=
"T"
+
asCounter
++;
}
T
getAlias
()
{
return
alias
;
}
T
newObject
()
{
return
Utils
.
newObject
(
clazz
);
}
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论