dbpoolman instead of connectionbroker
[mir.git] / source / mir / storage / Database.java
index 575d374..ec48710 100755 (executable)
@@ -12,6 +12,9 @@ import  com.javaexchange.dbConnectionBroker.*;
 import  mir.storage.StorageObject;
 import  mir.entity.*;
 import  mir.misc.*;
+import com.codestudio.sql.*;
+import com.codestudio.sql.*;
+import com.codestudio.util.*;
 
 
 /**
@@ -72,7 +75,7 @@ public class Database implements StorageObject {
       database_url=theAdaptor.getURL(database_username,database_password,database_host);
       theLog.printDebugInfo("adding Broker with: " +database_driver+":"+database_url  );
       MirConfig.addBroker(database_driver,database_url);
-      myBroker=MirConfig.getBroker();
+      //myBroker=MirConfig.getBroker();
     }
     catch (Exception e){
       theLog.printError("Bei Konstruktion von Database() with " + theAdaptorName + " -- " +e.toString());
@@ -433,14 +436,16 @@ public class Database implements StorageObject {
           if (rs.next())
             count = rs.getInt(1);
           rs.close();
+          //nothing in the table: return null
+          if(count<=0){
+            freeConnection(con, stmt);
+            return null;
+          }
         } else {
-          theLog.printError("Mh. Konnte nicht zaehlen: " + countSql);
+          theLog.printError("Could not count: " + countSql);
         }
       }
-      //nothing in the table: return null
-      if(count<=0){
-        return null;
-      }
+
       // hier select
       rs = executeSql(stmt, selectSql.toString());
       if (rs != null) {
@@ -521,11 +526,9 @@ public class Database implements StorageObject {
         }
       }
       if (cache != null && theResultHash.containsKey(thePKeyName) &&
-            (cache.containsKey((String)theResultHash.get(thePKeyName)) > -1)) {
-        //theLog.printDebugInfo("CACHE: (out) "+ theResultHash.get(thePKeyName)+ " :"+theTable);
+          (cache.containsKey((String)theResultHash.get(thePKeyName)) > -1)) {
         returnEntity = (Entity)cache.get((String)theResultHash.get(thePKeyName));
-      }
-      else {
+      } else {
         if (theEntityClass != null) {
           returnEntity = (Entity)theEntityClass.newInstance();
           returnEntity.setValues(theResultHash);
@@ -534,13 +537,11 @@ public class Database implements StorageObject {
             //theLog.printDebugInfo("CACHE: ( in) " + returnEntity.getId() + " :"+theTable);
             cache.put(returnEntity.getId(), returnEntity);
           }
-        }
-        else {
+        } else {
           throwStorageObjectException("Interner Fehler theEntityClass nicht gesetzt!");
         }
       }
-    }           // try
-    catch (IllegalAccessException e) {
+    } catch (IllegalAccessException e) {
       throwStorageObjectException("Kein Zugriff! -- " + e.toString());
     } catch (IOException e) {
       throwStorageObjectException("IOException! -- " + e.toString());
@@ -1045,13 +1046,30 @@ public class Database implements StorageObject {
       throwSQLException(sqe, "disconnectPool");
     }
   }
+  
+  public Connection getPooledCon() throws StorageObjectException {
+    try{
+      Class.forName("com.codestudio.sql.PoolMan").newInstance();
+    } catch (Exception e){
+      e.printStackTrace();
+      throw new StorageObjectException("Could not find the PoolMan Driver"+e.toString());
+    }
+    Connection con = null;
+    try{
+      con = SQLManager.getInstance().requestConnection();
+    } catch(SQLException e){
+      e.printStackTrace();
+      throw new StorageObjectException("No connection to the database");
+    }
+    return con;
+  }
 
   /**
    * Returns Connection-Object out of the PoolBroker.
    *
    * @return Connection Object.
    */
-  public Connection getPooledCon () throws StorageObjectException {
+  public Connection getPooledCon2() throws StorageObjectException {
     if (myBroker != null) {
       Connection con = myBroker.getConnection();
       if (con != null)
@@ -1066,7 +1084,7 @@ public class Database implements StorageObject {
    * @param con Connection zur Datenbank
    * @param stmt Statement-Objekt
    */
-  public void freeConnection (Connection con, Statement stmt)
+  public void freeConnection2 (Connection con, Statement stmt)
     throws StorageObjectException {
     try {
       if (stmt != null)
@@ -1082,6 +1100,12 @@ public class Database implements StorageObject {
       throw new StorageObjectException("Con was null!");
     }
   }
+  
+  public void freeConnection (Connection con, Statement stmt)
+    throws StorageObjectException {
+    SQLManager.getInstance().closeStatement(stmt);
+    SQLManager.getInstance().returnConnection(con);
+  }
 
   /**
    * Wertet SQLException aus und wirft dannach eine StorageObjectException
@@ -1123,7 +1147,7 @@ public class Database implements StorageObject {
   void throwStorageObjectException (String message) throws StorageObjectException {
     _throwStorageObjectException(null, message);
   }
-  
+
 }