Advertisement
Guest User

SqlDao

a guest
Oct 7th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.40 KB | None | 0 0
  1. package sql;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7.  
  8. import main.Main;
  9.  
  10. /**
  11.  *
  12.  * @author Mateus Demarchi
  13.  *
  14.  */
  15. public class SqlDao {
  16.     private final SqlType sqlType;
  17.     private final String host;
  18.     private final String port;
  19.     private final String database;
  20.     private final String table;
  21.     private final String username;
  22.     private final String password;
  23.     private Connection connection;
  24.    
  25.     public SqlDao(SqlType sqlType, String host, String port, String database, String table, String username, String password) {
  26.         this.sqlType = sqlType;
  27.         this.host = host;
  28.         this.port = port;
  29.         this.database = database;
  30.         this.table = table;
  31.         this.username = username;
  32.         this.password = password;
  33.     }
  34.    
  35.     public static SqlConnector connector() {
  36.         return new SqlConnector();
  37.     }
  38.    
  39.     public static final class SqlConnector {
  40.        
  41.         private SqlType sqlType;
  42.         private String host;
  43.         private String port;
  44.         private String database;
  45.         private String table;
  46.         private String username;
  47.         private String password;
  48.        
  49.         public SqlConnector() {}
  50.        
  51.         public SqlConnector setSqlType(SqlType sqlType) {
  52.             this.sqlType = sqlType;
  53.             return this;
  54.         }
  55.        
  56.         public SqlConnector setHost(String host) {
  57.             this.host = host;
  58.             return this;
  59.         }
  60.        
  61.         public SqlConnector setPort(String port) {
  62.             this.port = port;
  63.             return this;
  64.         }
  65.        
  66.         public SqlConnector setDatabase(String database) {
  67.             this.database = database;
  68.             return this;
  69.         }
  70.        
  71.         public SqlConnector setTable(String table) {
  72.             this.table = table;
  73.             return this;
  74.         }
  75.        
  76.         public SqlConnector setIdentifier(String username, String password) {
  77.             this.username = username;
  78.             this.password = password;
  79.             return this;
  80.         }
  81.        
  82.         public SqlDao buildConnection() {
  83.             if(this.sqlType == null) {
  84.                 throw new IllegalArgumentException("O tipo de sql nao pode ser nulo.");
  85.             }
  86.             if(this.host == null & this.port == null) {
  87.                 throw new IllegalArgumentException("O host ou a porta nao pode ser nulo.");
  88.             }
  89.             if(this.database == null & this.table == null) {
  90.                 throw new IllegalArgumentException("O database ou a tabela nao pode ser nulo.");
  91.             }
  92.             if(this.username == null & this.password == null) {
  93.                 throw new IllegalArgumentException("O usuario ou a senha nao pode ser nulo.");
  94.             }
  95.             return new SqlDao(sqlType, host, port, database, table, username, password);
  96.         }
  97.        
  98.     }
  99.    
  100.     public static enum SqlType {
  101.         MySQL, Oracle, SQLServer, MariaDB, MongoDB, PostgreSQL, DB2
  102.     }
  103.    
  104.     public SqlType geSqlType() {
  105.         return this.sqlType;
  106.     }
  107.    
  108.     public String getHost() {
  109.         return this.host;
  110.     }
  111.    
  112.     public String getPort() {
  113.         return this.port;
  114.     }
  115.    
  116.     public String getDatabase() {
  117.         return this.database;
  118.     }
  119.    
  120.     public String getTable() {
  121.         return this.table;
  122.     }
  123.    
  124.     public String getUsername() {
  125.         return this.username;
  126.     }
  127.    
  128.     public String getPassword() {
  129.         return this.password;
  130.     }
  131.    
  132.     public Connection getConnection() {
  133.         return this.connection;
  134.     }
  135.    
  136.     public boolean hasConnection() {
  137.         return connection != null;
  138.     }
  139.    
  140.     public PreparedStatement preparedStatement(String query) {
  141.         try {
  142.             return getConnection().prepareStatement(query);
  143.         }catch(SQLException e) {
  144.             e.printStackTrace();
  145.         }
  146.         return null;
  147.     }
  148.    
  149.     public void openConnection() {
  150.         if(!hasConnection()) {
  151.             try {
  152.                 if(sqlType == SqlType.MySQL) {
  153.                     connection = DriverManager.getConnection(String.format("jdbc:%s://%s:%s/%s", sqlType.name(), host, port, database), username, password);
  154.                 }else if(sqlType == SqlType.Oracle) {
  155.                     connection = DriverManager.getConnection(String.format("jdbc:%s:thin:@%s:%s/%s", sqlType.name(), host, port, database), username, password);
  156.                 }else if(sqlType == SqlType.SQLServer) {
  157.                     connection = DriverManager.getConnection(String.format("jdbc:microsoft:%s://%s:%s;DataBaseName=%s", sqlType.name(), host, port, database), username, password);
  158.                 }else if(sqlType == SqlType.MariaDB) {
  159.                     connection = DriverManager.getConnection(String.format("jdbc:%s://%s:%s/%s", sqlType.name(), host, port, database), username, password);
  160.                 }else if(sqlType == SqlType.MongoDB) {
  161.                     connection = DriverManager.getConnection(String.format("jdbc:mongo://%s:%s/%s", host, port, database), username, password);
  162.                 }else if(sqlType == SqlType.PostgreSQL) {
  163.                     connection = DriverManager.getConnection(String.format("jdbc:%s://%s/%s", sqlType.name(), host, database), username, password);
  164.                 }else if(sqlType == SqlType.DB2) {
  165.                     connection = DriverManager.getConnection(String.format("jdbc:as400://%s/%s;", host, database), username, password);
  166.                 }else {
  167.                     throw new IllegalArgumentException("Nao foi possivel encontrar um suporte para o db informado");
  168.                 }
  169.                 Main.logger.info("Conectado com sucesso ao banco de dados: " + toString());
  170.             }catch(SQLException e) {
  171.                 e.printStackTrace();
  172.                 Main.logger.warning("Erro ao conectar-se ao banco de dados: " + toString());
  173.             }
  174.         }
  175.     }
  176.    
  177.     public void closeConnection() {
  178.         if(hasConnection()) {
  179.             try {
  180.                 connection.close();
  181.                 Main.logger.info("Desconectado com sucesso ao banco de dados: " + toString());
  182.             }catch(SQLException e) {
  183.                 e.printStackTrace();
  184.                 Main.logger.warning("Erro ao desconectar-se ao banco de dados: " + toString());
  185.             }
  186.         }
  187.     }
  188.    
  189.     @Override
  190.     public String toString() {
  191.         return String.format("%s:%s/%s/%s", host, port, database, table);
  192.     }
  193.  
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement