diff -r fecda0f466e6 -r cf85ef18f231 src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java --- 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 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; } }