From 012a6208d87d5a384306b976291902c92032071e Mon Sep 17 00:00:00 2001 From: joel Date: Tue, 15 Jun 2021 16:24:06 +0200 Subject: [PATCH] LS03-03-2: implement UserDB --- .../model/persistenceDB/UserDB.java | 97 +++++++++++++++++-- 1 file changed, 90 insertions(+), 7 deletions(-) diff --git a/src/de/oszimt/ls/aliendefence/model/persistenceDB/UserDB.java b/src/de/oszimt/ls/aliendefence/model/persistenceDB/UserDB.java index ed7c014..85e62f5 100644 --- a/src/de/oszimt/ls/aliendefence/model/persistenceDB/UserDB.java +++ b/src/de/oszimt/ls/aliendefence/model/persistenceDB/UserDB.java @@ -1,10 +1,6 @@ package de.oszimt.ls.aliendefence.model.persistenceDB; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.*; import de.oszimt.ls.aliendefence.model.User; import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance; @@ -12,8 +8,7 @@ import de.oszimt.ls.aliendefence.model.persistenceDB.AccessDB; /** * databaseconnection for userobjects, Story usermanagement - * @author Clara Zufall - * TODO finish this class + * @author Joel Baldauf */ public class UserDB implements IUserPersistance{ @@ -23,6 +18,47 @@ public class UserDB implements IUserPersistance{ this.dbAccess = dbAccess; } + /** + * insert new user into database + * + * @param user userobject to be inserted into database + * @return lastKey + */ + public int createUser(User user) { + String sql = "INSERT INTO users (first_name, sur_name, birthday, street, house_number, postal_code, city, login_name, password, salary_expectations, marital_status, final_grade) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; + int lastKey = -1; + try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(), + this.dbAccess.getPassword()); + PreparedStatement statement = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);) { + + //statement.setInt(1, level_id); + statement.setString(1, user.getFirst_name()); + statement.setString(2, user.getSur_name()); + statement.setDate(3, Date.valueOf(user.getBirthday())); + statement.setString(4, user.getStreet()); + statement.setString(5, user.getHouse_number()); + statement.setString(6, user.getPostal_code()); + statement.setString(7, user.getCity()); + statement.setString(8, user.getLoginname()); + statement.setString(9, user.getPassword()); + statement.setInt(10, user.getSalary_expectations()); + statement.setString(11, user.getMarital_status()); + statement.setDouble(12, user.getFinal_grade()); + statement.execute(); + + ResultSet generatedKeys = statement.getGeneratedKeys(); + if (generatedKeys.next()) { + lastKey = generatedKeys.getInt(1); + } + generatedKeys.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + + return lastKey; + } + + /** * read userdata by unique username * @@ -54,4 +90,51 @@ public class UserDB implements IUserPersistance{ return user; } + /** + * update existing user + * + * @param user userobject to be updated + */ + public void updateUser (User user) { + String sql = "UPDATE users SET first_name = ?, sur_name = ?, birthday = ?, street = ?, house_number = ?, " + + "postal_code = ?, city = ?, login_name = ?, password = ?, salary_expectations = ?, marital_status = ?, final_grade = ? WHERE P_user_id = ?"; + try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(), + this.dbAccess.getPassword()); PreparedStatement statement = con.prepareStatement(sql)) { + + statement.setString(1, user.getFirst_name()); + statement.setString(2, user.getSur_name()); + statement.setDate(3, Date.valueOf(user.getBirthday())); + statement.setString(4, user.getStreet()); + statement.setString(5, user.getHouse_number()); + statement.setString(6, user.getPostal_code()); + statement.setString(7, user.getCity()); + statement.setString(8, user.getLoginname()); + statement.setString(9, user.getPassword()); + statement.setInt(10, user.getSalary_expectations()); + statement.setString(11, user.getMarital_status()); + statement.setDouble(12, user.getFinal_grade()); + statement.setInt(13, user.getP_user_id()); + statement.executeUpdate(); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * delete existing user + * + * @param user userobject to be deleted + */ + public void deleteUser (User user) { + String sql = "DELETE FROM users WHERE P_user_id = " + user.getP_user_id() + ";"; + + try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(), + this.dbAccess.getPassword()); Statement statement = con.createStatement()) { + statement.executeUpdate(sql); + + } catch (SQLException e) { + e.printStackTrace(); + } + } }