/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.queryadhoc.table; import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection; import com.megatim.queryadhoc.connection.impl.MySqlDbConnection; import com.megatim.queryadhoc.connection.impl.OracleDbConnection; import com.megatim.queryadhoc.connection.impl.PostgresDbConnection; import com.megatim.queryadhoc.connection.impl.SqlServerDbConnection; import com.megatim.queryadhoc.enums.SgbdType; import com.megatim.queryadhoc.exceptions.ConnectionException; import com.megatim.queryadhoc.exceptions.ConnectionParameterException; import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException; import com.megatim.queryadhoc.model.ConnectionParameter; import com.megatim.queryadhoc.query.ifaces.InsertQuery; import com.megatim.queryadhoc.query.ifaces.SelectQuery; import com.megatim.queryadhoc.query.insert.impl.MySqlInsertQuery; import com.megatim.queryadhoc.query.insert.impl.OracleInsertQuery; import com.megatim.queryadhoc.query.insert.impl.PostgresInsertQuery; import com.megatim.queryadhoc.query.insert.impl.SqlServerInsertQuery; import com.megatim.queryadhoc.query.select.impl.MySqlSelectQuery; import com.megatim.queryadhoc.query.select.impl.OracleSelectQuery; import com.megatim.queryadhoc.query.select.impl.PostgresSelectQuery; import com.megatim.queryadhoc.query.select.impl.SqlServerSelectQuery; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * * @author ASUS */ public class DataBaseTable { private final SgbdType sgbdType; private final ConnectionParameter connectionParameter; public DataBaseTable(SgbdType sgbdType, ConnectionParameter connectionParameter) { this.sgbdType = sgbdType; this.connectionParameter = connectionParameter; } public SelectQuery select() throws NotSupportedDataBaseException { if (sgbdType == null) { throw new NotSupportedDataBaseException(null); } switch (sgbdType) { case ORACLE: return new OracleSelectQuery(connectionParameter); case POSTGRESQL: return new PostgresSelectQuery(connectionParameter); case MYSQL: return new MySqlSelectQuery(connectionParameter); case SQLSERVER: return new SqlServerSelectQuery(connectionParameter); default: throw new NotSupportedDataBaseException(sgbdType.name()); } } public InsertQuery insert() throws NotSupportedDataBaseException { if (sgbdType == null) { throw new NotSupportedDataBaseException(null); } switch (sgbdType) { case ORACLE: return new OracleInsertQuery(connectionParameter); case POSTGRESQL: return new PostgresInsertQuery(connectionParameter); case MYSQL: return new MySqlInsertQuery(connectionParameter); case SQLSERVER: return new SqlServerInsertQuery(connectionParameter); default: throw new NotSupportedDataBaseException(sgbdType.name()); } } public boolean isDatabaseAvailable() throws NotSupportedDataBaseException, ConnectionParameterException { if (sgbdType == null) { throw new NotSupportedDataBaseException(null); } try { switch (sgbdType) { case ORACLE: return isDatabaseAvailable(new OracleDbConnection(connectionParameter)); case POSTGRESQL: return isDatabaseAvailable(new PostgresDbConnection(connectionParameter)); case MYSQL: return isDatabaseAvailable(new MySqlDbConnection(connectionParameter)); case SQLSERVER: return isDatabaseAvailable(new SqlServerDbConnection(connectionParameter)); default: throw new NotSupportedDataBaseException(sgbdType.name()); } } catch (ConnectionException ex) { return false; } } public boolean tableExists(String tableName) throws NotSupportedDataBaseException, ConnectionParameterException, ConnectionException { if (sgbdType == null) { throw new NotSupportedDataBaseException(null); } try { switch (sgbdType) { case ORACLE: return tableExists(new OracleDbConnection(connectionParameter), tableName); case POSTGRESQL: return tableExists(new PostgresDbConnection(connectionParameter), tableName); case MYSQL: return tableExists(new MySqlDbConnection(connectionParameter), tableName); case SQLSERVER: return tableExists(new SqlServerDbConnection(connectionParameter), tableName); default: throw new NotSupportedDataBaseException(sgbdType.name()); } } catch (SQLException ex) { return false; } } private boolean isDatabaseAvailable(DataBaseConnection dbConnection) throws ConnectionException, ConnectionParameterException, NotSupportedDataBaseException { if (dbConnection != null) { dbConnection.getConnection(); dbConnection.closeConnection(); return true; } else { return false; } } private boolean tableExists(DataBaseConnection dbConnection, String tableName) throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException, SQLException { String query = "SELECT * FROM " + tableName; try ( Connection connection = dbConnection.getConnection(); PreparedStatement stmt = connection.prepareStatement(query)) { stmt.executeQuery(); dbConnection.closeConnection(); return true; } } }