diff --git a/db/nursingHome.db b/db/nursingHome.db index df596e0..0cdc030 100644 Binary files a/db/nursingHome.db and b/db/nursingHome.db differ diff --git a/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java b/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java index 85c13ad..f5488e0 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java @@ -58,7 +58,6 @@ public class TreatmentFixture implements Fixture { Nurse armin = nursesByName.get("Armin"); treatments.add(new Treatment( - 1, seppl, ole, convertStringToLocalDate("2023-06-03"), @@ -70,7 +69,6 @@ public class TreatmentFixture implements Fixture { + "Patient beruhigt sich erst, als alle Wertsachen im Zimmer gefunden worden sind." )); treatments.add(new Treatment( - 2, seppl, armin, convertStringToLocalDate("2023-06-05"), @@ -82,7 +80,6 @@ public class TreatmentFixture implements Fixture { + "Patient wird in seinen Raum zurückbegleitet und erhält Beruhigungsmittel." )); treatments.add(new Treatment( - 3, martina, ole, convertStringToLocalDate("2023-06-04"), @@ -92,80 +89,80 @@ public class TreatmentFixture implements Fixture { "Patient mit Waschlappen gewaschen und frisch angezogen. Patient gewendet." )); treatments.add(new Treatment( - 4, seppl, armin, convertStringToLocalDate("2023-06-06"), convertStringToLocalTime("15:10"), convertStringToLocalTime("16:00"), "Spaziergang", - "Spaziergang im Park, Patient döst im Rollstuhl ein") - ); + "Spaziergang im Park, Patient döst im Rollstuhl ein" + + )); treatments.add(new Treatment( - 8, seppl, ole, convertStringToLocalDate("2023-06-08"), convertStringToLocalTime("15:00"), convertStringToLocalTime("16:00"), "Spaziergang", - "Parkspaziergang; Patient ist heute lebhafter und hat klare Momente; erzählt von seiner Tochter") - ); + "Parkspaziergang; Patient ist heute lebhafter und hat klare Momente; erzählt von seiner Tochter" + )); treatments.add(new Treatment( - 9, martina, armin, convertStringToLocalDate("2023-06-07"), convertStringToLocalTime("11:00"), convertStringToLocalTime("11:30"), "Waschen", - "Waschen per Dusche auf einem Stuhl; Patientin gewendet;") - ); + "Waschen per Dusche auf einem Stuhl; Patientin gewendet;" + )); treatments.add(new Treatment( - 12, hans, armin, convertStringToLocalDate("2023-06-08"), convertStringToLocalTime("15:00"), convertStringToLocalTime("15:30"), "Physiotherapie", - "Übungen zur Stabilisation und Mobilisierung der Rückenmuskulatur") - ); + "Übungen zur Stabilisation und Mobilisierung der Rückenmuskulatur" + )); treatments.add(new Treatment( - 14, ahmet, ole, convertStringToLocalDate("2023-08-24"), convertStringToLocalTime("09:30"), convertStringToLocalTime("10:15"), "KG", - "Lympfdrainage")); + "Lympfdrainage" + )); treatments.add(new Treatment( - 16, elisabeth, armin, convertStringToLocalDate("2023-08-31"), convertStringToLocalTime("13:30"), convertStringToLocalTime("13:45"), "Toilettengang", - "Hilfe beim Toilettengang; Patientin klagt über Schmerzen beim Stuhlgang. Gabe von Iberogast") - ); - treatments.add(new Treatment( - 17, + "Hilfe beim Toilettengang; Patientin klagt über Schmerzen beim Stuhlgang. Gabe von Iberogast" + )); + Treatment lockedTreatment = new Treatment( elisabeth, ole, convertStringToLocalDate("2023-09-01"), convertStringToLocalTime("16:00"), convertStringToLocalTime("17:00"), "KG", - "Massage der Extremitäten zur Verbesserung der Durchblutung") + "Massage der Extremitäten zur Verbesserung der Durchblutung" ); + lockedTreatment.setLocked(true); + treatments.add(lockedTreatment); TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); Map treatmentsById = new HashMap<>(); for (Treatment treatment : treatments) { dao.create(treatment); + } + for (Treatment treatment : dao.readAll()) { treatmentsById.put(String.valueOf(treatment.getId()), treatment); + } return treatmentsById; } diff --git a/src/main/java/de/hitec/nhplus/main/MainWindowController.java b/src/main/java/de/hitec/nhplus/main/MainWindowController.java index 293ba41..5b7b4e4 100644 --- a/src/main/java/de/hitec/nhplus/main/MainWindowController.java +++ b/src/main/java/de/hitec/nhplus/main/MainWindowController.java @@ -9,6 +9,9 @@ import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; +import de.hitec.nhplus.treatment.Treatment; +import de.hitec.nhplus.medication.Medication; +import de.hitec.nhplus.patient.Patient; import java.io.IOException; import java.util.Objects; @@ -29,10 +32,18 @@ public class MainWindowController { @FXML private Tab patientTab; @FXML - private AnchorPane treatmentPage; + private AnchorPane activeTreatmentPage; @FXML private Tab treatmentTab; @FXML + private TabPane treatmentTabPane; + @FXML + private Tab activeTreatmentTab; + @FXML + private AnchorPane lockedTreatmentPage; + @FXML + private Tab lockedTreatmentTab; + @FXML private Tab nurseTab; @FXML private TabPane nurseTabPane; @@ -58,19 +69,25 @@ public class MainWindowController { mainTabPane.getSelectionModel().select(patientTab); patientTab.setOnSelectionChanged(event -> loadPatientPage()); - treatmentTab.setOnSelectionChanged(event -> loadTreatmentsPage()); - nurseTab.setOnSelectionChanged(event -> loadNursePage()); medicationTab.setOnSelectionChanged(event -> loadMedicationPage()); + nurseTab.setOnSelectionChanged(event -> loadNursePage()); nurseTabPane.getSelectionModel().select(activeNurseTab); activeNurseTab.setOnSelectionChanged(event -> loadActiveNursePage()); lockedNurseTab.setOnSelectionChanged(event -> loadLockedNursePage()); + + treatmentTab.setOnSelectionChanged(event -> loadTreatmentPage()); + treatmentTabPane.getSelectionModel().select(activeTreatmentTab); + + activeTreatmentTab.setOnSelectionChanged(event -> loadActiveTreatmentPage()); + lockedTreatmentTab.setOnSelectionChanged(event -> loadLockedTreatmentPage()); + } /** - * Loads the patient page into its tab. + * Loads the {@link Patient} page into its tab. */ private void loadPatientPage() { try { @@ -88,14 +105,46 @@ public class MainWindowController { } /** - * Loads the {@link } page into its tab. + * Loads the {@link Treatment } tab. */ - private void loadTreatmentsPage() { + private void loadTreatmentPage() { + SelectionModel selectionModel = treatmentTabPane.getSelectionModel(); + Tab selectedTab = selectionModel.getSelectedItem(); + if (selectedTab == activeTreatmentTab) { + loadActiveTreatmentPage(); + } + if (selectedTab == lockedTreatmentTab) { + loadLockedTreatmentPage(); + } + } + + /** + * Loads the active {@link Treatment} page into its tab. + */ + private void loadActiveTreatmentPage() { try { - BorderPane treatmentsPane = FXMLLoader.load( + BorderPane activeTreatmentPane = FXMLLoader.load( Objects.requireNonNull(Main.class.getResource("/de/hitec/nhplus/treatment/AllTreatmentView.fxml")) ); - treatmentPage.getChildren().setAll(treatmentsPane); + activeTreatmentPage.getChildren().setAll(activeTreatmentPane); + AnchorPane.setTopAnchor(activeTreatmentPane, 0d); + AnchorPane.setBottomAnchor(activeTreatmentPane, 0d); + AnchorPane.setLeftAnchor(activeTreatmentPane, 0d); + AnchorPane.setRightAnchor(activeTreatmentPane, 0d); + } catch (IOException exception) { + exception.printStackTrace(); + } + } + + /** + * Loads the locked {@link Treatment} page into its tab. + */ + private void loadLockedTreatmentPage() { + try { + BorderPane treatmentsPane = FXMLLoader.load( + Objects.requireNonNull(Main.class.getResource("/de/hitec/nhplus/treatment/LockedTreatmentView.fxml")) + ); + lockedTreatmentPage.getChildren().setAll(treatmentsPane); AnchorPane.setTopAnchor(treatmentsPane, 0d); AnchorPane.setBottomAnchor(treatmentsPane, 0d); AnchorPane.setLeftAnchor(treatmentsPane, 0d); @@ -106,15 +155,15 @@ public class MainWindowController { } /** - * Loads the nurse page into its tab. + * Loads the {@link Nurse} page into its tab. */ private void loadNursePage() { SelectionModel selectionModel = nurseTabPane.getSelectionModel(); Tab selectedTab = selectionModel.getSelectedItem(); - if(selectedTab == activeNurseTab){ + if (selectedTab == activeNurseTab) { loadActiveNursePage(); } - if(selectedTab == lockedNurseTab){ + if (selectedTab == lockedNurseTab) { loadLockedNursePage(); } } @@ -156,7 +205,7 @@ public class MainWindowController { } /** - * Loads the medication page into its tab. + * Loads the {@link Medication} page into its tab. */ private void loadMedicationPage() { try { diff --git a/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java b/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java index d6b89f8..6f72582 100644 --- a/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java +++ b/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java @@ -22,6 +22,8 @@ import java.sql.SQLException; * * @author Dominik Säume * @author Ole Kück + * @author Armin Ribic + * @author Dorian Nemec */ public class AllNurseController { @FXML diff --git a/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java b/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java index f4b0b3c..f4972de 100644 --- a/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java +++ b/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java @@ -74,7 +74,7 @@ public class NurseDao extends DaoImp { * Read all database entries of active {@link Nurse}s into a {@link List} of model instances. */ public List readAllActive() throws SQLException { - final String SQL = "SELECT * FROM nurse WHERE isLocked=false"; + final String SQL = "SELECT * FROM nurse WHERE isLocked = false"; return getListFromResultSet(this.connection.prepareStatement(SQL).executeQuery()); } @@ -82,7 +82,7 @@ public class NurseDao extends DaoImp { * Read all database entries of locked {@link Nurse}s into a {@link List} of model instances. */ public List readAllLocked() throws SQLException { - final String SQL = "SELECT * FROM nurse WHERE isLocked=true"; + final String SQL = "SELECT * FROM nurse WHERE isLocked = true"; return getListFromResultSet(this.connection.prepareStatement(SQL).executeQuery()); } diff --git a/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java b/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java index 3384c3f..055c4be 100644 --- a/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java +++ b/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java @@ -20,6 +20,7 @@ import javafx.stage.Stage; import java.io.IOException; import java.sql.SQLException; +import java.time.LocalDate; import java.util.ArrayList; /** @@ -27,6 +28,8 @@ import java.util.ArrayList; * * @author Bernd Heidemann * @author Dominik Säume + * @author Armin Ribic + * @author Dorian Nemec */ public class AllTreatmentController { @@ -61,7 +64,7 @@ public class AllTreatmentController { public ComboBox comboBoxNurseSelection; @FXML - private Button buttonDelete; + private Button buttonLock; private final ObservableList treatments = FXCollections.observableArrayList(); private TreatmentDao dao; @@ -100,15 +103,16 @@ public class AllTreatmentController { this.columnDescription.setCellValueFactory(new PropertyValueFactory<>("description")); this.tableView.setItems(this.treatments); - this.buttonDelete.setDisable(true); + this.buttonLock.setDisable(true); this.tableView .getSelectionModel() .selectedItemProperty() .addListener((observableValue, oldTreatment, newTreatment) -> - AllTreatmentController.this.buttonDelete.setDisable(newTreatment == null) + AllTreatmentController.this.buttonLock.setDisable(newTreatment == null) ); this.createComboBoxData(); + } /** @@ -117,7 +121,7 @@ public class AllTreatmentController { public void readAllAndShowInTableView() { this.dao = DaoFactory.getInstance().createTreatmentDao(); try { - this.treatments.setAll(dao.readAll()); + this.treatments.setAll(dao.readAllActive()); } catch (SQLException exception) { exception.printStackTrace(); } @@ -136,7 +140,7 @@ public class AllTreatmentController { this.patientSelection.add(patient.getSurName()); } - nurseList = (ArrayList) nurseDao.readAll(); + nurseList = (ArrayList) nurseDao.readAllActive(); for (Nurse nurse : nurseList) { this.nurseSelection.add(nurse.getSurName()); } @@ -258,18 +262,6 @@ public class AllTreatmentController { } } - @FXML - public void handleDelete() { - int index = this.tableView.getSelectionModel().getSelectedIndex(); - Treatment t = this.treatments.remove(index); - TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); - try { - dao.delete(t.getId()); - } catch (SQLException exception) { - exception.printStackTrace(); - } - } - @FXML public void handleNewTreatment() { String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem(); @@ -316,4 +308,22 @@ public class AllTreatmentController { }); } + + @FXML + public void handleLock(){ + Treatment selectedItem = this.tableView.getSelectionModel().getSelectedItem(); + if (selectedItem == null){ + return; + } + + try { + selectedItem.setLocked(true); + this.dao.update(selectedItem); + }catch (SQLException exception){ + exception.printStackTrace(); + } + readAllAndShowInTableView(); + } + + } diff --git a/src/main/java/de/hitec/nhplus/treatment/LockedTreatmentController.java b/src/main/java/de/hitec/nhplus/treatment/LockedTreatmentController.java new file mode 100644 index 0000000..8b78e3e --- /dev/null +++ b/src/main/java/de/hitec/nhplus/treatment/LockedTreatmentController.java @@ -0,0 +1,124 @@ +package de.hitec.nhplus.treatment; + +import de.hitec.nhplus.datastorage.DaoFactory; +import de.hitec.nhplus.nurse.Nurse; +import de.hitec.nhplus.patient.Patient; +import de.hitec.nhplus.treatment.database.TreatmentDao; +import de.hitec.nhplus.utils.DateConverter; +import javafx.beans.property.SimpleStringProperty; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; + +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +/** + * Controller for all locked treatments. + * + * @author Armin Ribic + * @author Dorian Nemec + */ +public class LockedTreatmentController { + + @FXML + public Button buttonUnlock; + @FXML + public TableView tableView; + @FXML + public TableColumn columnId; + @FXML + private TableColumn columnPatient; + @FXML + private TableColumn columnNurse; + @FXML + private TableColumn columnDeleteDate; + + private final ObservableList treatments = FXCollections.observableArrayList(); + private TreatmentDao treatmentDao; + + /** + * This method allows initializing a {@link LockedTreatmentController} object + * that is called after the binding of all the fields. + */ + public void initialize() { + this.readAllAndShowInTableView(); + + this.columnId.setCellValueFactory(new PropertyValueFactory<>("id")); + + this.columnPatient.setCellValueFactory( + cellData -> { + Patient patient = cellData.getValue().getPatient(); + return new SimpleStringProperty(patient.getSurName() + ", " + patient.getFirstName()); + } + ); + + this.columnNurse.setCellValueFactory( + cellData -> { + Nurse nurse = cellData.getValue().getNurse(); + return new SimpleStringProperty(nurse.getSurName() + ", " + nurse.getFirstName()); + } + ); + this.columnDeleteDate.setCellValueFactory(cellData -> new SimpleStringProperty( + DateConverter.convertLocalDateToString(cellData.getValue().calculateDeleteDate()))); + + + this.tableView.setItems(this.treatments); + } + + /** + * Reads all locked {@link Treatment} data and shows it in the table. + */ + private void readAllAndShowInTableView() { + this.treatments.clear(); + + this.treatmentDao = DaoFactory.getInstance().createTreatmentDao(); + try { + this.treatments.addAll(this.treatmentDao.readAllLocked()); + deleteOldTreatments(); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } + + /** + * Deletes all {@link Treatment}s which are older than allowed. + */ + private void deleteOldTreatments() { + LocalDate today = LocalDate.now(); + + for (Treatment treatment : treatments) { + LocalDate deleteDate = treatment.calculateDeleteDate(); + if (today.isEqual(deleteDate) || today.isAfter(deleteDate)) { + try { + treatmentDao.delete(treatment.getId()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } + } + } + + @FXML + private void unlockTreatment() { + Treatment selectedItem = this.tableView.getSelectionModel().getSelectedItem(); + if (selectedItem == null) { + return; + } + + try { + selectedItem.setLocked(false); + this.treatmentDao.update(selectedItem); + } catch (SQLException exception) { + exception.printStackTrace(); + } + readAllAndShowInTableView(); + } + +} diff --git a/src/main/java/de/hitec/nhplus/treatment/Treatment.java b/src/main/java/de/hitec/nhplus/treatment/Treatment.java index b5195cf..42150e3 100644 --- a/src/main/java/de/hitec/nhplus/treatment/Treatment.java +++ b/src/main/java/de/hitec/nhplus/treatment/Treatment.java @@ -3,6 +3,7 @@ package de.hitec.nhplus.treatment; import de.hitec.nhplus.nurse.Nurse; import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.utils.DateConverter; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -16,6 +17,8 @@ import java.util.StringJoiner; * * @author Bernd Heidemann * @author Dominik Säume + * @author Armin Ribic + * @author Dorian Nemec */ public class Treatment { private SimpleIntegerProperty id; @@ -26,6 +29,8 @@ public class Treatment { private final SimpleObjectProperty end; private final SimpleStringProperty description; private final SimpleStringProperty remarks; + private final SimpleBooleanProperty locked; + private final static int BLOCKED_YEARS = 10; /** * This constructor allows instantiating a {@link Treatment} object, @@ -50,6 +55,7 @@ public class Treatment { this.end = new SimpleObjectProperty<>(end); this.description = new SimpleStringProperty(description); this.remarks = new SimpleStringProperty(remarks); + this.locked = new SimpleBooleanProperty(false); } /** @@ -63,7 +69,8 @@ public class Treatment { LocalTime begin, LocalTime end, String description, - String remarks + String remarks, + Boolean isLocked ) { this.id = new SimpleIntegerProperty(id); this.patient = new SimpleObjectProperty<>(patient); @@ -73,6 +80,26 @@ public class Treatment { this.end = new SimpleObjectProperty<>(end); this.description = new SimpleStringProperty(description); this.remarks = new SimpleStringProperty(remarks); + this.locked = new SimpleBooleanProperty(isLocked); + } + + /** + * Calculates delete date of treatment. + */ + public LocalDate calculateDeleteDate() { + return DateConverter.convertStringToLocalDate(getDate()).plusYears(BLOCKED_YEARS); + } + + public boolean isLocked() { + return locked.get(); + } + + public SimpleBooleanProperty lockedProperty() { + return locked; + } + + public void setLocked(boolean locked) { + this.locked.set(locked); } public int getId() { @@ -166,6 +193,8 @@ public class Treatment { .add("End: " + this.getEnd()) .add("Description: " + this.getDescription()) .add("Remarks: " + this.getRemarks()) + .add("isLocked: " + this.isLocked()) .toString(); } + } diff --git a/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java b/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java index 2542f40..7b05981 100644 --- a/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java +++ b/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java @@ -11,6 +11,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -20,6 +21,8 @@ import java.util.List; * * @author Bernd Heidemannn * @author Dominik Säume + * @author Armin Ribic + * @author Dorian Nemec */ public class TreatmentDao extends DaoImp { @@ -27,60 +30,22 @@ public class TreatmentDao extends DaoImp { super(connection); } - @Override - protected PreparedStatement getCreateStatement(Treatment treatment) throws SQLException { - final String SQL = """ - INSERT INTO treatment - (patientId, nurseId, date, begin, end, description, remark) - VALUES (?, ?, ?, ?, ?, ?, ?) - """; - PreparedStatement statement = this.connection.prepareStatement(SQL); - statement.setInt(1, treatment.getPatient().getId()); - statement.setInt(2, treatment.getNurse().getId()); - statement.setString(3, treatment.getDate()); - statement.setString(4, treatment.getBegin()); - statement.setString(5, treatment.getEnd()); - statement.setString(6, treatment.getDescription()); - statement.setString(7, treatment.getRemarks()); - return statement; + /** + * Read all database entries of active {@link Treatment}s into a {@link List} of model instances. + */ + public List readAllActive() throws SQLException { + final String SQL = "SELECT * FROM treatment WHERE isLocked = false"; + return getListFromResultSet(this.connection.prepareStatement(SQL).executeQuery()); } - @Override - protected PreparedStatement getReadByIDStatement(int id) throws SQLException { - final String SQL = "SELECT * FROM treatment WHERE id = ?"; - PreparedStatement statement = this.connection.prepareStatement(SQL); - statement.setInt(1, id); - return statement; + /** + * Read all database entries of locked {@link Treatment}s into a {@link Treatment} of model instances. + */ + public List readAllLocked() throws SQLException { + final String SQL = "SELECT * FROM treatment WHERE isLocked = true"; + return getListFromResultSet(this.connection.prepareStatement(SQL).executeQuery()); } - @Override - protected Treatment getInstanceFromResultSet(ResultSet result) throws SQLException { - return new Treatment( - result.getInt(1), - DaoFactory.getInstance().createPatientDAO().read(result.getInt(2)), - DaoFactory.getInstance().createNurseDAO().read(result.getInt(3)), - DateConverter.convertStringToLocalDate(result.getString(4)), - DateConverter.convertStringToLocalTime(result.getString(5)), - DateConverter.convertStringToLocalTime(result.getString(6)), - result.getString(7), - result.getString(8) - ); - } - - @Override - protected PreparedStatement getReadAllStatement() throws SQLException { - final String SQL = "SELECT * FROM treatment"; - return this.connection.prepareStatement(SQL); - } - - @Override - protected List getListFromResultSet(ResultSet result) throws SQLException { - ArrayList list = new ArrayList<>(); - while (result.next()) { - list.add(getInstanceFromResultSet(result)); - } - return list; - } /** * Retrieves a list of {@link Treatment}s associated with a specific @@ -112,6 +77,63 @@ public class TreatmentDao extends DaoImp { return getListFromResultSet(result); } + @Override + protected PreparedStatement getCreateStatement(Treatment treatment) throws SQLException { + final String SQL = """ + INSERT INTO treatment + (patientId, nurseId, date, begin, end, description, remark, isLocked) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """; + PreparedStatement statement = this.connection.prepareStatement(SQL); + statement.setInt(1, treatment.getPatient().getId()); + statement.setInt(2, treatment.getNurse().getId()); + statement.setString(3, treatment.getDate()); + statement.setString(4, treatment.getBegin()); + statement.setString(5, treatment.getEnd()); + statement.setString(6, treatment.getDescription()); + statement.setString(7, treatment.getRemarks()); + statement.setBoolean(8, treatment.isLocked()); + return statement; + } + + @Override + protected PreparedStatement getReadByIDStatement(int id) throws SQLException { + final String SQL = "SELECT * FROM treatment WHERE id = ?"; + PreparedStatement statement = this.connection.prepareStatement(SQL); + statement.setInt(1, id); + return statement; + } + + @Override + protected Treatment getInstanceFromResultSet(ResultSet result) throws SQLException { + return new Treatment( + result.getInt(1), + DaoFactory.getInstance().createPatientDAO().read(result.getInt(2)), + DaoFactory.getInstance().createNurseDAO().read(result.getInt(3)), + DateConverter.convertStringToLocalDate(result.getString(4)), + DateConverter.convertStringToLocalTime(result.getString(5)), + DateConverter.convertStringToLocalTime(result.getString(6)), + result.getString(7), + result.getString(8), + result.getBoolean(9) + ); + } + + @Override + protected PreparedStatement getReadAllStatement() throws SQLException { + final String SQL = "SELECT * FROM treatment"; + return this.connection.prepareStatement(SQL); + } + + @Override + protected List getListFromResultSet(ResultSet result) throws SQLException { + ArrayList list = new ArrayList<>(); + while (result.next()) { + list.add(getInstanceFromResultSet(result)); + } + return list; + } + @Override protected PreparedStatement getUpdateStatement(Treatment treatment) throws SQLException { final String SQL = """ @@ -120,7 +142,8 @@ public class TreatmentDao extends DaoImp { begin = ?, end = ?, description = ?, - remark = ? + remark = ?, + isLocked = ? WHERE id = ? """; PreparedStatement statement = this.connection.prepareStatement(SQL); @@ -129,7 +152,8 @@ public class TreatmentDao extends DaoImp { statement.setString(3, treatment.getEnd()); statement.setString(4, treatment.getDescription()); statement.setString(5, treatment.getRemarks()); - statement.setInt(6, treatment.getId()); + statement.setBoolean(6, treatment.isLocked()); + statement.setInt(7, treatment.getId()); return statement; } @@ -141,4 +165,5 @@ public class TreatmentDao extends DaoImp { statement.setInt(1, id); return statement; } + } diff --git a/src/main/resources/de/hitec/nhplus/main/MainWindowView.fxml b/src/main/resources/de/hitec/nhplus/main/MainWindowView.fxml index c5316ea..fdb8bef 100644 --- a/src/main/resources/de/hitec/nhplus/main/MainWindowView.fxml +++ b/src/main/resources/de/hitec/nhplus/main/MainWindowView.fxml @@ -12,8 +12,15 @@ - - + + + + + + + + + diff --git a/src/main/resources/de/hitec/nhplus/nurse/LockedNurseView.fxml b/src/main/resources/de/hitec/nhplus/nurse/LockedNurseView.fxml index 23f2c6d..b7c1ed3 100644 --- a/src/main/resources/de/hitec/nhplus/nurse/LockedNurseView.fxml +++ b/src/main/resources/de/hitec/nhplus/nurse/LockedNurseView.fxml @@ -12,7 +12,11 @@
- +