You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/03/31 07:02:47 UTC
svn commit: r760334 - in /ibatis/trunk/java/ibatis-3: TODO
ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java
Author: cbegin
Date: Tue Mar 31 05:02:46 2009
New Revision: 760334
URL: http://svn.apache.org/viewvc?rev=760334&view=rev
Log:
Added some code for thought for new dynamic tag implementation
Modified:
ibatis/trunk/java/ibatis-3/TODO
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java
Modified: ibatis/trunk/java/ibatis-3/TODO
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=760334&r1=760333&r2=760334&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Tue Mar 31 05:02:46 2009
@@ -13,6 +13,7 @@
<choose>
<when prepend test>
+ <when prepend test>
<otherwise prepend>
<if prepend test>
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java?rev=760334&r1=760333&r2=760334&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/DynamicSqlSource.java Tue Mar 31 05:02:46 2009
@@ -2,10 +2,80 @@
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.SqlSource;
+import org.apache.ibatis.mapping.Configuration;
+
+import java.util.List;
public class DynamicSqlSource implements SqlSource {
+ private Configuration configuration;
+
+ public DynamicSqlSource(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
public BoundSql getBoundSql(Object parameterObject) {
- return null;
+ String sql = "";
+ SqlSourceParser sqlSourceParser = new SqlSourceParser(configuration);
+ SqlSource sqlSource = sqlSourceParser.parse(sql);
+ return sqlSource.getBoundSql(parameterObject);
+ }
+
+ public static interface SqlNode {
+ String getString(Object parameterObject);
+ }
+
+ public static class StaticSqlNode implements SqlNode {
+ private String sql;
+
+ public StaticSqlNode(String sql) {
+ this.sql = sql;
+ }
+
+ public String getString(Object parameterObject) {
+ return sql;
+ }
}
+
+ public static class ForEachSqlNode implements SqlNode {
+ private List collection;
+ private List<SqlNode> childSqlNodes;
+
+ public ForEachSqlNode(List collection, List<SqlNode> childSqlNodes) {
+ this.collection = collection;
+ this.childSqlNodes = childSqlNodes;
+ }
+
+ public String getString(Object parameterObject) {
+ StringBuilder builder = new StringBuilder();
+ for (Object o : collection) {
+ for (SqlNode sqlNode : childSqlNodes) {
+ builder.append(sqlNode.getString(parameterObject));
+ }
+ }
+ return builder.toString();
+ }
+ }
+
+ public static class IfSqlNode implements SqlNode {
+ private boolean test;
+ private List<SqlNode> childSqlNodes;
+
+ public IfSqlNode(boolean test, List<SqlNode> childSqlNodes) {
+ this.test = test;
+ this.childSqlNodes = childSqlNodes;
+ }
+
+ public String getString(Object parameterObject) {
+ StringBuilder builder = new StringBuilder();
+ if (test) {
+ for (SqlNode sqlNode : childSqlNodes) {
+ builder.append(sqlNode.getString(parameterObject));
+ }
+ }
+ return builder.toString();
+ }
+ }
+
+
}