Advertisement
Guest User

Untitled

a guest
Oct 4th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.32 KB | None | 0 0
  1. package Database;
  2.  
  3. import java.security.MessageDigest;
  4. import java.security.NoSuchAlgorithmException;
  5. import java.sql.*;
  6.  
  7. public class DatabaseManager {
  8.     private static Connection serverConnection;
  9.     private static Statement serverStatement;
  10.     private static MessageDigest encoder;
  11.  
  12.  
  13.     public static void initDatabase() {
  14.         try {
  15.             Class.forName("org.postgresql.Driver");
  16.             encoder = MessageDigest.getInstance("SHA-256");
  17.  
  18.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres");
  19.             serverStatement = serverConnection.createStatement();
  20.  
  21.             ResultSet hasDatabase = serverStatement.executeQuery("SELECT * FROM pg_database WHERE datname = 'users_database'");
  22.             if (!hasDatabase.next()) {
  23.                 serverStatement.execute("CREATE DATABASE users_database;");
  24.             }
  25.             serverConnection.close();
  26.             serverStatement.close();
  27.  
  28.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  29.             serverStatement = serverConnection.createStatement();
  30.             serverStatement.execute("CREATE TABLE IF NOT EXISTS users_table" +
  31.                     "(" +
  32.                     "login text PRIMARY KEY, " +
  33.                     "password_hash bytea, " +
  34.                     "user_rights integer" +
  35.                     ");");
  36.  
  37.             PreparedStatement preparedStatement = serverConnection.prepareStatement("INSERT INTO users_table VALUES (?, ?, ?) ON CONFLICT (login) DO UPDATE SET login = ?, password_hash = ?, user_rights = ?;");
  38.             preparedStatement.setString(1, "admin");
  39.             encoder.update("admin".getBytes());
  40.             preparedStatement.setBytes(2, encoder.digest());
  41.             preparedStatement.setInt(3, 1);
  42.             preparedStatement.setString(4, "admin");
  43.             encoder.update("admin".getBytes());
  44.             preparedStatement.setBytes(5, encoder.digest());
  45.             preparedStatement.setInt(6, 1);
  46.             preparedStatement.execute();
  47.  
  48.             preparedStatement = serverConnection.prepareStatement("INSERT INTO users_table VALUES (?, ?, ?) ON CONFLICT (login) DO UPDATE SET login = ?, password_hash = ?, user_rights = ?;");
  49.             preparedStatement.setString(1, "user");
  50.             encoder.update("user".getBytes());
  51.             preparedStatement.setBytes(2, encoder.digest());
  52.             preparedStatement.setInt(3, 2);
  53.             preparedStatement.setString(4, "user");
  54.             encoder.update("user".getBytes());
  55.             preparedStatement.setBytes(5, encoder.digest());
  56.             preparedStatement.setInt(6, 2);
  57.             preparedStatement.execute();
  58.  
  59.  
  60.             serverStatement.close();
  61.             serverConnection.close();
  62.         } catch (SQLException | NoSuchAlgorithmException | ClassNotFoundException e) {
  63.             e.printStackTrace();
  64.             System.exit(1);
  65.         } finally {
  66.             try {
  67.                 if (serverStatement != null) {
  68.                     serverStatement.close();
  69.                 }
  70.                 if (serverConnection != null) {
  71.                     serverConnection.close();
  72.                 }
  73.             } catch (SQLException e) {
  74.                 e.printStackTrace();
  75.             }
  76.         }
  77.     }
  78.  
  79.     public static void dropDatabase() {
  80.         try {
  81.             System.out.println("Dropping...");
  82.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  83.             serverStatement = serverConnection.createStatement();
  84.             serverStatement.execute("DROP TABLE users_table;");
  85.             serverStatement.close();
  86.             serverConnection.close();
  87.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres");
  88.             serverStatement = serverConnection.createStatement();
  89.             serverStatement.execute("DROP DATABASE users_database;");
  90.             serverStatement.close();
  91.             serverConnection.close();
  92.         } catch (SQLException e) {
  93.             e.printStackTrace();
  94.         } finally {
  95.             try {
  96.                 if (serverStatement != null) {
  97.                     serverStatement.close();
  98.                 }
  99.                 if (serverConnection != null) {
  100.                     serverConnection.close();
  101.                 }
  102.             } catch (SQLException e) {
  103.                 e.printStackTrace();
  104.             }
  105.         }
  106.     }
  107.  
  108.     public static int checkUser(String login, String password) {
  109.         int userRights = -1;
  110.         try {
  111.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  112.             serverStatement = serverConnection.createStatement();
  113.  
  114.             PreparedStatement preparedStatement = serverConnection.prepareStatement("SELECT * FROM users_table WHERE login = ? AND password_hash = ?;");
  115.             preparedStatement.setString(1, login);
  116.             encoder.update(password.getBytes());
  117.             preparedStatement.setBytes(2, encoder.digest());
  118.             ResultSet hasUser = preparedStatement.executeQuery();
  119.             if (hasUser.next()) {
  120.                 userRights = hasUser.getInt("user_rights");
  121.             }
  122.             serverStatement.close();
  123.             serverConnection.close();
  124.         } catch (SQLException e) {
  125.             e.printStackTrace();
  126.         } finally {
  127.             try {
  128.                 if (serverStatement != null) {
  129.                     serverStatement.close();
  130.                 }
  131.                 if (serverConnection != null) {
  132.                     serverConnection.close();
  133.                 }
  134.             } catch (SQLException e) {
  135.                 e.printStackTrace();
  136.             }
  137.         }
  138.         return userRights;
  139.     }
  140.  
  141.     public static int checkUser(String login) {
  142.         int userRights = -1;
  143.         try {
  144.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  145.             serverStatement = serverConnection.createStatement();
  146.  
  147.             PreparedStatement preparedStatement = serverConnection.prepareStatement("SELECT * FROM users_table WHERE login = ?;");
  148.             preparedStatement.setString(1, login);
  149.             ResultSet hasUser = preparedStatement.executeQuery();
  150.             if (hasUser.next()) {
  151.                 userRights = hasUser.getInt("user_rights");
  152.             }
  153.             serverStatement.close();
  154.             serverConnection.close();
  155.         } catch (SQLException e) {
  156.             e.printStackTrace();
  157.         } finally {
  158.             try {
  159.                 if (serverStatement != null) {
  160.                     serverStatement.close();
  161.                 }
  162.                 if (serverConnection != null) {
  163.                     serverConnection.close();
  164.                 }
  165.             } catch (SQLException e) {
  166.                 e.printStackTrace();
  167.             }
  168.         }
  169.         return userRights;
  170.     }
  171.  
  172.     public static boolean addUser(String login, String password) {
  173.         try {
  174.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  175.             serverStatement = serverConnection.createStatement();
  176.  
  177.             PreparedStatement preparedStatement = serverConnection.prepareStatement("SELECT * FROM users_table WHERE login = ?;");
  178.             preparedStatement.setString(1, login);
  179.             ResultSet hasUser = preparedStatement.executeQuery();
  180.             if (!hasUser.next()) {
  181.                 preparedStatement = serverConnection.prepareStatement("INSERT INTO users_table VALUES (?, ?, ?);");
  182.                 preparedStatement.setString(1, login);
  183.                 encoder.update(password.getBytes());
  184.                 preparedStatement.setBytes(2, encoder.digest());
  185.                 preparedStatement.setInt(3, 2);
  186.                 preparedStatement.execute();
  187.  
  188.                 serverStatement.close();
  189.                 serverConnection.close();
  190.                 return true;
  191.             }
  192.  
  193.             serverStatement.close();
  194.             serverConnection.close();
  195.             return false;
  196.         } catch (SQLException e) {
  197.             e.printStackTrace();
  198.             return false;
  199.         } finally {
  200.             try {
  201.                 if (serverStatement != null) {
  202.                     serverStatement.close();
  203.                 }
  204.                 if (serverConnection != null) {
  205.                     serverConnection.close();
  206.                 }
  207.             } catch (SQLException e) {
  208.                 e.printStackTrace();
  209.             }
  210.         }
  211.     }
  212.  
  213.     public static int deleteUser(String login) {
  214.         try {
  215.             serverConnection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users_database", "postgres", "postgres");
  216.             serverStatement = serverConnection.createStatement();
  217.  
  218.             PreparedStatement preparedStatement = serverConnection.prepareStatement("SELECT * FROM users_table WHERE login = ?;");
  219.             preparedStatement.setString(1, login);
  220.             ResultSet hasUser = preparedStatement.executeQuery();
  221.             if (hasUser.next()) {
  222.                 if (hasUser.getInt("user_rights") != 1) {
  223.                     preparedStatement = serverConnection.prepareStatement("DELETE FROM users_table WHERE login = ?;");
  224.                     preparedStatement.setString(1, login);
  225.                     preparedStatement.execute();
  226.                     serverStatement.close();
  227.                     serverConnection.close();
  228.                     return 0;
  229.                 } else {
  230.                     return 1;
  231.                 }
  232.             }
  233.  
  234.             serverStatement.close();
  235.             serverConnection.close();
  236.             return 2;
  237.         } catch (SQLException e) {
  238.             e.printStackTrace();
  239.             return 3;
  240.         } finally {
  241.             try {
  242.                 if (serverStatement != null) {
  243.                     serverStatement.close();
  244.                 }
  245.                 if (serverConnection != null) {
  246.                     serverConnection.close();
  247.                 }
  248.             } catch (SQLException e) {
  249.                 e.printStackTrace();
  250.             }
  251.         }
  252.     }
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement