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


Reply via email to