#26: Medikamente berabeiten #43

Merged
SZUT-Dominik merged 2 commits from story/medikamente-modul-medikamente-bearbeiten into main 2024-05-17 13:40:59 +00:00
3 changed files with 74 additions and 28 deletions

View file

@ -8,12 +8,17 @@ import java.util.stream.Collectors;
import de.hitec.nhplus.Main;
import de.hitec.nhplus.datastorage.DaoFactory;
import de.hitec.nhplus.medication.database.MedicationDao;
import de.hitec.nhplus.nurse.Nurse;
import de.hitec.nhplus.patient.Patient;
import de.hitec.nhplus.treatment.Treatment;
import de.hitec.nhplus.treatment.TreatmentModalController;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.SelectionModel;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
@ -61,7 +66,7 @@ public class AllMedicationController {
cellData -> {
Medication medication = cellData.getValue();
List<Ingredient> ingredients = medication.getIngredients();
if(ingredients.isEmpty()){
if (ingredients.isEmpty()) {
return new SimpleStringProperty("");
}
@ -91,6 +96,18 @@ public class AllMedicationController {
}
}
/**
* Method to save the changes to a {@link Medication}.
*/
public void updateMedication(Medication medication) {
dao = DaoFactory.getInstance().createMedicationDAO();
try {
dao.update(medication);
} catch (SQLException exception) {
exception.printStackTrace();
}
}
/**
* Method to create a new {@link Medication}.
*/
@ -103,8 +120,13 @@ public class AllMedicationController {
}
}
@FXML
public void handleNewMedication() {
/**
* Internal method to create a {@link MedicationModalController MedicationModal}.
*
* @param medication The {@link Medication} which should be edited. Set null to create a new one.
* @param title The Title of the created modal.
*/
public void medicationWindow(Medication medication, String title) {
try {
FXMLLoader loader = new FXMLLoader(
Main.class.getResource("/de/hitec/nhplus/medication/MedicationModal.fxml")
@ -114,10 +136,10 @@ public class AllMedicationController {
Stage stage = new Stage();
MedicationModalController controller = loader.getController();
controller.initialize(stage, this, null);
controller.initialize(stage, this, medication);
stage.setScene(scene);
stage.setTitle("NHPlus - Neues Medikament");
stage.setTitle(title);
stage.setResizable(true);
stage.setAlwaysOnTop(true);
stage.showAndWait();
@ -125,4 +147,21 @@ public class AllMedicationController {
exception.printStackTrace();
}
}
@FXML
public void handleNewMedication() {
medicationWindow(null, "NHPlus - Neues Medikament");
}
@FXML
public void handleMouseClick() {
tableView.setOnMouseClicked(event -> {
SelectionModel<Medication> selectionModel = tableView.getSelectionModel();
if (event.getClickCount() == 2 && (selectionModel.getSelectedItem() != null)) {
int index = selectionModel.getSelectedIndex();
Medication medication = this.medications.get(index);
medicationWindow(medication, "NHPlus - Medikament");
}
});
}
}

View file

@ -43,6 +43,7 @@ public class MedicationModalController {
private Medication medication;
private final ObservableList<Ingredient> ingredients = FXCollections.observableArrayList();
private AllMedicationController controller;
private boolean isNewMedication = false;
/**
* Initialization method that is called after the binding of all the fields.
@ -54,11 +55,12 @@ public class MedicationModalController {
Medication medication
) {
this.stage = stage;
this.controller=controller;
this.controller = controller;
if( medication != null){
if (medication != null) {
this.medication = medication;
}else {
} else {
isNewMedication = true;
this.medication = new Medication(
"",
"",
@ -92,7 +94,7 @@ public class MedicationModalController {
/**
* Internal method to show the data in the view.
*/
private void showData(){
private void showData() {
ingredients.setAll(medication.getIngredients());
textFieldName.setText(medication.getName());
textFieldManufacturer.setText(medication.getManufacturer());
@ -117,7 +119,12 @@ public class MedicationModalController {
.toList()
);
if (isNewMedication) {
controller.createMedication(medication);
} else {
controller.updateMedication(medication);
}
controller.readAllAndShowInTableView();
stage.close();
}

View file

@ -12,7 +12,7 @@
<Insets top="8" left="8" right="8" bottom="8"/>
</padding>
<center>
<TableView fx:id="tableView">
<TableView fx:id="tableView" onMouseClicked="#handleMouseClick">
<columns>
<TableColumn
fx:id="columnId"