Advertisement
Guest User

Untitled

a guest
Sep 4th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.08 KB | None | 0 0
  1. package dao;
  2.  
  3. import domain.User;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.ArrayList;
  9. import java.util.Collection;
  10. import java.util.List;
  11.  
  12. /**
  13. *
  14. * Connects to H2 Database and handles all User-related methods.
  15. *
  16. * @author Kirby McKenzie
  17. *
  18. */
  19. public class UserJdbcDAO implements UserDAO {
  20.  
  21. private String url = "jdbc:h2:tcp://localhost/~/RPM;IFEXISTS=TRUE";
  22.  
  23. public UserJdbcDAO() {
  24. }
  25.  
  26. public UserJdbcDAO(String url) {
  27. this.url = url;
  28. }
  29.  
  30. /**
  31. *
  32. * Returns a Collection of Users in the database.
  33. *
  34. * @return Collection - A collection of User objects, ordered by email.
  35. */
  36. @Override
  37. public Collection<User> getAllUsers() {
  38. String sql = "select * from USER order by EMAIL";
  39. try (
  40. Connection dbCon = JdbcConnection.getConnection(url);
  41. PreparedStatement stmt = dbCon.prepareStatement(sql);) {
  42. ResultSet rs = stmt.executeQuery();
  43.  
  44. List<User> users = new ArrayList<>();
  45.  
  46. while (rs.next()) {
  47.  
  48. String id = rs.getString("USER_ID");
  49. String email = rs.getString("EMAIL");
  50. String password = rs.getString("PASSWORD");
  51. String firstName = rs.getString("FIRST_NAME");
  52. String lastName = rs.getString("LAST_NAME");
  53.  
  54. User userList = new User(email, password, firstName, lastName);
  55.  
  56. users.add(userList);
  57. }
  58.  
  59. return users;
  60. } catch (SQLException ex) {
  61. throw new DAOException(ex.getMessage(), ex);
  62.  
  63. }
  64. } // end getAllUsers
  65.  
  66. /**
  67. *
  68. * Saves a user to the database.
  69. *
  70. * @param aUser A User object to be saved.
  71. */
  72. @Override
  73. public void saveUser(User aUser) {
  74.  
  75. String sql = "insert into USER (USER_ID, EMAIL, PASSWORD, FIRST_NAME, LAST_NAME) "
  76. + "values (?,?,?,?,?)";
  77.  
  78. try (
  79. Connection dbCon = JdbcConnection.getConnection(url);
  80. PreparedStatement stmt = dbCon.prepareStatement(sql);) {
  81.  
  82. stmt.setString(1, aUser.getUserId());
  83. stmt.setString(2, aUser.getEmailAddress());
  84. stmt.setString(3, aUser.getPassword());
  85. stmt.setString(4, aUser.getFirstName());
  86. stmt.setString(5, aUser.getLastName());
  87.  
  88. stmt.executeUpdate();
  89. } catch (SQLException ex) {
  90.  
  91. throw new DAOException(ex.getMessage(), ex);
  92. }
  93. } // end SaveUser
  94.  
  95. /**
  96. *
  97. * Removes a User from the database.
  98. *
  99. * @param userId A User object to be deleted.
  100. */
  101. @Override
  102. public void deleteUser(String userId) {
  103.  
  104. String sql = "delete from USER where USER_ID = ?";
  105. try (
  106. Connection dbCon = JdbcConnection.getConnection(url);
  107. PreparedStatement stmt = dbCon.prepareStatement(sql);) {
  108. stmt.setString(1, userId);
  109.  
  110. stmt.executeUpdate();
  111. } catch (SQLException ex) {
  112. throw new DAOException(ex.getMessage(), ex);
  113. }
  114. } // end deleteUser
  115.  
  116. /**
  117. *
  118. * Returns a User object with given email.
  119. *
  120. * @param aEmail Email of User to return.
  121. * @return User object with given email.
  122. */
  123. @Override
  124. public User getUserByEmail(String aEmail) {
  125. String sql = "select * from USER where email = ?";
  126. try (
  127. Connection dbCon = JdbcConnection.getConnection(url);
  128. PreparedStatement stmt = dbCon.prepareStatement(sql);) {
  129. stmt.setString(1, aEmail);
  130. ResultSet rs = stmt.executeQuery();
  131.  
  132. if (rs.next()) {
  133.  
  134. String id = rs.getString("USER_ID");
  135. String email = rs.getString("EMAIL");
  136. String password = rs.getString("PASSWORD");
  137. String firstName = rs.getString("FIRST_NAME");
  138. String lastName = rs.getString("LAST_NAME");
  139.  
  140. User aUser = new User(email, password, firstName, lastName);
  141. return aUser;
  142. }
  143. return null;
  144. } catch (SQLException ex) {
  145. throw new DAOException(ex.getMessage(), ex);
  146. }
  147. } // end getUserByEmail
  148.  
  149. /**
  150. *
  151. * Checks if User exists in database and returns the User object. Will print
  152. * to console if login successful or not.
  153. *
  154. * @param aEmail Users Email
  155. * @param aPassword Users Password
  156. * @return User object if email and password are correct.
  157. */
  158. @Override
  159. public User login(String aEmail, String aPassword) {
  160. String sql = "SELECT * FROM USER WHERE EMAIL = ?"
  161. + "AND PASSWORD = ?";
  162. try (
  163. Connection dbCon = JdbcConnection.getConnection(url);
  164. PreparedStatement stmt = dbCon.prepareStatement(sql);) {
  165. stmt.setString(1, aEmail);
  166. stmt.setString(2, aPassword);
  167.  
  168. ResultSet rs = stmt.executeQuery();
  169.  
  170. while (rs.next()) {
  171. String id = rs.getString("USER_ID");
  172. String email = rs.getString("EMAIL");
  173. String password = rs.getString("PASSWORD");
  174. String firstName = rs.getString("FIRST_NAME");
  175. String lastName = rs.getString("LAST_NAME");
  176.  
  177. User aUser = new User(email, password, firstName, lastName);
  178. System.out.println("Login Successful");
  179. return aUser;
  180.  
  181. }
  182. System.out.println("You are not Authorised! >:/");
  183. return null;
  184. } catch (SQLException ex) {
  185. throw new DAOException(ex.getMessage(), ex);
  186.  
  187. }
  188.  
  189. } // end login
  190.  
  191. @Override
  192. public void updateUser(String aUser) {
  193. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  194. } // end updateUser
  195.  
  196. } // end UserJdbcDAO class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement