svn commit: r940463 - /ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java

2010-05-03 Thread jgbutler
Author: jgbutler
Date: Mon May  3 14:13:58 2010
New Revision: 940463

URL: http://svn.apache.org/viewvc?rev=940463view=rev
Log:
Add general SqlBuilder

Added:

ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java

Added: 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java?rev=940463view=auto
==
--- 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java 
(added)
+++ 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/jdbc/SqlBuilder.java 
Mon May  3 14:13:58 2010
@@ -0,0 +1,244 @@
+package org.apache.ibatis.jdbc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SqlBuilder {
+  private static final String AND = ) \nAND (;
+  private static final String OR = ) \nOR (;
+
+  private static final ThreadLocalSQL localSQL = new ThreadLocalSQL();
+
+  public static void BEGIN() {
+RESET();
+  }
+
+  public static void RESET() {
+localSQL.set(new SQL());
+  }
+
+  public static void UPDATE(String table) {
+sql().statementType = SQL.StatementType.UPDATE;
+sql().tables.add(table);
+  }
+
+  public static void SET(String sets) {
+sql().sets.add(sets);
+  }
+
+  public static String SQL() {
+try {
+  return sql().sql();
+} finally {
+RESET();
+}
+  }
+
+  public static void INSERT_INTO(String tableName) {
+sql().statementType = SQL.StatementType.INSERT;
+sql().tables.add(tableName);
+  }
+
+  public static void VALUES(String columns, String values) {
+sql().columns.add(columns);
+sql().values.add(values);
+  }
+
+  public static void SELECT(String columns) {
+sql().statementType = SQL.StatementType.SELECT;
+sql().select.add(columns);
+  }
+
+  public static void SELECT_DISTINCT(String columns) {
+sql().distinct = true;
+SELECT(columns);
+  }
+
+  public static void DELETE_FROM(String table) {
+sql().statementType = SQL.StatementType.DELETE;
+sql().tables.add(table);
+  }
+
+  public static void FROM(String table) {
+sql().tables.add(table);
+  }
+
+  public static void JOIN(String join) {
+sql().join.add(join);
+  }
+
+  public static void INNER_JOIN(String join) {
+sql().innerJoin.add(join);
+  }
+
+  public static void LEFT_OUTER_JOIN(String join) {
+sql().leftOuterJoin.add(join);
+  }
+
+  public static void RIGHT_OUTER_JOIN(String join) {
+sql().rightOuterJoin.add(join);
+  }
+
+  public static void OUTER_JOIN(String join) {
+sql().outerJoin.add(join);
+  }
+
+  public static void WHERE(String conditions) {
+sql().where.add(conditions);
+sql().lastList = sql().where;
+  }
+
+  public static void OR() {
+sql().lastList.add(OR);
+  }
+
+  public static void AND() {
+sql().lastList.add(AND);
+  }
+
+  public static void GROUP_BY(String columns) {
+sql().groupBy.add(columns);
+  }
+
+  public static void HAVING(String conditions) {
+sql().having.add(conditions);
+sql().lastList = sql().having;
+  }
+
+  public static void ORDER_BY(String columns) {
+sql().orderBy.add(columns);
+  }
+
+  private static SQL sql() {
+SQL sql = localSQL.get();
+if (sql == null) {
+  RESET();
+  sql = localSQL.get();
+}
+return sql;
+  }
+
+  private static class SQL {
+public enum StatementType {
+DELETE,
+INSERT,
+SELECT,
+UPDATE
+}
+
+StatementType statementType;
+ListString sets = new ArrayListString();
+ListString select = new ArrayListString();
+ListString tables = new ArrayListString();
+ListString join = new ArrayListString();
+ListString innerJoin = new ArrayListString();
+ListString outerJoin = new ArrayListString();
+ListString leftOuterJoin = new ArrayListString();
+ListString rightOuterJoin = new ArrayListString();
+ListString where = new ArrayListString();
+ListString having = new ArrayListString();
+ListString groupBy = new ArrayListString();
+ListString orderBy = new ArrayListString();
+ListString lastList = new ArrayListString();
+ListString columns = new ArrayListString();
+ListString values = new ArrayListString();
+boolean distinct;
+
+private void sqlClause(StringBuilder builder, String keyword, ListString 
parts, String open, String close, String conjunction) {
+  if (!parts.isEmpty()) {
+if (builder.length()  0) builder.append(\n);
+builder.append(keyword);
+builder.append( );
+builder.append(open);
+String last = ;
+for (int i = 0, n = parts.size(); i  n; i++) {
+  String part = parts.get(i);
+  if (i  0  !part.equals(AND)  !part.equals(OR)  
!last.equals(AND)  !last.equals(OR)) {
+builder.append(conjunction);
+  }
+  builder.append(part);

svn commit: r940489 - in /ibatis/java/ibatis-3/trunk/doc/en: iBATIS-3-User-Guide.doc iBATIS-3-User-Guide.pdf

2010-05-03 Thread jgbutler
Author: jgbutler
Date: Mon May  3 15:52:16 2010
New Revision: 940489

URL: http://svn.apache.org/viewvc?rev=940489view=rev
Log:
Doc updates for SqlBuilder

Modified:
ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc
ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf

Modified: ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc?rev=940489r1=940488r2=940489view=diff
==
Binary files - no diff available.

Modified: ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf?rev=940489r1=940488r2=940489view=diff
==
Binary files - no diff available.




svn commit: r940510 - in /ibatis/java/ibatis-3/trunk/doc/en: iBATIS-3-User-Guide.doc iBATIS-3-User-Guide.pdf

2010-05-03 Thread jgbutler
Author: jgbutler
Date: Mon May  3 16:53:03 2010
New Revision: 940510

URL: http://svn.apache.org/viewvc?rev=940510view=rev
Log:
Doc updates for SqlBuilder

Modified:
ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc
ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf

Modified: ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.doc?rev=940510r1=940509r2=940510view=diff
==
Binary files - no diff available.

Modified: ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf?rev=940510r1=940509r2=940510view=diff
==
Binary files - no diff available.