34 |
34 |
35 import java.sql.Connection; |
35 import java.sql.Connection; |
36 import java.sql.PreparedStatement; |
36 import java.sql.PreparedStatement; |
37 import java.sql.ResultSet; |
37 import java.sql.ResultSet; |
38 import java.sql.SQLException; |
38 import java.sql.SQLException; |
|
39 import java.util.Objects; |
39 |
40 |
40 public final class PGUserDao extends AbstractDao<User> implements UserDao { |
41 public final class PGUserDao extends AbstractDao<User> implements UserDao { |
41 |
42 |
|
43 private final PreparedStatement insert; |
|
44 private final PreparedStatement update; |
|
45 |
|
46 public PGUserDao(Connection connection) throws SQLException { |
|
47 super(connection.prepareStatement("select * from lpit_user where userid >= 0 order by username")); |
|
48 |
|
49 insert = connection.prepareStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)"); |
|
50 update = connection.prepareStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?"); |
|
51 } |
|
52 |
42 @Override |
53 @Override |
43 protected User mapColumns(ResultSet result) throws SQLException { |
54 public User mapColumns(ResultSet result, String q) throws SQLException { |
44 final var user = new User(result.getInt("userid")); |
55 final var user = new User(result.getInt(qual(q, "userid"))); |
45 user.setUsername(result.getString("username")); |
56 user.setUsername(result.getString(qual(q, "username"))); |
46 user.setGivenname(result.getString("givenname")); |
57 user.setGivenname(result.getString(qual(q, "givenname"))); |
47 user.setLastname(result.getString("lastname")); |
58 user.setLastname(result.getString(qual(q, "lastname"))); |
48 return user; |
59 return user; |
49 } |
60 } |
50 |
61 |
51 @Override |
62 @Override |
52 protected PreparedStatement listQuery(Connection conn) throws SQLException { |
63 public void save(User instance) throws SQLException { |
53 return conn.prepareStatement("select * from lpit_user where userid >= 0 order by username"); |
64 Objects.requireNonNull(instance.getUsername()); |
|
65 insert.setString(1, instance.getUsername()); |
|
66 setStringOrNull(insert, 2, instance.getLastname()); |
|
67 setStringOrNull(insert, 3, instance.getGivenname()); |
|
68 setStringOrNull(insert, 4, instance.getMail()); |
|
69 insert.executeUpdate(); |
|
70 } |
|
71 |
|
72 @Override |
|
73 public boolean update(User instance) throws SQLException { |
|
74 setStringOrNull(update, 1, instance.getLastname()); |
|
75 setStringOrNull(update, 2, instance.getGivenname()); |
|
76 setStringOrNull(update, 3, instance.getMail()); |
|
77 update.setInt(4, instance.getUserID()); |
|
78 return update.executeUpdate() > 0; |
54 } |
79 } |
55 } |
80 } |