Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.59 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package com.pac8.core.util;
  5.  
  6. import com.datastax.driver.core.ColumnDefinitions;
  7. import com.datastax.driver.core.ResultSet;
  8. import com.datastax.driver.core.Row;
  9. import com.datastax.driver.core.Session;
  10. import com.pac8.core.common.Log;
  11. import com.pac8.core.common.Pac8EnvConstants;
  12. import org.apache.commons.dbutils.DbUtils;
  13. import org.apache.commons.dbutils.QueryRunner;
  14. import org.apache.commons.dbutils.handlers.ArrayListHandler;
  15. import org.apache.commons.dbutils.handlers.BeanHandler;
  16. import org.apache.commons.dbutils.handlers.BeanListHandler;
  17.  
  18. import java.sql.Connection;
  19. import java.sql.DriverManager;
  20. import java.sql.SQLException;
  21. import java.sql.Statement;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24.  
  25. /**
  26.  * @author Alberto and Brajesh
  27.  *
  28.  */
  29. public class DatabaseUtil {
  30.  
  31.     private final static String CONNECTION_MYSQL_URL_DATABASE = Pac8EnvConstants.DB_MYSQL_HOST
  32.             + Pac8EnvConstants.DB_MYSQL_CONN;
  33.     private final static String CONNECTION_MYSQL_USERNAME = Pac8EnvConstants.DB_MYSQL_USERNAME;
  34.     private final static String CONNECTION_MYSQL_PASSWORD = Pac8EnvConstants.DB_MYSQL_PASSWORD;
  35.     private final static String CONNECTION_ORACLE_URL_DATABASE = Pac8EnvConstants.DB_ORACLE_HOST
  36.             + Pac8EnvConstants.DB_ORACLE_CONN;
  37.     private final static String CONNECTION_ORACLE_USERNAME = Pac8EnvConstants.DB_ORACLE_USERNAME;
  38.     private final static String CONNECTION_ORACLE_PASSWORD = Pac8EnvConstants.DB_ORACLE_PASSWORD;
  39.     private final static String CONNECTION_ORACLE_TMPSH_URL_DATABASE = Pac8EnvConstants.DB_ORACLE_TMPSH_HOST
  40.             + Pac8EnvConstants.DB_ORACLE_TMPSH_CONN;
  41.     private final static String CONNECTION_ORACLE_TMPSH_USERNAME = Pac8EnvConstants.DB_ORACLE_TMPSH_USERNAME;
  42.     private final static String CONNECTION_ORACLE_TMPSH_PASSWORD = Pac8EnvConstants.DB_ORACLE_TMPSH_PASSWORD;
  43.     private final static String CONNECTION_CASSANDRA_URL_DATABASE = Pac8EnvConstants.DB_CASSANDRA_HOST;
  44.     private final static String CONNECTION_CASSANDRA_USERNAME = Pac8EnvConstants.DB_CASSANDRA_USERNAME;
  45.     private final static String CONNECTION_CASSANDRA_PASSWORD = Pac8EnvConstants.DB_CASSANDRA_PASSWORD;
  46.     private final static String CONNECTION_CASSANDRA_KEYSPACE = Pac8EnvConstants.DB_CASSANDRA_KEYSPACE;
  47.  
  48.     private final static CassandraConnectorUtil client = new CassandraConnectorUtil();
  49.  
  50.     /**
  51.      * This methods returns a List of objects based on the Query you create. You
  52.      * can choose between Cassandra or MySQL DataBase.
  53.      *
  54.      * @param dB
  55.      *            String that said which DataBase you want to use.
  56.      * @param queryStatement
  57.      *            The SQL or CQL query that you will execute.
  58.      * @return A List with all the objects that return the Query.
  59.      * @throws SQLException
  60.      */
  61.     public static List<Object[]> runQueryToReturnObject(String dB,
  62.             String queryStatement) {
  63.  
  64.         List<Object[]> listObjects = new ArrayList<Object[]>();
  65.         Connection conn;
  66.  
  67.         switch (dB.toUpperCase()) {
  68.         case "MYSQL":
  69.             conn = createMySQLConnection();
  70.             listObjects = runQueryToReturnObjectList(conn, queryStatement);
  71.             break;
  72.         case "CASSANDRA":
  73.             createCassandraConnection();
  74.             listObjects = runQueryToReturnResultSetCassandra(queryStatement);
  75.             break;
  76.         case "MSSQL":
  77.             // add logic to MSSQL
  78.             break;
  79.         case "ORACLE":
  80.             conn = createOracleConnection();
  81.             listObjects = runQueryToReturnObjectList(conn, queryStatement);
  82.             break;
  83.         case "ORACLETMPSH":
  84.             conn = createOracleTmpshConnection();
  85.             listObjects = runQueryToReturnObjectList(conn, queryStatement);
  86.             break;
  87.  
  88.         default:
  89.             throw new IllegalStateException(
  90.                     "This method just accept \"MySQL\" or \"Cassandra\" or \"MSSQL\" as DataBase Parameter!");
  91.         }
  92.         return listObjects;
  93.  
  94.     }
  95.  
  96.     // This Method should include the MSSQL DB
  97.     public static <T> T runQueryToReturnBean(String dB, String sqlStatement,
  98.             Class<T> type) {
  99.  
  100.         Connection conn;
  101.         switch (dB.toUpperCase()) {
  102.         case "MYSQL":
  103.             conn = createMySQLConnection();
  104.             break;
  105.         case "ORACLE":
  106.             conn = createOracleConnection();
  107.             break;
  108.         case "ORACLETMPSH":
  109.             conn = createOracleTmpshConnection();
  110.             break;
  111.         default:
  112.             throw new IllegalStateException(
  113.                     "This method just accept \"MySQL\" or \"Oracle\" or \"MSSQL\" as DataBase Parameter!");
  114.         }
  115.  
  116.         return runQueryToReturnBean(conn, sqlStatement, type);
  117.     }
  118.  
  119.     // This Method should include the MSSQL DB
  120.     public static <T> List<T> runQueryToReturnBeanArray(String dB,
  121.             String sqlStatement, Class<T> type) {
  122.  
  123.         Connection conn;
  124.  
  125.         switch (dB.toUpperCase()) {
  126.         case "MYSQL":
  127.             conn = createMySQLConnection();
  128.             break;
  129.         case "ORACLE":
  130.             conn = createOracleConnection();
  131.             break;
  132.         case "ORACLETMPSH":
  133.             conn = createOracleTmpshConnection();
  134.             break;
  135.         default:
  136.             throw new IllegalStateException(
  137.                     "This method just accept \"MySQL\" or \"Oracle\" or \"MSSQL\" as DataBase Parameter!");
  138.         }
  139.         return runQueryToReturnBeanArray(conn, sqlStatement, type);
  140.     }
  141.  
  142.     public static int runUpdateQuery(String db, String query) {
  143.         int result;
  144.         Connection conn;
  145.         switch (db.toUpperCase()) {
  146.             case "MYSQL":
  147.                 conn = createMySQLConnection();
  148.                 break;
  149.             default:
  150.                 throw new IllegalStateException(
  151.                         "This method just accept \"MySQL\" as DataBase Parameter!");
  152.         }
  153.         try {
  154.             Statement st = conn.createStatement();
  155.             result = st.executeUpdate(query);
  156.         } catch (SQLException e) {
  157.             Log.error("SQLException : " + e.getMessage()
  158.                     + " occured while executing the SQL statement : "
  159.                     + query + "; Exception : " + e.toString());
  160.             throw new RuntimeException(e);
  161.         } finally {
  162.             DbUtils.closeQuietly(conn);
  163.         }
  164.         return result;
  165.     }
  166.  
  167.     private static Connection createMySQLConnection() {
  168.         DbUtils.loadDriver("com.mysql.jdbc.Driver");
  169.  
  170.         Connection conn = null;
  171.         try {
  172.             conn = DriverManager.getConnection(CONNECTION_MYSQL_URL_DATABASE,
  173.                     CONNECTION_MYSQL_USERNAME, CONNECTION_MYSQL_PASSWORD);
  174.  
  175.         } catch (SQLException e) {
  176.             Log.error("Failed to connect to\nHost : "
  177.                     + CONNECTION_MYSQL_URL_DATABASE + "\nUser Name : "
  178.                     + CONNECTION_MYSQL_USERNAME + "\nPassword : "
  179.                     + CONNECTION_MYSQL_PASSWORD);
  180.  
  181.         }
  182.         return conn;
  183.     }
  184.  
  185.     private static Connection createOracleConnection() {
  186.  
  187.         // Load the Driver class.
  188.         DbUtils.loadDriver("oracle.jdbc.driver.OracleDriver");
  189.         Connection conn;
  190.         // Create the connection using the static getConnection method
  191.         try {
  192.             conn = DriverManager.getConnection(CONNECTION_ORACLE_URL_DATABASE,
  193.                     CONNECTION_ORACLE_USERNAME, CONNECTION_ORACLE_PASSWORD);
  194.         } catch (SQLException e) {
  195.             Log.error("Failed to connect to\nHost : "
  196.                     + CONNECTION_ORACLE_URL_DATABASE + "\nUser Name : "
  197.                     + CONNECTION_ORACLE_USERNAME + "\nPassword : "
  198.                     + CONNECTION_ORACLE_PASSWORD);
  199.             throw new RuntimeException(e);
  200.         }
  201.         return conn;
  202.     }
  203.  
  204.     /**
  205.      * Needed a separate method to create the create Oracle Connection.
  206.      * Refactoring the above method was too risky
  207.      **/
  208.     private static Connection createOracleTmpshConnection() {
  209.  
  210.         // Load the Driver class.
  211.         DbUtils.loadDriver("oracle.jdbc.driver.OracleDriver");
  212.         Connection conn;
  213.         // Create the connection using the static getConnection method
  214.         try {
  215.             conn = DriverManager.getConnection(
  216.                     CONNECTION_ORACLE_TMPSH_URL_DATABASE,
  217.                     CONNECTION_ORACLE_TMPSH_USERNAME,
  218.                     CONNECTION_ORACLE_TMPSH_PASSWORD);
  219.         } catch (SQLException e) {
  220.             Log.error("Failed to connect to\nHost : "
  221.                     + CONNECTION_ORACLE_URL_DATABASE + "\nUser Name : "
  222.                     + CONNECTION_ORACLE_USERNAME + "\nPassword : "
  223.                     + CONNECTION_ORACLE_PASSWORD);
  224.             throw new RuntimeException(e);
  225.         }
  226.         return conn;
  227.     }
  228.  
  229.     private static void createCassandraConnection() {
  230.         try {
  231.             client.connect(CONNECTION_CASSANDRA_URL_DATABASE,
  232.                     Integer.parseInt(Pac8EnvConstants.DB_CASSANDRA_PORT),
  233.                     CONNECTION_CASSANDRA_USERNAME,
  234.                     CONNECTION_CASSANDRA_PASSWORD,
  235.                     CONNECTION_CASSANDRA_KEYSPACE);
  236.         } catch (Exception e) {
  237.             Log.error("Failed to connect to\nHost : "
  238.                     + CONNECTION_CASSANDRA_URL_DATABASE + "\nUser Name : "
  239.                     + CONNECTION_CASSANDRA_USERNAME + "\nPassword : "
  240.                     + CONNECTION_CASSANDRA_PASSWORD + "\nKeyspace : "
  241.                     + CONNECTION_CASSANDRA_KEYSPACE);
  242.  
  243.         }
  244.     }
  245.  
  246.     private static List<Object[]> runQueryToReturnObjectList(Connection conn,
  247.             String sqlStatement) {
  248.         try {
  249.             QueryRunner run = new QueryRunner();
  250.             return run.query(conn, sqlStatement, new ArrayListHandler());
  251.         } catch (SQLException e) {
  252.             Log.error("SQLException : " + e.getMessage()
  253.                     + " occured while executing the SQL statement : "
  254.                     + sqlStatement + "; Exception : " + e.toString());
  255.             throw new RuntimeException(e);
  256.         } finally {
  257.             DbUtils.closeQuietly(conn);
  258.         }
  259.     }
  260.  
  261.     private static List<Object[]> runQueryToReturnResultSetCassandra(
  262.             String cqlStatement) {
  263.  
  264.         List<Object[]> newlist = new ArrayList<Object[]>();
  265.         Session session = null;
  266.  
  267.         try {
  268.  
  269.             session = client.getSession();
  270.             ResultSet resultSet = session.execute(cqlStatement);
  271.  
  272.             ColumnDefinitions columnDefinitions = resultSet
  273.                     .getColumnDefinitions();
  274.  
  275.             int columnsSize = columnDefinitions.size();
  276.  
  277.             Object[] rowObject = new Object[columnsSize];
  278.  
  279.             for (Row r : resultSet) {
  280.                 rowObject = new Object[columnsSize];
  281.  
  282.                 for (int i = 0; i < columnsSize; i++) {
  283.                     rowObject[i] = r.getObject(i);
  284.                 }
  285.                 newlist.add(rowObject);
  286.             }
  287.  
  288.         } catch (Exception e) {
  289.             Log.error("CQLException : " + e.getMessage()
  290.                     + " occured while executing the CQL statement : "
  291.                     + cqlStatement + " Exception : " + e.toString());
  292.             throw new RuntimeException(e);
  293.         } finally {
  294.             client.closeSession(session);
  295.         }
  296.         return newlist;
  297.     }
  298.  
  299.     private static <T> T runQueryToReturnBean(Connection conn,
  300.             String sqlStatement, Class<T> type) {
  301.         try {
  302.             conn.setAutoCommit(true);
  303.             QueryRunner run = new QueryRunner();
  304.             return run.query(conn, sqlStatement, new BeanHandler<T>(type));
  305.         } catch (SQLException e) {
  306.             Log.error("SQLException : " + e.getMessage()
  307.                     + " occured while executing the SQL statement : "
  308.                     + sqlStatement + "; Exception : " + e.toString());
  309.             throw new RuntimeException(e);
  310.         } finally {
  311.             DbUtils.closeQuietly(conn);
  312.         }
  313.     }
  314.  
  315.     private static <T> List<T> runQueryToReturnBeanArray(Connection conn,
  316.             String sqlStatement, Class<T> type) {
  317.         try {
  318.             conn.setAutoCommit(true);
  319.             QueryRunner run = new QueryRunner();
  320.             return run.query(conn, sqlStatement, new BeanListHandler<T>(type));
  321.         } catch (SQLException e) {
  322.             Log.error("SQLException : " + e.getMessage()
  323.                     + " occured while executing the SQL statement : "
  324.                     + sqlStatement + "; Exception : " + e.toString());
  325.             throw new RuntimeException(e);
  326.         } finally {
  327.             DbUtils.closeQuietly(conn);
  328.         }
  329.     }
  330.  
  331. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement