#8: Use Permissions in Nurse Controller
Some checks failed
Quality Check / Linting Check (push) Failing after 12s
Quality Check / Javadoc Check (push) Successful in 21s

Signed-off-by: Dominik Säume <Dominik.Saeume@hmmh.de>
This commit is contained in:
Dominik Säume 2024-05-22 09:36:07 +02:00
parent 9663b4c0b5
commit fabbb318d6
Signed by: SZUT-Dominik
GPG key ID: 67D15BB250B41E7C
2 changed files with 55 additions and 18 deletions

View file

@ -20,12 +20,24 @@ import java.util.List;
* @author Dorian Nemec
*/
public class MainWindowController {
private static MainWindowController instace;
@FXML
public TabPane mainTabPane;
private User user;
private TabManager tabManager;
public MainWindowController() {
instace = this;
}
public static MainWindowController getInstance() {
return instace;
}
public User getUser() {
return user;
}
/**
* JavaFX Initialization method that is called after the binding of all the fields.
*
@ -33,6 +45,7 @@ public class MainWindowController {
*/
@FXML
public void initialize(User user) {
instace = this;
this.user = user;
this.tabManager = new TabManager(user);
setupTabs();
@ -63,7 +76,7 @@ public class MainWindowController {
new TabStruct(
"Pfleger",
"/de/hitec/nhplus/nurse/AllNurseView.fxml",
Permissions.NURSE | Permissions.MANAGEMENT
Permissions.NURSE | Permissions.MANAGEMENT | Permissions.OWNER
),
new TabStruct(
"Gesperrte Pfleger",

View file

@ -1,8 +1,8 @@
package de.hitec.nhplus.nurse;
import static de.hitec.nhplus.utils.Validator.*;
import de.hitec.nhplus.datastorage.DaoFactory;
import de.hitec.nhplus.login.Permissions;
import de.hitec.nhplus.main.MainWindowController;
import de.hitec.nhplus.nurse.database.NurseDao;
import javafx.beans.value.ChangeListener;
import javafx.collections.FXCollections;
@ -17,6 +17,8 @@ import javafx.scene.control.cell.TextFieldTableCell;
import java.sql.SQLException;
import static de.hitec.nhplus.utils.Validator.*;
/**
* The controller for viewing all {@link Nurse}s.
*
@ -49,12 +51,17 @@ public class AllNurseController {
private final ObservableList<Nurse> nurses = FXCollections.observableArrayList();
private NurseDao dao;
private boolean hasEditPermissions;
/**
* Initialization method that is called after the binding of all the fields.
*/
@FXML
public void initialize() {
int editPermissions = Permissions.MANAGEMENT | Permissions.OWNER;
int userPermissions = MainWindowController.getInstance().getUser().getPermissions();
hasEditPermissions = (userPermissions & editPermissions) != 0;
this.readAllAndShowInTableView();
this.columnId.setCellValueFactory(new PropertyValueFactory<>("id"));
@ -71,12 +78,18 @@ public class AllNurseController {
this.tableView.setItems(this.nurses);
this.buttonAdd.setDisable(true);
ChangeListener<String> inputNewNurseValidationListener = (observableValue, oldText, newText)->
if (!hasEditPermissions) {
this.buttonLock.setDisable(true);
return;
}
ChangeListener<String> inputNewNurseValidationListener = (observableValue, oldText, newText) ->
{
boolean isValid = isValidFirstName(this.textFieldFirstName.getText())
&& isValidSurName(this.textFieldSurName.getText())
&& isValidPhoneNumber(this.textFieldPhoneNumber.getText());
&& isValidSurName(this.textFieldSurName.getText())
&& isValidPhoneNumber(this.textFieldPhoneNumber.getText());
AllNurseController.this.buttonAdd.setDisable(!isValid);
};
@ -89,12 +102,12 @@ public class AllNurseController {
/**
* Internal method to read all data and set it to the table view.
*/
private void readAllAndShowInTableView(){
private void readAllAndShowInTableView() {
this.nurses.clear();
this.dao = DaoFactory.getInstance().createNurseDAO();
try {
this.nurses.setAll(this.dao.readAllActive());
}catch (SQLException exception){
} catch (SQLException exception) {
exception.printStackTrace();
}
}
@ -120,14 +133,13 @@ public class AllNurseController {
}
@FXML
public void handleAdd(){
String surname=this.textFieldSurName.getText();
String firstName=this.textFieldFirstName.getText();
String phoneNumber=this.textFieldPhoneNumber.getText();
public void handleAdd() {
String surname = this.textFieldSurName.getText();
String firstName = this.textFieldFirstName.getText();
String phoneNumber = this.textFieldPhoneNumber.getText();
try {
this.dao.create(new Nurse(firstName, surname, phoneNumber));
}
catch (SQLException exception){
} catch (SQLException exception) {
exception.printStackTrace();
}
readAllAndShowInTableView();
@ -135,16 +147,16 @@ public class AllNurseController {
}
@FXML
public void handleLock(){
public void handleLock() {
Nurse selectedItem = this.tableView.getSelectionModel().getSelectedItem();
if (selectedItem == null){
if (selectedItem == null) {
return;
}
try {
selectedItem.setLocked(true);
this.dao.update(selectedItem);
}catch (SQLException exception){
} catch (SQLException exception) {
exception.printStackTrace();
}
readAllAndShowInTableView();
@ -152,6 +164,10 @@ public class AllNurseController {
@FXML
public void handleOnEditSurname(TableColumn.CellEditEvent<Nurse, String> event) {
if(!hasEditPermissions){
event.getTableView().refresh();
return;
}
String newSurName = event.getNewValue();
if (!isValidSurName(newSurName)) {
showValidationError("Nachname");
@ -164,6 +180,10 @@ public class AllNurseController {
@FXML
public void handleOnEditFirstname(TableColumn.CellEditEvent<Nurse, String> event) {
if(!hasEditPermissions){
event.getTableView().refresh();
return;
}
String newFirstName = event.getNewValue();
if (!isValidFirstName(newFirstName)) {
showValidationError("Vorname");
@ -176,6 +196,10 @@ public class AllNurseController {
@FXML
public void handleOnEditPhoneNumber(TableColumn.CellEditEvent<Nurse, String> event) {
if(!hasEditPermissions){
event.getTableView().refresh();
return;
}
String newPhoneNumber = event.getNewValue();
if (!isValidPhoneNumber(newPhoneNumber)) {
showValidationError("Telefonnummer");