Author: cbegin
Date: Sat Dec 13 14:51:46 2008
New Revision: 726284

URL: http://svn.apache.org/viewvc?rev=726284&view=rev
Log:
added insert/update/delete and commit/end to the SqlSession interface and 
implementation

Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java?rev=726284&r1=726283&r2=726284&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
 Sat Dec 13 14:51:46 2008
@@ -8,10 +8,23 @@
 
   Object selectOne(String statement);
   Object selectOne(String statement, Object parameter);
+
   List selectList(String statement);
   List selectList(String statement, Object parameter);
   List selectList(String statement, Object parameter, int offset, int limit);
   List selectList(String statement, Object parameter, int offset, int limit, 
ResultHandler handler);
+
+  Object insert(String statement);
+  Object insert(String statement, Object parameter);
+
+  int update(String statement);
+  int update(String statement, Object parameter);
+
+  int delete(String statement);
+  int delete(String statement, Object parameter);
+
+  void commit();
+  void end();
   void close();
-  
+
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactory.java?rev=726284&r1=726283&r2=726284&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactory.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactory.java
 Sat Dec 13 14:51:46 2008
@@ -10,6 +10,7 @@
   SqlSession openSession(boolean autoCommit);
   SqlSession openSession(ExecutorType execType);
   SqlSession openSession(Connection connection);
+  SqlSession openSession(boolean autoCommit, ExecutorType execType);
   SqlSession openSession(Connection connection, ExecutorType execType);
   Configuration getConfiguration();
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java?rev=726284&r1=726283&r2=726284&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
 Sat Dec 13 14:51:46 2008
@@ -16,9 +16,12 @@
   private Configuration configuration;
   private Executor executor;
 
+  private boolean dirty;
+
   public DefaultSqlSession(Configuration configuration, Executor executor) {
     this.configuration = configuration;
     this.executor = executor;
+    this.dirty = false;
   }
 
   public Object selectOne(String statement) {
@@ -50,28 +53,67 @@
       MappedStatement ms = configuration.getMappedStatement(statement);
       return executor.query(ms, parameter , offset, limit, handler);
     } catch (SQLException e) {
-      throw ExceptionFactory.wrapSQLException("Error querying database.  
Cause: " + e, e);
+      throw ExceptionFactory.wrapException("Error querying database.  Cause: " 
+ e, e);
     }
   }
 
-  public void close() {
-    executor.close();
+  public Object insert(String statement) {
+    return insert(statement,null);
+  }
+
+  public Object insert(String statement, Object parameter) {
+    //TODO: Return selectKey or autogen key.
+    return update(statement,null);
+  }
+
+  public int update(String statement) {
+    return update(statement,null);
+  }
+
+  public int update(String statement, Object parameter) {
+    try {
+      //TODO: Need commitRequired option at the statement level
+      dirty = true;
+      MappedStatement ms = configuration.getMappedStatement(statement);
+      return executor.update(ms, parameter);
+    } catch (SQLException e) {
+      throw ExceptionFactory.wrapException("Error updating database.  Cause: " 
+ e, e);
+    }
+  }
+
+  public int delete(String statement) {
+    return update(statement,null);
+  }
+
+  public int delete(String statement, Object parameter) {
+    return update(statement,null);
   }
 
   public void commit() {
     try {
-      executor.commit(false);
+      executor.commit(dirty);
+      dirty = false;
     } catch (SQLException e) {
-      throw ExceptionFactory.wrapSQLException("Error committing transaction.  
Cause: " + e, e);
+      throw ExceptionFactory.wrapException("Error committing transaction.  
Cause: " + e, e);
     }
   }
 
-  public void rollback() {
+  public void end() {
     try {
-      executor.rollback(false);
+      executor.rollback(dirty);
+      dirty = false;
     } catch (SQLException e) {
-      throw ExceptionFactory.wrapSQLException("Error rolling back transaction. 
 Cause: " + e, e);
+      throw ExceptionFactory.wrapException("Error rolling back transaction.  
Cause: " + e, e);
     }
   }
 
+  public void close() {
+    try {
+      executor.close();
+    } catch (Exception e) {
+      throw ExceptionFactory.wrapException("Error closing transaction.  Cause: 
" + e, e);
+    }
+  }
+
+
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java?rev=726284&r1=726283&r2=726284&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
 Sat Dec 13 14:51:46 2008
@@ -45,7 +45,7 @@
       Executor executor = configuration.newExecutor(tx,execType);
       return new DefaultSqlSession(configuration, executor);
     } catch (SQLException e) {
-      throw ExceptionFactory.wrapSQLException("Error opening session.  Cause: 
" + e, e);
+      throw ExceptionFactory.wrapException("Error opening session.  Cause: " + 
e, e);
     }
   }
 
@@ -54,17 +54,21 @@
   }
 
   public SqlSession openSession(Connection connection, ExecutorType execType) {
-    boolean autoCommit;
     try {
-      autoCommit = connection.getAutoCommit();
-    } catch (SQLException e) {
-      // Failover to true, as most poor drivers
-      // or databases won't support transactions
-      autoCommit = true;
+      boolean autoCommit;
+      try {
+        autoCommit = connection.getAutoCommit();
+      } catch (SQLException e) {
+        // Failover to true, as most poor drivers
+        // or databases won't support transactions
+        autoCommit = true;
+      }
+      Transaction tx = transactionFactory.newTransaction(connection, 
autoCommit);
+      Executor executor = configuration.newExecutor(tx, execType);
+      return new DefaultSqlSession(configuration, executor);
+    } catch (Exception e) {
+      throw ExceptionFactory.wrapException("Error opening session.  Cause: " + 
e, e);
     }
-    Transaction tx = transactionFactory.newTransaction(connection, autoCommit);
-    Executor executor = configuration.newExecutor(tx, execType);
-    return new DefaultSqlSession(configuration, executor);
   }
 
   public Configuration getConfiguration() {

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java?rev=726284&r1=726283&r2=726284&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java
 Sat Dec 13 14:51:46 2008
@@ -4,7 +4,7 @@
 
 public class ExceptionFactory {
 
-  public static RuntimeException wrapSQLException(String message, SQLException 
e) {
+  public static RuntimeException wrapException(String message, Exception e) {
     return new RuntimeSqlException(message, e);
   }
 


Reply via email to