src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java

changeset 38
cf85ef18f231
parent 37
fecda0f466e6
child 47
57cfb94ab99f
--- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Sun May 10 10:58:31 2020 +0200
+++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Mon May 11 19:09:06 2020 +0200
@@ -36,20 +36,45 @@
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Objects;
 
 public final class PGUserDao extends AbstractDao<User> implements UserDao {
 
+    private final PreparedStatement insert;
+    private final PreparedStatement update;
+
+    public PGUserDao(Connection connection) throws SQLException {
+        super(connection.prepareStatement("select * from lpit_user where userid >= 0 order by username"));
+
+        insert = connection.prepareStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)");
+        update = connection.prepareStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?");
+    }
+
     @Override
-    protected User mapColumns(ResultSet result) throws SQLException {
-        final var user = new User(result.getInt("userid"));
-        user.setUsername(result.getString("username"));
-        user.setGivenname(result.getString("givenname"));
-        user.setLastname(result.getString("lastname"));
+    public User mapColumns(ResultSet result, String q) throws SQLException {
+        final var user = new User(result.getInt(qual(q, "userid")));
+        user.setUsername(result.getString(qual(q, "username")));
+        user.setGivenname(result.getString(qual(q, "givenname")));
+        user.setLastname(result.getString(qual(q, "lastname")));
         return user;
     }
 
     @Override
-    protected PreparedStatement listQuery(Connection conn) throws SQLException {
-        return conn.prepareStatement("select * from lpit_user where userid >= 0 order by username");
+    public void save(User instance) throws SQLException {
+        Objects.requireNonNull(instance.getUsername());
+        insert.setString(1, instance.getUsername());
+        setStringOrNull(insert, 2, instance.getLastname());
+        setStringOrNull(insert, 3, instance.getGivenname());
+        setStringOrNull(insert, 4, instance.getMail());
+        insert.executeUpdate();
+    }
+
+    @Override
+    public boolean update(User instance) throws SQLException {
+        setStringOrNull(update, 1, instance.getLastname());
+        setStringOrNull(update, 2, instance.getGivenname());
+        setStringOrNull(update, 3, instance.getMail());
+        update.setInt(4, instance.getUserID());
+        return update.executeUpdate() > 0;
     }
 }

mercurial