Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sql;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- import main.Main;
- /**
- *
- * @author Mateus Demarchi
- *
- */
- public class SqlDao {
- private final SqlType sqlType;
- private final String host;
- private final String port;
- private final String database;
- private final String table;
- private final String username;
- private final String password;
- private Connection connection;
- public SqlDao(SqlType sqlType, String host, String port, String database, String table, String username, String password) {
- this.sqlType = sqlType;
- this.host = host;
- this.port = port;
- this.database = database;
- this.table = table;
- this.username = username;
- this.password = password;
- }
- public static SqlConnector connector() {
- return new SqlConnector();
- }
- public static final class SqlConnector {
- private SqlType sqlType;
- private String host;
- private String port;
- private String database;
- private String table;
- private String username;
- private String password;
- public SqlConnector() {}
- public SqlConnector setSqlType(SqlType sqlType) {
- this.sqlType = sqlType;
- return this;
- }
- public SqlConnector setHost(String host) {
- this.host = host;
- return this;
- }
- public SqlConnector setPort(String port) {
- this.port = port;
- return this;
- }
- public SqlConnector setDatabase(String database) {
- this.database = database;
- return this;
- }
- public SqlConnector setTable(String table) {
- this.table = table;
- return this;
- }
- public SqlConnector setIdentifier(String username, String password) {
- this.username = username;
- this.password = password;
- return this;
- }
- public SqlDao buildConnection() {
- if(this.sqlType == null) {
- throw new IllegalArgumentException("O tipo de sql nao pode ser nulo.");
- }
- if(this.host == null & this.port == null) {
- throw new IllegalArgumentException("O host ou a porta nao pode ser nulo.");
- }
- if(this.database == null & this.table == null) {
- throw new IllegalArgumentException("O database ou a tabela nao pode ser nulo.");
- }
- if(this.username == null & this.password == null) {
- throw new IllegalArgumentException("O usuario ou a senha nao pode ser nulo.");
- }
- return new SqlDao(sqlType, host, port, database, table, username, password);
- }
- }
- public static enum SqlType {
- MySQL, Oracle, SQLServer, MariaDB, MongoDB, PostgreSQL, DB2
- }
- public SqlType geSqlType() {
- return this.sqlType;
- }
- public String getHost() {
- return this.host;
- }
- public String getPort() {
- return this.port;
- }
- public String getDatabase() {
- return this.database;
- }
- public String getTable() {
- return this.table;
- }
- public String getUsername() {
- return this.username;
- }
- public String getPassword() {
- return this.password;
- }
- public Connection getConnection() {
- return this.connection;
- }
- public boolean hasConnection() {
- return connection != null;
- }
- public PreparedStatement preparedStatement(String query) {
- try {
- return getConnection().prepareStatement(query);
- }catch(SQLException e) {
- e.printStackTrace();
- }
- return null;
- }
- public void openConnection() {
- if(!hasConnection()) {
- try {
- if(sqlType == SqlType.MySQL) {
- connection = DriverManager.getConnection(String.format("jdbc:%s://%s:%s/%s", sqlType.name(), host, port, database), username, password);
- }else if(sqlType == SqlType.Oracle) {
- connection = DriverManager.getConnection(String.format("jdbc:%s:thin:@%s:%s/%s", sqlType.name(), host, port, database), username, password);
- }else if(sqlType == SqlType.SQLServer) {
- connection = DriverManager.getConnection(String.format("jdbc:microsoft:%s://%s:%s;DataBaseName=%s", sqlType.name(), host, port, database), username, password);
- }else if(sqlType == SqlType.MariaDB) {
- connection = DriverManager.getConnection(String.format("jdbc:%s://%s:%s/%s", sqlType.name(), host, port, database), username, password);
- }else if(sqlType == SqlType.MongoDB) {
- connection = DriverManager.getConnection(String.format("jdbc:mongo://%s:%s/%s", host, port, database), username, password);
- }else if(sqlType == SqlType.PostgreSQL) {
- connection = DriverManager.getConnection(String.format("jdbc:%s://%s/%s", sqlType.name(), host, database), username, password);
- }else if(sqlType == SqlType.DB2) {
- connection = DriverManager.getConnection(String.format("jdbc:as400://%s/%s;", host, database), username, password);
- }else {
- throw new IllegalArgumentException("Nao foi possivel encontrar um suporte para o db informado");
- }
- Main.logger.info("Conectado com sucesso ao banco de dados: " + toString());
- }catch(SQLException e) {
- e.printStackTrace();
- Main.logger.warning("Erro ao conectar-se ao banco de dados: " + toString());
- }
- }
- }
- public void closeConnection() {
- if(hasConnection()) {
- try {
- connection.close();
- Main.logger.info("Desconectado com sucesso ao banco de dados: " + toString());
- }catch(SQLException e) {
- e.printStackTrace();
- Main.logger.warning("Erro ao desconectar-se ao banco de dados: " + toString());
- }
- }
- }
- @Override
- public String toString() {
- return String.format("%s:%s/%s/%s", host, port, database, table);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement