Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.62 KB | None | 0 0
  1. package dal;
  2.  
  3. import dal.dto.IUserDTO;
  4. import dal.dto.UserDTO;
  5.  
  6. import java.sql.*;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class UserDAOImpls164863 implements IUserDAO {
  11.     private Connection createConnection() throws SQLException {
  12.         return  DriverManager.getConnection("jdbc:mysql://ec2-52-30-211-3.eu-west-1.compute.amazonaws.com/s164863?"
  13.                 + "user=s164863&password=LPUj5vpaQZepYQgtCtdWR");
  14.     }
  15.  
  16.  
  17.     @Override
  18.     public void createUser(IUserDTO user) throws DALException {
  19.         try (Connection c = createConnection()){
  20.  
  21.             String query = "INSERT INTO users (id, userName, ini) " +
  22.                     "VALUES(?,?,?)";
  23.             PreparedStatement PS = c.prepareStatement(query);
  24.             PS.setInt(1, user.getUserId());
  25.             PS.setString(2, user.getUserName());
  26.             PS.setString(3, user.getIni());
  27.             PS.executeUpdate();
  28.             List<String> roles = user.getRoles();
  29.             int i = 0;
  30.             while(i < roles.size()){
  31.                 String query2 = "INSERT INTO userRoles (id, roles) " +
  32.                         "VALUES(?,?)";
  33.                 PreparedStatement PS2 = c.prepareStatement(query2);
  34.                 PS2.setInt(1, user.getUserId());
  35.                 PS2.setString(2, roles.get(i));
  36.                 PS2.executeUpdate();
  37.                 i++;
  38.             }
  39.             c.close();
  40.  
  41.  
  42.         } catch (SQLException e) {
  43.             e.printStackTrace();
  44.             throw new DALException("Error creating user");
  45.         }
  46.     }
  47.  
  48.     @Override
  49.     public IUserDTO getUser(int userId) throws DALException {
  50.         try{
  51.             Connection c = createConnection();
  52.  
  53.            IUserDTO user = new UserDTO();
  54.            String query = "SELECT * " +
  55.                    "FROM users " +
  56.                    "JOIN userRoles USING (id) " +
  57.                    "WHERE id = ?";
  58.            PreparedStatement psQuery = c.prepareStatement(query);
  59.            psQuery.setInt(1, userId);
  60.            ResultSet resultSet = psQuery.executeQuery();
  61.  
  62.            ArrayList<String> roleList = new ArrayList<>();
  63.            if(resultSet.first()) {
  64.                user.setUserId(resultSet.getInt("id"));
  65.                user.setUserName(resultSet.getString("userName"));
  66.                user.setIni(resultSet.getString("ini"));
  67.                roleList.add(resultSet.getString("roles"));
  68.            }
  69.            while(resultSet.next()){
  70.                roleList.add(resultSet.getString("roles"));
  71.            }
  72.            user.setRoles(roleList);
  73.            c.close();
  74.            return user;
  75.         } catch (SQLException e) {
  76.             throw new DALException(e.getMessage());
  77.         }
  78.  
  79.     }
  80.  
  81.  
  82.  
  83.     @Override
  84.     public List<IUserDTO> getUserList() throws DALException {
  85.         List<IUserDTO> list = new ArrayList<>();
  86.         try(Connection c = createConnection()){
  87.             //Get all users data
  88.             String resQuery = "SELECT * " +
  89.                     "FROM users";
  90.             PreparedStatement psResQ = c.prepareStatement(resQuery);
  91.             ResultSet rs = psResQ.executeQuery();
  92.  
  93.             UserDTO user;
  94.             if(rs.first()){
  95.                 do {
  96.                     user = new UserDTO();
  97.                     //Get user data
  98.                     user.setUserId(rs.getInt("id"));
  99.                     user.setUserName(rs.getString("userName"));
  100.                     user.setIni(rs.getString("ini"));
  101.                     //Get roles
  102.                     List<String> roleList = new ArrayList<>();
  103.  
  104.                     String query = "SELECT * " +
  105.                             "FROM userRoles " +
  106.                             "WHERE id = ?";
  107.                     PreparedStatement psQuery = c.prepareStatement(query);
  108.                     psQuery.setInt(1, user.getUserId());
  109.                     ResultSet rsRoles = psQuery.executeQuery();
  110.                     //Add roles
  111.                     rsRoles.beforeFirst();
  112.                         while (rsRoles.next()) {
  113.                             roleList.add(rsRoles.getString("roles"));
  114.                         }
  115.                         user.setRoles(roleList);
  116.  
  117.                     list.add(user);
  118.                 }while(rs.next());
  119.  
  120.             }
  121.             c.close();
  122.         }catch(SQLException e){
  123.             throw new DALException("Error getting user list");
  124.         }
  125.         return list;
  126.     }
  127.  
  128.  
  129.  
  130.     @Override
  131.     public void updateUser(IUserDTO user) throws DALException {
  132.         //For roles nuke all of the users roles then add new ones
  133.         try(Connection c = createConnection()){
  134.             String query = "UPDATE users " +
  135.                     "SET id = ?, userName = ?, ini = ? " +
  136.                     "WHERE id = ?";
  137.             PreparedStatement psQuery = c.prepareStatement(query);
  138.             psQuery.setInt(1, user.getUserId());
  139.             psQuery.setString(2, user.getUserName());
  140.             psQuery.setString(3, user.getIni());
  141.             psQuery.setInt(4, user.getUserId());
  142.             psQuery.executeUpdate();
  143.  
  144.  
  145.             //Nuke all roles
  146.             String nuke = "DELETE FROM userRoles " +
  147.                     "WHERE id = ?";
  148.             PreparedStatement psNuke = c.prepareStatement(nuke);
  149.             psNuke.setInt(1, user.getUserId());
  150.             psNuke.executeUpdate();
  151.             //Add roles again
  152.             int i = 0;
  153.             List<String> roleList = user.getRoles();
  154.             while(i < roleList.size()){
  155.                 String restore = "INSERT INTO userRoles(id, roles) " +
  156.                         "VALUES(?,?)";
  157.                 PreparedStatement psRes = c.prepareStatement(restore);
  158.                 psRes.setInt(1, user.getUserId());
  159.                 psRes.setString(2, roleList.get(i));
  160.                 psRes.executeUpdate();
  161.                 i++;
  162.             }
  163.             c.close();
  164.         }catch(SQLException e){
  165.             throw new DALException("Error updating user");
  166.         }
  167.     }
  168.  
  169.     @Override
  170.     public void deleteUser(int userId) throws DALException {
  171.         try(Connection c = createConnection()){
  172.             String query = "DELETE FROM users " +
  173.                     "WHERE id = ?";
  174.             PreparedStatement psQuery = c.prepareStatement(query);
  175.             psQuery.setInt(1, userId);
  176.             String query2 = "DELETE FROM userRoles " +
  177.                     "WHERE id = ?";
  178.             PreparedStatement psQuery2 = c.prepareStatement(query2);
  179.             psQuery2.setInt(1, userId);
  180.             psQuery.executeUpdate();
  181.             psQuery2.executeUpdate();
  182.  
  183.         }catch (SQLException e){
  184.             throw new DALException("Error deleting user");
  185.         }
  186.     }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement