From 3ef9d51f79291b1cf7efd42c357e85910b374fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20S=C3=A4ume?= Date: Sat, 27 Apr 2024 20:47:42 +0200 Subject: [PATCH] #16: Setup Nurse Model, DAO & Fixtures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dominik Säume --- .../hitec/nhplus/datastorage/DaoFactory.java | 4 + .../de/hitec/nhplus/datastorage/NurseDao.java | 115 ++++++++++++++++++ .../hitec/nhplus/fixtures/NurseFixture.java | 59 +++++++++ .../java/de/hitec/nhplus/model/Nurse.java | 49 ++++++++ 4 files changed, 227 insertions(+) create mode 100644 src/main/java/de/hitec/nhplus/datastorage/NurseDao.java create mode 100644 src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java create mode 100644 src/main/java/de/hitec/nhplus/model/Nurse.java diff --git a/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java b/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java index 063e29f..17f1840 100644 --- a/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java +++ b/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java @@ -21,4 +21,8 @@ public class DaoFactory { public PatientDao createPatientDAO() { return new PatientDao(ConnectionBuilder.getConnection()); } + + public NurseDao createNurseDAO() { + return new NurseDao(ConnectionBuilder.getConnection()); + } } diff --git a/src/main/java/de/hitec/nhplus/datastorage/NurseDao.java b/src/main/java/de/hitec/nhplus/datastorage/NurseDao.java new file mode 100644 index 0000000..73f7826 --- /dev/null +++ b/src/main/java/de/hitec/nhplus/datastorage/NurseDao.java @@ -0,0 +1,115 @@ +package de.hitec.nhplus.datastorage; + +import de.hitec.nhplus.model.Nurse; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class NurseDao extends DaoImp { + public NurseDao(Connection connection) { + super(connection); + } + + @Override + protected PreparedStatement getCreateStatement(Nurse nurse) { + PreparedStatement preparedStatement = null; + try { + final String SQL = "INSERT INTO patient (firstname, surname, phoneNumber)" + + "VALUES (?, ?, ?)"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setString(1, nurse.getFirstName()); + preparedStatement.setString(2, nurse.getSurname()); + preparedStatement.setString(3, nurse.getPhoneNumber()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected PreparedStatement getReadByIDStatement(long nid) { + PreparedStatement preparedStatement = null; + try { + final String SQL = "SELECT * FROM nurse WHERE nid = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setLong(1, nid); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected Nurse getInstanceFromResultSet(ResultSet result) throws SQLException { + return new Nurse( + result.getLong(1), + result.getString(2), + result.getString(3), + result.getString(4) + ); + } + + @Override + protected PreparedStatement getReadAllStatement() { + PreparedStatement statement = null; + try { + final String SQL = "SELECT * FROM nurse"; + statement = this.connection.prepareStatement(SQL); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return statement; + } + + @Override + protected ArrayList getListFromResultSet(ResultSet result) throws SQLException { + ArrayList list = new ArrayList<>(); + while (result.next()) { + list.add(new Nurse( + result.getLong(1), + result.getString(2), + result.getString(3), + result.getString(4) + )); + } + return list; + } + + + @Override + protected PreparedStatement getUpdateStatement(Nurse nurse) { + PreparedStatement preparedStatement = null; + try { + final String SQL = + "UPDATE nurse SET " + + "firstname = ?, " + + "surname = ?, " + + "phoneNumber = ?, " + + "WHERE nid = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setString(1, nurse.getFirstName()); + preparedStatement.setString(2, nurse.getSurname()); + preparedStatement.setString(3, nurse.getPhoneNumber()); + preparedStatement.setLong(4, nurse.getNid()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected PreparedStatement getDeleteStatement(long nid) { + PreparedStatement preparedStatement = null; + try { + final String SQL = "DELETE FROM nurse WHERE nid = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setLong(1, nid); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } +} diff --git a/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java b/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java new file mode 100644 index 0000000..5328ce6 --- /dev/null +++ b/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java @@ -0,0 +1,59 @@ +package de.hitec.nhplus.fixtures; + +import de.hitec.nhplus.datastorage.DaoFactory; +import de.hitec.nhplus.datastorage.NurseDao; +import de.hitec.nhplus.model.Nurse; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class NurseFixture implements Fixture { + @Override + public void dropTable(Connection connection) { + try (Statement statement = connection.createStatement()) { + statement.execute("DROP TABLE nurse"); + } catch (SQLException exception) { + System.out.println(exception.getMessage()); + } + } + + @Override + public void setupTable(Connection connection) { + final String SQL = "CREATE TABLE IF NOT EXISTS nurse (" + + "nid BIGINT PRIMARY KEY AUTOINCREMENT, " + + "firstname TEXT NOT NULL, " + + "surname TEXT NOT NULL, " + + "phoneNumber TEXT NOT NULL" + + ");"; + try (Statement statement = connection.createStatement()) { + statement.execute(SQL); + } catch (SQLException exception) { + System.out.println(exception.getMessage()); + } + } + + @Override + public Map load() throws SQLException { + List nurses = new ArrayList<>(); + + nurses.add(new Nurse( + "Ole", + "Kück", + "0123456789" + )); + NurseDao dao = DaoFactory.getDaoFactory().createNurseDAO(); + for(Nurse nurse : nurses){ + dao.create(nurse); + } + Map nursesByName = new HashMap<>(); + for (Nurse nurse : dao.readAll()){ + nursesByName.put(nurse.getFirstName(), nurse); + } + return nursesByName; + } +} diff --git a/src/main/java/de/hitec/nhplus/model/Nurse.java b/src/main/java/de/hitec/nhplus/model/Nurse.java new file mode 100644 index 0000000..20790e3 --- /dev/null +++ b/src/main/java/de/hitec/nhplus/model/Nurse.java @@ -0,0 +1,49 @@ +package de.hitec.nhplus.model; + +import javafx.beans.property.SimpleLongProperty; +import javafx.beans.property.SimpleStringProperty; + +public class Nurse extends Person { + private SimpleLongProperty nid; + private final SimpleStringProperty phoneNumber; + + public Nurse( + String firstName, + String surname, + String phoneNumber + ) { + super(firstName, surname); + this.phoneNumber = new SimpleStringProperty(phoneNumber); + } + + public Nurse( + long nid, + String firstName, + String surname, + String phoneNumber + ) { + super(firstName, surname); + this.nid = new SimpleLongProperty(nid); + this.phoneNumber = new SimpleStringProperty(phoneNumber); + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber.set(phoneNumber); + } + + public long getNid() { + return nid.get(); + } + + public SimpleLongProperty nidProperty() { + return nid; + } + + public String getPhoneNumber() { + return phoneNumber.get(); + } + + public SimpleStringProperty phoneNumberProperty() { + return phoneNumber; + } +}