Author: cbegin
Date: Sat Apr 4 22:47:52 2009
New Revision: 762028
URL: http://svn.apache.org/viewvc?rev=762028&view=rev
Log:
more dynamic SQL thoughts in code form.
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ConditionalSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicContext.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicSqlSource.java
- copied, changed from r762003,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/DynamicSqlSource.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ForEachSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/IfSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/MixedSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/TextSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-config.dtd
- copied unchanged from r762003,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-config-3.dtd
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd
- copied unchanged from r762003,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-mapper-3.dtd
Removed:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/DynamicSqlSource.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-config-3.dtd
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-mapper-3.dtd
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
ibatis/trunk/java/ibatis-3/version.properties
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java?rev=762028&r1=762027&r2=762028&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
Sat Apr 4 22:47:52 2009
@@ -15,8 +15,8 @@
*/
public class XMLMapperEntityResolver implements EntityResolver {
- private static final String MAPPER_CONFIG_DTD_RESOURCE =
"org/apache/ibatis/parser/xml/ibatis-config-3.dtd";
- private static final String MAPPER_DTD_RESOURCE =
"org/apache/ibatis/parser/xml/ibatis-mapper-3.dtd";
+ private static final String MAPPER_CONFIG_DTD_RESOURCE =
"org/apache/ibatis/parser/xml/ibatis-3-config.dtd";
+ private static final String MAPPER_DTD_RESOURCE =
"org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd";
private static final Map<String, String> doctypeMap = new HashMap<String,
String>();
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ConditionalSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ConditionalSqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ConditionalSqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ConditionalSqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,26 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+import java.util.List;
+
+public class ConditionalSqlNode implements SqlNode {
+ private MixedSqlNode defaultSqlNode;
+ private List<IfSqlNode> ifSqlNodes;
+
+ public ConditionalSqlNode(List<IfSqlNode> ifSqlNodes, MixedSqlNode
defaultSqlNode) {
+ this.ifSqlNodes = ifSqlNodes;
+ this.defaultSqlNode = defaultSqlNode;
+ }
+
+ public boolean apply(DynamicContext builder) {
+ for(SqlNode sqlNode : ifSqlNodes) {
+ if (sqlNode.apply(builder)) {
+ return true;
+ }
+ }
+ if (defaultSqlNode != null) {
+ defaultSqlNode.apply(builder);
+ return true;
+ }
+ return false;
+ }
+}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicContext.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicContext.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicContext.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicContext.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,14 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+public class DynamicContext {
+
+ private StringBuilder sqlBuilder = new StringBuilder();
+
+ public void appendSql(String sql) {
+ sqlBuilder.append(sql);
+ }
+
+ public String getSql() {
+ return sqlBuilder.toString();
+ }
+}
Copied:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicSqlSource.java
(from r762003,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/DynamicSqlSource.java)
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicSqlSource.java?p2=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicSqlSource.java&p1=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/DynamicSqlSource.java&r1=762003&r2=762028&rev=762028&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/DynamicSqlSource.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/DynamicSqlSource.java
Sat Apr 4 22:47:52 2009
@@ -1,82 +1,24 @@
-package org.apache.ibatis.parser.xml;
+package org.apache.ibatis.parser.xml.dynamic;
-import org.apache.ibatis.mapping.BoundSql;
-import org.apache.ibatis.mapping.SqlSource;
-import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.mapping.*;
import org.apache.ibatis.parser.SqlSourceParser;
-import java.util.List;
-
public class DynamicSqlSource implements SqlSource {
private Configuration configuration;
+ private SqlNode rootSqlNode;
- public DynamicSqlSource(Configuration configuration) {
+ public DynamicSqlSource(Configuration configuration, SqlNode rootSqlNode) {
this.configuration = configuration;
+ this.rootSqlNode = rootSqlNode;
}
public BoundSql getBoundSql(Object parameterObject) {
- String sql = "";
+ DynamicContext context = new DynamicContext();
+ rootSqlNode.apply(context);
SqlSourceParser sqlSourceParser = new SqlSourceParser(configuration);
- SqlSource sqlSource = sqlSourceParser.parse(sql);
+ SqlSource sqlSource = sqlSourceParser.parse(context.getSql());
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();
- }
- }
-
-
}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ForEachSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ForEachSqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ForEachSqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/ForEachSqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,19 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+public class ForEachSqlNode implements SqlNode {
+ private Iterable collection;
+ private MixedSqlNode contents;
+
+ public ForEachSqlNode(Iterable collection, MixedSqlNode contents) {
+ this.collection = collection;
+ this.contents = contents;
+ }
+
+ public boolean apply(DynamicContext builder) {
+ for (Object o : collection) {
+ contents.apply(builder);
+ }
+ return true;
+ }
+
+}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/IfSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/IfSqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/IfSqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/IfSqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,20 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+public class IfSqlNode implements SqlNode {
+ private boolean test;
+ private MixedSqlNode contents;
+
+ public IfSqlNode(String test, MixedSqlNode contents) {
+ this.test = Boolean.valueOf(test);
+ this.contents = contents;
+ }
+
+ public boolean apply(DynamicContext builder) {
+ if (test) {
+ contents.apply(builder);
+ return true;
+ }
+ return false;
+ }
+
+}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/MixedSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/MixedSqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/MixedSqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/MixedSqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,18 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+import java.util.List;
+
+public class MixedSqlNode implements SqlNode {
+ private List<SqlNode> contents;
+
+ public MixedSqlNode(List<SqlNode> contents) {
+ this.contents = contents;
+ }
+
+ public boolean apply(DynamicContext builder) {
+ for (SqlNode sqlNode : contents) {
+ sqlNode.apply(builder);
+ }
+ return true;
+ }
+}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,5 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+public interface SqlNode {
+ boolean apply(DynamicContext builder);
+}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/TextSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/TextSqlNode.java?rev=762028&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/TextSqlNode.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/TextSqlNode.java
Sat Apr 4 22:47:52 2009
@@ -0,0 +1,15 @@
+package org.apache.ibatis.parser.xml.dynamic;
+
+public class TextSqlNode implements SqlNode {
+ private String text;
+
+ public TextSqlNode(String text) {
+ this.text = text;
+ }
+
+ public boolean apply(DynamicContext builder) {
+ builder.appendSql(text);
+ return true;
+ }
+}
+
Modified: ibatis/trunk/java/ibatis-3/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/version.properties?rev=762028&r1=762027&r2=762028&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/version.properties (original)
+++ ibatis/trunk/java/ibatis-3/version.properties Sat Apr 4 22:47:52 2009
@@ -1,5 +1,5 @@
#Build version info
-#Sun Mar 22 20:04:46 MDT 2009
+#Sat Apr 04 14:59:12 MDT 2009
version=3.0.0
-buildDate=2009/03/22 20\:04
-buildNum=146
+buildDate=2009/04/04 14\:59
+buildNum=148