// Path: src/main/java/org/easyarch/slardar/jdbc/exec/ConnectionUtils.java
// public final class ConnectionUtils {
// 
//     public static void closeAll(Connection conn, Statement stmt,
//                                     ResultSet rs) {
//         try {
//             if (rs != null&&!rs.isClosed()){
//                 rs.close();
//             }
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         try {
//             if (stmt != null&&!stmt.isClosed())
//                 stmt.close();
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//         try {
//             if (conn!=null){
//                 if (!conn.isClosed()){
//                     conn.close();
//                     System.out.println("connection close from DBUtils "+conn.isClosed());
//                 }
//             }
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
// 
//     }
// 
//     public static void close(Connection conn) {
//         closeAll(conn, null, null);
//     }
// 
//     public static void close(ResultSet rs) {
//         closeAll(null, null, rs);
//     }
// 
//     public static void close(Statement stmt) {
//         closeAll(null,stmt,null);
//     }
// 
//     public static void beginTransaction(Connection conn){
//         beginTransaction(conn,Connection.TRANSACTION_READ_COMMITTED);
//     }
// 
//     public static void beginTransaction(Connection conn,int level){
//         if (conn == null){
//             new IllegalStateException("connection cannot be null!");
//         }
//         try {
//             conn.setAutoCommit(false);
//             conn.setTransactionIsolation(level);
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void commit(Connection conn){
//         try {
//             conn.commit();
//         } catch (SQLException e) {
//             e.printStackTrace();
//             rollBack(conn);
//         }
//     }
// 
//     public static void endTransaction(Connection conn){
//         endTransaction(conn,Connection.TRANSACTION_READ_COMMITTED);
//     }
// 
//     public static void endTransaction(Connection conn,int level){
//         if (conn == null){
//             new IllegalStateException("connection cannot be null!");
//         }
//         try {
//             conn.setAutoCommit(true);
//             conn.setTransactionIsolation(level);
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void rollBack(Connection conn){
//         try {
//             if (conn != null){
//                 conn.rollback();
//             }
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void rollBackAndClose(Connection conn){
//         if (conn != null){
//             try {
//                 conn.rollback();
//             } catch (SQLException e) {
//                 e.printStackTrace();
//             }finally {
//                 close(conn);
//             }
//         }
//     }
// 
//     public static boolean isClose(Connection connection){
//         try {
//             connection.isValid(1000);
//             return connection == null||connection.isClosed();
//         } catch (SQLException e) {
//             return false;
//         }
//     }
// 
//     public static boolean isValid(Connection connection){
//         try {
//             return connection == null||connection.isValid(3);
//         } catch (SQLException e) {
//             return false;
//         }
//     }
// 
// }


import org.easyarch.slardar.jdbc.exec.ConnectionUtils;
package org.easyarch.slardar.jdbc.pool;/**
 * Description : 
 * Created by YangZH on 16-11-7
 *  下午8:23
 */


/**
 * Description :
 * Created by code4j on 16-11-7
 * 下午8:23
 */

public class ProcessWatcher{
    static Runtime rt = Runtime.getRuntime();
    static{
        System.out.println("watcher is ready.");
        rt.addShutdownHook(new Thread() {
            public void run() {
//                System.out.println("programme exit,ready to close all dbcpool connections ... ");
//                System.out.println("connections count is :"+ RealCPool.getConnections().size());
                kill();
            }
        });
    }

    private static void kill() {
        for (ConnectionWrapper wrapper : RealCPool.getConnections()) {
// Path: src/main/java/org/easyarch/slardar/jdbc/exec/ConnectionUtils.java
// public final class ConnectionUtils {
// 
//     public static void closeAll(Connection conn, Statement stmt,
//                                     ResultSet rs) {
//         try {
//             if (rs != null&&!rs.isClosed()){
//                 rs.close();
//             }
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         try {
//             if (stmt != null&&!stmt.isClosed())
//                 stmt.close();
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//         try {
//             if (conn!=null){
//                 if (!conn.isClosed()){
//                     conn.close();
//                     System.out.println("connection close from DBUtils "+conn.isClosed());
//                 }
//             }
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
// 
//     }
// 
//     public static void close(Connection conn) {
//         closeAll(conn, null, null);
//     }
// 
//     public static void close(ResultSet rs) {
//         closeAll(null, null, rs);
//     }
// 
//     public static void close(Statement stmt) {
//         closeAll(null,stmt,null);
//     }
// 
//     public static void beginTransaction(Connection conn){
//         beginTransaction(conn,Connection.TRANSACTION_READ_COMMITTED);
//     }
// 
//     public static void beginTransaction(Connection conn,int level){
//         if (conn == null){
//             new IllegalStateException("connection cannot be null!");
//         }
//         try {
//             conn.setAutoCommit(false);
//             conn.setTransactionIsolation(level);
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void commit(Connection conn){
//         try {
//             conn.commit();
//         } catch (SQLException e) {
//             e.printStackTrace();
//             rollBack(conn);
//         }
//     }
// 
//     public static void endTransaction(Connection conn){
//         endTransaction(conn,Connection.TRANSACTION_READ_COMMITTED);
//     }
// 
//     public static void endTransaction(Connection conn,int level){
//         if (conn == null){
//             new IllegalStateException("connection cannot be null!");
//         }
//         try {
//             conn.setAutoCommit(true);
//             conn.setTransactionIsolation(level);
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void rollBack(Connection conn){
//         try {
//             if (conn != null){
//                 conn.rollback();
//             }
//         } catch (SQLException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static void rollBackAndClose(Connection conn){
//         if (conn != null){
//             try {
//                 conn.rollback();
//             } catch (SQLException e) {
//                 e.printStackTrace();
//             }finally {
//                 close(conn);
//             }
//         }
//     }
// 
//     public static boolean isClose(Connection connection){
//         try {
//             connection.isValid(1000);
//             return connection == null||connection.isClosed();
//         } catch (SQLException e) {
//             return false;
//         }
//     }
// 
//     public static boolean isValid(Connection connection){
//         try {
//             return connection == null||connection.isValid(3);
//         } catch (SQLException e) {
//             return false;
//         }
//     }
// 
// }


// Path: src/main/java/org/easyarch/slardar/jdbc/pool/ProcessWatcher.java
import org.easyarch.slardar.jdbc.exec.ConnectionUtils;

package org.easyarch.slardar.jdbc.pool;/**
 * Description : 
 * Created by YangZH on 16-11-7
 *  下午8:23
 */


/**
 * Description :
 * Created by code4j on 16-11-7
 * 下午8:23
 */

public class ProcessWatcher{
    static Runtime rt = Runtime.getRuntime();
    static{
        System.out.println("watcher is ready.");
        rt.addShutdownHook(new Thread() {
            public void run() {
//                System.out.println("programme exit,ready to close all dbcpool connections ... ");
//                System.out.println("connections count is :"+ RealCPool.getConnections().size());
                kill();
            }
        });
    }

    private static void kill() {
        for (ConnectionWrapper wrapper : RealCPool.getConnections()) {
            ConnectionUtils.close(wrapper.connection());