Advertisement
Guest User

Untitled

a guest
Jan 29th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.40 KB | None | 0 0
  1.  
  2. package eu.glowacki.utp.assignment10.repositories;
  3.  
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.SQLException;
  7. import java.sql.Savepoint;
  8. import java.sql.PreparedStatement;
  9. import java.sql.ResultSet;
  10. import java.util.LinkedList;
  11. import java.util.List;
  12.  
  13. import eu.glowacki.utp.assignment10.dtos.GroupDTO;
  14. import eu.glowacki.utp.assignment10.dtos.UserDTO;
  15.  
  16. public class UserRepository implements IUserRepository {
  17.  
  18.     private Connection con;
  19.     Savepoint save;
  20.  
  21.     {
  22.         con = getConnection();
  23.         try {
  24.             con.setAutoCommit(false);
  25.         } catch (SQLException e) {
  26.         }
  27.         beginTransaction();
  28.         System.out.println("user repository has been constructed.");
  29.  
  30.     }
  31.  
  32.     @Override
  33.     public void add(UserDTO user) {
  34.         String sql = "insert into users values (?, ?, ?)";
  35.         try {
  36.             PreparedStatement addUser = con.prepareStatement(sql);
  37.             addUser.setInt(1, user.getId());
  38.             addUser.setString(2, user.getLogin());
  39.             addUser.setString(3, user.getPassword());
  40.             addUser.executeUpdate();
  41.  
  42.             if ((user.getGroups() != null) && !user.getGroups().isEmpty()) {
  43.                 for (GroupDTO u : user.getGroups()) {
  44.                     sql = "insert into groups_users values(?, ?)";
  45.                     addUser = con.prepareStatement(sql);
  46.                     addUser.setInt(1, user.getId());
  47.                     addUser.setInt(2, u.getId());
  48.                     try {
  49.                         addUser.executeUpdate();
  50.                     } catch (SQLException e) {
  51.                     }
  52.                 }
  53.             }
  54.         } catch (SQLException e) {
  55.             e.printStackTrace();
  56.             rollbackTransaction();
  57.         }
  58.     }
  59.  
  60.     @Override
  61.     public void update(UserDTO dto) {
  62.         String sql = "update users set user_login=? where user_id=?";
  63.         try {
  64.             PreparedStatement updateUser = con.prepareStatement(sql);
  65.             updateUser.setString(1, dto.getLogin());
  66.             updateUser.setInt(1, dto.getId());
  67.             updateUser.executeUpdate();
  68.         } catch (SQLException e) {
  69.             e.printStackTrace();
  70.             System.err.println("Failed to execute the sql update statement");
  71.             rollbackTransaction();
  72.         }
  73.     }
  74.  
  75.     @Override
  76.     public void addOrUpdate(UserDTO dto) {
  77.         if (exists(dto))
  78.             update(dto);
  79.         else
  80.             add(dto);
  81.     }
  82.  
  83.     @Override
  84.     public void delete(UserDTO dto) {
  85.         String sql = "delete from users where user_id=?";
  86.         try {
  87.             PreparedStatement delete = con.prepareStatement(sql);
  88.             delete.setInt(1, dto.getId());
  89.             System.out.println("Just before exec in delete");
  90.             delete.executeUpdate();
  91.             if ((dto.getGroups() != null) && !dto.getGroups().isEmpty()) {
  92.                 sql = "delete from users_groups where user_id=?";
  93.                 delete = con.prepareStatement(sql);
  94.                 delete.setInt(1, dto.getId());
  95.                 try {
  96.                     delete.executeUpdate();
  97.                 } catch (SQLException e) {
  98.                 }
  99.  
  100.             }
  101.         } catch (SQLException e) {
  102.             rollbackTransaction();
  103.             System.err.println("Failed to execute the sql delete statement, cause: " + e.getCause());
  104.         }
  105.  
  106.     }
  107.  
  108.     @Override
  109.     public UserDTO findById(int id) {
  110.         String sql = "Select * from users where user_id = ?";
  111.         PreparedStatement find;
  112.         try {
  113.             find = con.prepareStatement(sql);
  114.             find.setInt(1, id);
  115.             ResultSet rs = find.executeQuery();
  116.             return new UserDTO(rs.getInt(1), rs.getString(2), rs.getString(3));
  117.         } catch (SQLException e) {
  118.  
  119.             rollbackTransaction();
  120.             return null;
  121.         }
  122.     }
  123.  
  124.     @Override
  125.     public void beginTransaction() {
  126.         try {
  127.             save = con.setSavepoint();
  128.         } catch (SQLException e) {
  129.             System.err.println("Failed to set a savepoint");
  130.             rollbackTransaction();
  131.         }
  132.  
  133.     }
  134.  
  135.     @Override
  136.     public void commitTransaction() {
  137.         try {
  138.             con.commit();
  139.         } catch (SQLException e) {
  140.             System.err.println("Failed to commit the transaction");
  141.         }
  142.     }
  143.  
  144.     @Override
  145.     public void rollbackTransaction() {
  146.         try {
  147.             con.rollback();
  148.         } catch (SQLException e) {
  149.             System.err.println("Failed to rollback");
  150.         }
  151.     }
  152.  
  153.     @Override
  154.     public int getCount() {
  155.         String sql = "Select count(user_id) from users";
  156.         try {
  157.             PreparedStatement count = con.prepareStatement(sql);
  158.             return count.executeQuery().getInt(1);
  159.         } catch (SQLException e) {
  160.         }
  161.         rollbackTransaction();
  162.         return 0;
  163.     }
  164.  
  165.     @Override
  166.     public boolean exists(UserDTO dto) {
  167.  
  168.         String sql = "select * from users where user_id=?";
  169.  
  170.         try {
  171.             PreparedStatement check = con.prepareStatement(sql);
  172.             return check.execute();
  173.         } catch (SQLException e) {
  174.             System.err.println("Couldn't find out whether or not dto " + dto + " exists");
  175.         }
  176.  
  177.         return false;
  178.     }
  179.  
  180.     @Override
  181.     public Connection getConnection() {
  182.         try {
  183.             Class.forName("oracle.jdbc.driver.OracleDriver");
  184.             return DriverManager.getConnection("jdbc:oracle:thin:@db-oracle.pjwstk.edu.pl:1521:baza", "s16766",
  185.                     "oracle12");
  186.         } catch (ClassNotFoundException e) { // driver class could not be loaded
  187.             System.out.println("Driver could not be loaded");
  188.             System.out.println(e);
  189.             System.exit(1);
  190.  
  191.         } catch (SQLException e) { // connection could not be established
  192.             System.out.println("Connection could not be established");
  193.             System.out.println(e);
  194.             System.exit(1);
  195.         }
  196.         return null;
  197.     }
  198.  
  199.     @Override
  200.     public List<UserDTO> findByName(String username) {
  201.         String sql = "Select * from users where user_login=?";
  202.         List<UserDTO> found = new LinkedList<>();
  203.         PreparedStatement find;
  204.         try {
  205.             find = con.prepareStatement(sql);
  206.             find.setString(1, username);
  207.             ResultSet results = find.executeQuery();
  208.             while (results.next()) {
  209.                 found.add(new UserDTO(results.getInt(1), results.getString(2), results.getString(3)));
  210.             }
  211.         } catch (SQLException e) {
  212.         }
  213.         return found;
  214.     }
  215.  
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement