Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
bc221d62
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bc221d62
编写于
8月 23, 2012
作者:
Y
Yiming Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor and integrate test
上级
06f03b7c
变更
25
展开全部
隐藏空白更改
内联
并排
Showing
25 changed file
with
346 addition
and
837 deletion
+346
-837
bee-engine/src/main/java/com/dianping/bee/engine/build/ComponentsConfigurator.java
...com/dianping/bee/engine/build/ComponentsConfigurator.java
+0
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/MultiTableStatement.java
...java/com/dianping/bee/engine/spi/MultiTableStatement.java
+2
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/RowFilter.java
.../src/main/java/com/dianping/bee/engine/spi/RowFilter.java
+2
-3
bee-engine/src/main/java/com/dianping/bee/engine/spi/SingleTableStatement.java
...ava/com/dianping/bee/engine/spi/SingleTableStatement.java
+2
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/Statement.java
.../src/main/java/com/dianping/bee/engine/spi/Statement.java
+2
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/TableProvider.java
.../main/java/com/dianping/bee/engine/spi/TableProvider.java
+12
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultMultiTableStatement.java
...g/bee/engine/spi/internal/DefaultMultiTableStatement.java
+8
-7
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultRowFilter.java
...om/dianping/bee/engine/spi/internal/DefaultRowFilter.java
+4
-5
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultSingleTableStatement.java
.../bee/engine/spi/internal/DefaultSingleTableStatement.java
+23
-7
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultStatementManager.java
...ping/bee/engine/spi/internal/DefaultStatementManager.java
+1
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatementVisitor.java
.../bee/engine/spi/internal/SingleTableStatementVisitor.java
+1
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/TableHelper.java
...ava/com/dianping/bee/engine/spi/internal/TableHelper.java
+1
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/Cell.java
.../src/main/java/com/dianping/bee/engine/spi/meta/Cell.java
+8
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/ColumnMeta.java
...ain/java/com/dianping/bee/engine/spi/meta/ColumnMeta.java
+0
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/Index.java
...src/main/java/com/dianping/bee/engine/spi/meta/Index.java
+1
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/Row.java
...e/src/main/java/com/dianping/bee/engine/spi/meta/Row.java
+2
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/RowSet.java
...rc/main/java/com/dianping/bee/engine/spi/meta/RowSet.java
+19
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultCell.java
...om/dianping/bee/engine/spi/meta/internal/DefaultCell.java
+44
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultRow.java
...com/dianping/bee/engine/spi/meta/internal/DefaultRow.java
+35
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultRowSet.java
.../dianping/bee/engine/spi/meta/internal/DefaultRowSet.java
+75
-0
bee-engine/src/main/java/com/dianping/bee/engine/visitor/DefaultVisitor.java
.../java/com/dianping/bee/engine/visitor/DefaultVisitor.java
+0
-783
bee-engine/src/main/java/com/dianping/bee/server/SelectHandler.java
.../src/main/java/com/dianping/bee/server/SelectHandler.java
+28
-6
bee-engine/src/main/resources/META-INF/plexus/components.xml
bee-engine/src/main/resources/META-INF/plexus/components.xml
+43
-3
bee-engine/src/test/java/com/dianping/bee/db/CatDatabase.java
...engine/src/test/java/com/dianping/bee/db/CatDatabase.java
+30
-7
bee-engine/src/test/java/com/dianping/bee/engine/spi/SpiTest.java
...ne/src/test/java/com/dianping/bee/engine/spi/SpiTest.java
+3
-0
未找到文件。
bee-engine/src/main/java/com/dianping/bee/engine/build/ComponentsConfigurator.java
浏览文件 @
bc221d62
...
...
@@ -14,7 +14,6 @@ import com.dianping.bee.engine.spi.internal.DefaultMultiTableStatement;
import
com.dianping.bee.engine.spi.internal.DefaultRowFilter
;
import
com.dianping.bee.engine.spi.internal.DefaultSingleTableStatement
;
import
com.dianping.bee.engine.spi.internal.DefaultStatementManager
;
import
com.dianping.bee.engine.spi.internal.DefaultStatementVisitor
;
import
com.dianping.bee.engine.spi.internal.DefaultTableProviderManager
;
import
com.dianping.bee.engine.spi.internal.MultiTableStatementVisitor
;
import
com.dianping.bee.engine.spi.internal.SingleTableStatementVisitor
;
...
...
@@ -44,7 +43,6 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
TableHelper
.
class
)
//
.
req
(
TableProviderManager
.
class
));
all
.
add
(
C
(
DefaultStatementVisitor
.
class
).
is
(
PER_LOOKUP
));
all
.
add
(
C
(
SingleTableStatementVisitor
.
class
).
is
(
PER_LOOKUP
)
//
.
req
(
TableHelper
.
class
,
SingleTableStatement
.
class
,
RowFilter
.
class
));
all
.
add
(
C
(
MultiTableStatementVisitor
.
class
).
is
(
PER_LOOKUP
)
//
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/MultiTableStatement.java
浏览文件 @
bc221d62
...
...
@@ -20,7 +20,7 @@ import java.util.List;
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
interface
MultiTableStatement
extends
Statement
{
public
List
<
String
>
getTableNam
es
();
public
List
<
TableProvider
>
getTabl
es
();
public
void
setTable
Names
(
List
<
String
>
tableName
);
public
void
setTable
s
(
List
<
TableProvider
>
tables
);
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/RowFilter.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
import
java.util.List
;
import
com.alibaba.cobar.parser.ast.expression.Expression
;
import
com.dianping.bee.engine.spi.meta.Row
;
public
interface
RowFilter
{
public
boolean
filter
(
List
<
Object
>
values
);
public
boolean
filter
(
Row
row
);
public
void
setExpression
(
Expression
where
);
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/SingleTableStatement.java
浏览文件 @
bc221d62
...
...
@@ -18,7 +18,7 @@ package com.dianping.bee.engine.spi;
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
interface
SingleTableStatement
extends
Statement
{
public
String
getTableNam
e
();
public
TableProvider
getTabl
e
();
public
void
setTable
Name
(
String
tableName
);
public
void
setTable
(
TableProvider
tableName
);
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/Statement.java
浏览文件 @
bc221d62
...
...
@@ -3,6 +3,8 @@ package com.dianping.bee.engine.spi;
import
java.util.List
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
public
interface
Statement
{
public
Index
getIndex
();
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/TableProvider.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
import
java.util.List
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
public
interface
TableProvider
{
public
String
getName
();
public
ColumnMeta
[]
getColumns
();
public
Index
[]
getIndexes
();
public
String
getName
();
/**
* @param m_index
* @param m_selectColumns
*/
public
RowSet
queryByIndex
(
Index
m_index
,
List
<
ColumnMeta
>
m_selectColumns
);
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultMultiTableStatement.java
浏览文件 @
bc221d62
...
...
@@ -2,14 +2,15 @@ package com.dianping.bee.engine.spi.internal;
import
java.util.List
;
import
com.dianping.bee.engine.spi.Index
;
import
com.dianping.bee.engine.spi.MultiTableStatement
;
import
com.dianping.bee.engine.spi.RowFilter
;
import
com.dianping.bee.engine.spi.
RowSet
;
import
com.dianping.bee.engine.spi.
TableProvider
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
public
class
DefaultMultiTableStatement
implements
MultiTableStatement
{
private
List
<
String
>
m_tableNam
es
;
private
List
<
TableProvider
>
m_tabl
es
;
private
RowFilter
m_rowFilter
;
...
...
@@ -33,8 +34,8 @@ public class DefaultMultiTableStatement implements MultiTableStatement {
}
@Override
public
List
<
String
>
getTableNam
es
()
{
return
m_table
Name
s
;
public
List
<
TableProvider
>
getTabl
es
()
{
return
m_tables
;
}
@Override
...
...
@@ -53,8 +54,8 @@ public class DefaultMultiTableStatement implements MultiTableStatement {
}
@Override
public
void
setTable
Names
(
List
<
String
>
tableNam
es
)
{
m_table
Names
=
tableNam
es
;
public
void
setTable
s
(
List
<
TableProvider
>
tabl
es
)
{
m_table
s
=
tabl
es
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultRowFilter.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi.internal
;
import
java.util.List
;
import
com.alibaba.cobar.parser.ast.expression.Expression
;
import
com.alibaba.cobar.parser.visitor.MySQLOutputASTVisitor
;
import
com.dianping.bee.engine.spi.RowFilter
;
import
com.dianping.bee.engine.spi.meta.Row
;
public
class
DefaultRowFilter
implements
RowFilter
{
private
Expression
m_expr
;
@Override
public
boolean
filter
(
List
<
Object
>
values
)
{
return
fals
e
;
public
boolean
filter
(
Row
row
)
{
return
tru
e
;
}
@Override
...
...
@@ -21,7 +20,7 @@ public class DefaultRowFilter implements RowFilter {
public
String
toString
()
{
MySQLOutputASTVisitor
visitor
=
new
MySQLOutputASTVisitor
(
new
StringBuilder
());
m_expr
.
accept
(
visitor
);
return
visitor
.
getSql
();
}
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultSingleTableStatement.java
浏览文件 @
bc221d62
...
...
@@ -2,14 +2,15 @@ package com.dianping.bee.engine.spi.internal;
import
java.util.List
;
import
com.dianping.bee.engine.spi.Index
;
import
com.dianping.bee.engine.spi.RowFilter
;
import
com.dianping.bee.engine.spi.RowSet
;
import
com.dianping.bee.engine.spi.SingleTableStatement
;
import
com.dianping.bee.engine.spi.TableProvider
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
public
class
DefaultSingleTableStatement
implements
SingleTableStatement
{
private
String
m_tableNam
e
;
private
TableProvider
m_tabl
e
;
private
RowFilter
m_rowFilter
;
...
...
@@ -33,8 +34,8 @@ public class DefaultSingleTableStatement implements SingleTableStatement {
}
@Override
public
String
getTableNam
e
()
{
return
m_table
Name
;
public
TableProvider
getTabl
e
()
{
return
m_table
;
}
@Override
...
...
@@ -53,12 +54,27 @@ public class DefaultSingleTableStatement implements SingleTableStatement {
}
@Override
public
void
setTable
Name
(
String
tableNam
e
)
{
m_table
Name
=
tableNam
e
;
public
void
setTable
(
TableProvider
tabl
e
)
{
m_table
=
tabl
e
;
}
@Override
public
RowSet
query
()
{
// Query By Index
RowSet
providerRowSet
=
m_table
.
queryByIndex
(
m_index
,
m_selectColumns
);
// Filter
providerRowSet
.
filter
(
m_rowFilter
);
// Build select columns
RowSet
returnRowSet
=
buildReturnRowSet
(
providerRowSet
);
return
returnRowSet
;
}
/**
* @param providerRowSet
* @return
*/
private
RowSet
buildReturnRowSet
(
RowSet
providerRowSet
)
{
return
null
;
}
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultStatementManager.java
浏览文件 @
bc221d62
...
...
@@ -34,7 +34,7 @@ public class DefaultStatementManager extends ContainerHolder implements Statemen
private
Statement
parseSQL
(
String
sql
)
throws
SQLSyntaxErrorException
{
SQLStatement
statement
=
SQLParserDelegate
.
parse
(
sql
);
DefaultStatementVisitor
defaultVisitor
=
lookup
(
DefaultStatementVisitor
.
class
);
DefaultStatementVisitor
defaultVisitor
=
new
DefaultStatementVisitor
(
);
statement
.
accept
(
defaultVisitor
);
if
(
defaultVisitor
.
getTableAlias
().
size
()
>
1
)
{
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatementVisitor.java
浏览文件 @
bc221d62
...
...
@@ -65,7 +65,7 @@ public class SingleTableStatementVisitor extends EmptySQLASTVisitor {
throw
new
RuntimeException
(
"Not a single table query!"
);
}
m_stmt
.
setTable
Name
(
m_tableName
);
m_stmt
.
setTable
(
m_helper
.
findTable
(
m_tableName
)
);
// for select clause
m_clause
=
Clause
.
SELECT
;
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/TableHelper.java
浏览文件 @
bc221d62
...
...
@@ -2,10 +2,10 @@ package com.dianping.bee.engine.spi.internal;
import
java.util.List
;
import
com.dianping.bee.engine.spi.Index
;
import
com.dianping.bee.engine.spi.TableProvider
;
import
com.dianping.bee.engine.spi.TableProviderManager
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.site.lookup.annotation.Inject
;
public
class
TableHelper
{
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/Cell.java
→
bee-engine/src/main/java/com/dianping/bee/engine/spi/
meta/
Cell.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
package
com.dianping.bee.engine.spi
.meta
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
public
interface
Cell
{
public
ColumnMeta
getMeta
();
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/ColumnMeta.java
浏览文件 @
bc221d62
...
...
@@ -4,6 +4,4 @@ public interface ColumnMeta {
public
String
getName
();
public
Class
<?>
getType
();
public
int
getCobarType
();
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/Index.java
→
bee-engine/src/main/java/com/dianping/bee/engine/spi/
meta/
Index.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
package
com.dianping.bee.engine.spi
.meta
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
public
interface
Index
{
public
int
getLength
();
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/Row.java
→
bee-engine/src/main/java/com/dianping/bee/engine/spi/
meta/
Row.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
package
com.dianping.bee.engine.spi.meta
;
public
interface
Row
{
public
Cell
getCell
(
int
colIndex
);
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/RowSet.java
→
bee-engine/src/main/java/com/dianping/bee/engine/spi/
meta/
RowSet.java
浏览文件 @
bc221d62
package
com.dianping.bee.engine.spi
;
package
com.dianping.bee.engine.spi
.meta
;
import
com.dianping.bee.engine.spi.
meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.
RowFilter
;
public
interface
RowSet
{
/**
* @param rowFilter
*/
public
void
filter
(
RowFilter
rowFilter
);
public
ColumnMeta
getColumn
(
int
colIndex
);
public
int
getColumns
();
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultCell.java
0 → 100644
浏览文件 @
bc221d62
/**
* Project: bee-engine
*
* File Created at 2012-8-23
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.engine.spi.meta.internal
;
import
com.dianping.bee.engine.spi.meta.Cell
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
class
DefaultCell
implements
Cell
{
private
ColumnMeta
m_columnMeta
;
private
Object
m_value
;
public
DefaultCell
(
ColumnMeta
columnMeta
,
Object
value
){
this
.
m_columnMeta
=
columnMeta
;
this
.
m_value
=
value
;
}
@Override
public
ColumnMeta
getMeta
()
{
return
m_columnMeta
;
}
@Override
public
Object
getValue
()
{
return
m_value
;
}
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultRow.java
0 → 100644
浏览文件 @
bc221d62
/**
* Project: bee-engine
*
* File Created at 2012-8-23
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.engine.spi.meta.internal
;
import
com.dianping.bee.engine.spi.meta.Cell
;
import
com.dianping.bee.engine.spi.meta.Row
;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
class
DefaultRow
implements
Row
{
private
Cell
[]
m_cells
;
public
DefaultRow
(
Cell
[]
cells
){
this
.
m_cells
=
cells
;
}
@Override
public
Cell
getCell
(
int
colIndex
)
{
return
m_cells
[
colIndex
];
}
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/meta/internal/DefaultRowSet.java
0 → 100644
浏览文件 @
bc221d62
/**
* Project: bee-engine
*
* File Created at 2012-8-23
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.engine.spi.meta.internal
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
import
com.dianping.bee.engine.spi.RowFilter
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Row
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
class
DefaultRowSet
implements
RowSet
{
public
DefaultRowSet
(
List
<
ColumnMeta
>
columnMetas
)
{
this
.
m_columnMetas
=
columnMetas
;
this
.
m_rows
=
new
ArrayList
<
Row
>();
}
private
List
<
ColumnMeta
>
m_columnMetas
;
private
List
<
Row
>
m_rows
;
public
void
addRow
(
Row
row
)
{
this
.
m_rows
.
add
(
row
);
}
@Override
public
ColumnMeta
getColumn
(
int
colIndex
)
{
return
m_columnMetas
.
get
(
colIndex
);
}
@Override
public
int
getColumns
()
{
return
m_columnMetas
.
size
();
}
@Override
public
Row
getRow
(
int
rowIndex
)
{
return
m_rows
.
get
(
rowIndex
);
}
@Override
public
int
getRows
()
{
return
m_rows
.
size
();
}
@Override
public
void
filter
(
RowFilter
rowFilter
)
{
Iterator
<
Row
>
it
=
m_rows
.
iterator
();
while
(
it
.
hasNext
())
{
Row
row
=
it
.
next
();
if
(
rowFilter
.
filter
(
row
))
{
it
.
remove
();
}
}
}
}
bee-engine/src/main/java/com/dianping/bee/engine/visitor/DefaultVisitor.java
已删除
100644 → 0
浏览文件 @
06f03b7c
此差异已折叠。
点击以展开。
bee-engine/src/main/java/com/dianping/bee/server/SelectHandler.java
浏览文件 @
bc221d62
...
...
@@ -35,18 +35,39 @@ import com.alibaba.cobar.server.response.SelectVersion;
import
com.alibaba.cobar.server.response.SelectVersionComment
;
import
com.alibaba.cobar.util.IntegerUtil
;
import
com.alibaba.cobar.util.StringUtil
;
import
com.dianping.bee.engine.spi.Cell
;
import
com.dianping.bee.engine.spi.Row
;
import
com.dianping.bee.engine.spi.RowSet
;
import
com.dianping.bee.engine.spi.Statement
;
import
com.dianping.bee.engine.spi.StatementManager
;
import
com.dianping.bee.engine.spi.meta.Cell
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Row
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
import
com.site.lookup.annotation.Inject
;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public
class
SelectHandler
{
private
static
int
convertJavaTypeToFieldType
(
Class
<?>
clazz
)
{
String
simpleClassName
=
clazz
.
getSimpleName
();
if
(
"String"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_STRING
;
}
else
if
(
"int"
.
equals
(
simpleClassName
)
||
"Integer"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_INT24
;
}
else
if
(
"long"
.
equals
(
simpleClassName
)
||
"Long"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_LONG
;
}
else
if
(
"float"
.
equals
(
simpleClassName
)
||
"Float"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_FLOAT
;
}
else
if
(
"double"
.
equals
(
simpleClassName
)
||
"Double"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_DOUBLE
;
}
else
if
(
"Date"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_DATE
;
}
else
if
(
"Timestamp"
.
equals
(
simpleClassName
))
{
return
Fields
.
FIELD_TYPE_TIMESTAMP
;
}
else
{
return
Fields
.
FIELD_TYPE_STRING
;
}
}
@Inject
private
StatementManager
m_manager
;
...
...
@@ -59,8 +80,7 @@ public class SelectHandler {
ColumnMeta
column
=
rowset
.
getColumn
(
i
);
Cell
cell
=
row
.
getCell
(
i
);
String
value
=
cell
.
getValue
().
toString
();
switch
(
column
.
getCobarType
())
{
switch
(
convertJavaTypeToFieldType
(
column
.
getType
()))
{
case
Fields
.
FIELD_TYPE_STRING
:
packet
.
add
(
StringUtil
.
encode
(
value
,
charset
));
break
;
...
...
@@ -95,6 +115,7 @@ public class SelectHandler {
default
:
packet
.
add
(
StringUtil
.
encode
(
value
,
charset
));
}
}
return
packet
;
}
...
...
@@ -187,7 +208,8 @@ public class SelectHandler {
int
columnIndex
=
0
;
FieldPacket
[]
fields
=
new
FieldPacket
[
fieldCount
];
for
(
int
i
=
0
;
i
<
fieldCount
;
i
++)
{
fields
[
columnIndex
]
=
PacketUtil
.
getField
(
rowset
.
getColumn
(
i
).
getName
(),
rowset
.
getColumn
(
i
).
getCobarType
());
fields
[
columnIndex
]
=
PacketUtil
.
getField
(
rowset
.
getColumn
(
i
).
getName
(),
convertJavaTypeToFieldType
(
rowset
.
getColumn
(
i
).
getType
()));
fields
[
columnIndex
++].
packetId
=
++
packetId
;
}
eof
.
packetId
=
++
packetId
;
...
...
bee-engine/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
bc221d62
...
...
@@ -22,8 +22,13 @@
<implementation>
com.dianping.bee.engine.spi.internal.DefaultStatementManager
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.Statement
</role>
<implementation>
com.dianping.bee.engine.spi.internal.DefaultStatement
</implementation>
<role>
com.dianping.bee.engine.spi.SingleTableStatement
</role>
<implementation>
com.dianping.bee.engine.spi.internal.DefaultSingleTableStatement
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
</component>
<component>
<role>
com.dianping.bee.engine.spi.MultiTableStatement
</role>
<implementation>
com.dianping.bee.engine.spi.internal.DefaultMultiTableStatement
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
</component>
<component>
...
...
@@ -49,12 +54,47 @@
<role>
com.dianping.bee.engine.spi.internal.TableHelper
</role>
</requirement>
<requirement>
<role>
com.dianping.bee.engine.spi.Statement
</role>
<role>
com.dianping.bee.engine.spi.S
ingleTableS
tatement
</role>
</requirement>
<requirement>
<role>
com.dianping.bee.engine.spi.RowFilter
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.bee.engine.spi.internal.MultiTableStatementVisitor
</role>
<implementation>
com.dianping.bee.engine.spi.internal.MultiTableStatementVisitor
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<requirements>
<requirement>
<role>
com.dianping.bee.engine.spi.internal.TableHelper
</role>
</requirement>
<requirement>
<role>
com.dianping.bee.engine.spi.MultiTableStatement
</role>
</requirement>
<requirement>
<role>
com.dianping.bee.engine.spi.RowFilter
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.bee.server.SelectHandler
</role>
<implementation>
com.dianping.bee.server.SelectHandler
</implementation>
<requirements>
<requirement>
<role>
com.dianping.bee.engine.spi.StatementManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.bee.server.SimpleServerQueryHandler
</role>
<implementation>
com.dianping.bee.server.SimpleServerQueryHandler
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<requirements>
<requirement>
<role>
com.dianping.bee.server.SelectHandler
</role>
</requirement>
</requirements>
</component>
</components>
</plexus>
bee-engine/src/test/java/com/dianping/bee/db/CatDatabase.java
浏览文件 @
bc221d62
package
com.dianping.bee.db
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.lang3.RandomStringUtils
;
import
com.dianping.bee.engine.spi.DatabaseProvider
;
import
com.dianping.bee.engine.spi.Index
;
import
com.dianping.bee.engine.spi.TableProvider
;
import
com.dianping.bee.engine.spi.meta.Cell
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Index
;
import
com.dianping.bee.engine.spi.meta.Row
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
import
com.dianping.bee.engine.spi.meta.internal.DefaultCell
;
import
com.dianping.bee.engine.spi.meta.internal.DefaultRow
;
import
com.dianping.bee.engine.spi.meta.internal.DefaultRowSet
;
public
class
CatDatabase
implements
DatabaseProvider
{
@Override
...
...
@@ -55,6 +66,22 @@ public class CatDatabase implements DatabaseProvider {
public
String
getName
()
{
return
m_name
;
}
@Override
public
RowSet
queryByIndex
(
Index
index
,
List
<
ColumnMeta
>
selectColumns
)
{
List
<
ColumnMeta
>
columns
=
new
ArrayList
<
ColumnMeta
>();
columns
.
addAll
(
selectColumns
);
DefaultRowSet
rowSet
=
new
DefaultRowSet
(
columns
);
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
Cell
[]
cells
=
new
Cell
[
columns
.
size
()];
for
(
int
j
=
0
;
j
<
cells
.
length
;
j
++){
cells
[
j
]
=
new
DefaultCell
(
CatDatabase
.
TransactionColumn
.
valueOf
(
columns
.
get
(
j
).
getName
()),
RandomStringUtils
.
randomAlphanumeric
(
5
));
}
Row
row
=
new
DefaultRow
(
cells
);
rowSet
.
addRow
(
row
);
}
return
rowSet
;
}
}
public
static
enum
TransactionColumn
implements
ColumnMeta
{
...
...
@@ -103,11 +130,6 @@ public class CatDatabase implements DatabaseProvider {
return
m_type
;
}
@Override
public
int
getCobarType
()
{
// TODO
return
0
;
}
}
public
static
enum
TransactionIndex
implements
Index
{
...
...
@@ -121,7 +143,8 @@ public class CatDatabase implements DatabaseProvider {
int
length
=
args
.
length
;
if
(
length
%
2
!=
0
)
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Parameters should be paired for %s(%s)!"
,
getClass
(),
name
()));
throw
new
IllegalArgumentException
(
String
.
format
(
"Parameters should be paired for %s(%s)!"
,
getClass
(),
name
()));
}
m_columns
=
new
ColumnMeta
[
length
/
2
];
...
...
bee-engine/src/test/java/com/dianping/bee/engine/spi/SpiTest.java
浏览文件 @
bc221d62
...
...
@@ -4,7 +4,10 @@ import org.junit.Test;
import
org.junit.runner.RunWith
;
import
org.junit.runners.JUnit4
;
import
com.dianping.bee.engine.spi.meta.Cell
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.Row
;
import
com.dianping.bee.engine.spi.meta.RowSet
;
import
com.site.lookup.ComponentTestCase
;
@RunWith
(
JUnit4
.
class
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录