From 1bb6757f9b66efba22f08c9650a0f8591a8b9c9e Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 11:46:20 +0200 Subject: add CreateNewEmployeeController and set on-click methods --- .../controller/CreateNewEmployeeController.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java new file mode 100644 index 0000000..eaf016c --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -0,0 +1,28 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Hyperlink; +import javafx.scene.control.TextField; + +public class CreateNewEmployeeController { + + @FXML private CheckBox inputIsDriver; + @FXML private CheckBox inputIsPilot; + @FXML private Hyperlink btnCancel; + @FXML private Button btnCreate; + @FXML private TextField inputName; + @FXML private ChoiceBox inputQualification; + + @FXML + public void onCancelClicked() { + throw new UnsupportedOperationException(); + } + + @FXML + public void onCreateClicked() { + throw new UnsupportedOperationException(); + } +} -- cgit v1.2.3-70-g09d2 From 1f769136ea6a0b791c4bec24e19b625e26c90d47 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 15:53:22 +0200 Subject: add EmployeeDatabaseDao with constructor --- .../einsatzverwaltung/dao/EmployeeDatabaseDao.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java new file mode 100644 index 0000000..2767af2 --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java @@ -0,0 +1,64 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.util.JDBCConnectionManager; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.lang.invoke.MethodHandles; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Repository; + +@Repository +public class EmployeeDatabaseDao implements EmployeeDAO { + + private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final String INSERT_EMPLOYEE_VERSION = + "INSERT INTO EmployeeVersion(name, birthday, educationLevel, isDriver, isPilot " + + "VALUES(?, ?, ?, ?, ?)"; + private static final String INSERT_EMPLOYEE = + "INSERT INTO Employee(version) VALUES(?)"; + + + private final PreparedStatement insertEmployeeVersion, insertEmployee; + + public EmployeeDatabaseDao(JDBCConnectionManager connectionManager) + throws PersistenceException { + + try { + final var connection = connectionManager.getConnection(); + insertEmployeeVersion = connection.prepareStatement(INSERT_EMPLOYEE_VERSION); + insertEmployee = connection.prepareStatement(INSERT_EMPLOYEE); + } catch (SQLException e) { + throw new PersistenceException(e); + } + } + + @Override + public long add(Employee employee) throws PersistenceException { + + // Assumption: the given employee is already validated (from service) + + + return 0; + } + + @Override + public void update(Employee employee) throws ElementNotFoundException, PersistenceException { + throw new UnsupportedOperationException(); + } + + @Override + public List list() throws PersistenceException { + throw new UnsupportedOperationException(); + } + + @Override + public void remove(long id) throws ElementNotFoundException, PersistenceException { + throw new UnsupportedOperationException(); + } +} -- cgit v1.2.3-70-g09d2 From dd107216517996a3dc6409df80187ebd617851ca Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 16:00:15 +0200 Subject: implement EmployeeDatabaseDao.add --- .../einsatzverwaltung/dao/EmployeeDatabaseDao.java | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java index 2767af2..81b8c86 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java @@ -6,7 +6,9 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundExceptio import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import java.lang.invoke.MethodHandles; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; import java.sql.Timestamp; import java.util.List; import org.slf4j.Logger; @@ -30,9 +32,13 @@ public class EmployeeDatabaseDao implements EmployeeDAO { throws PersistenceException { try { + final var connection = connectionManager.getConnection(); - insertEmployeeVersion = connection.prepareStatement(INSERT_EMPLOYEE_VERSION); - insertEmployee = connection.prepareStatement(INSERT_EMPLOYEE); + insertEmployeeVersion = connection.prepareStatement( + INSERT_EMPLOYEE_VERSION, Statement.RETURN_GENERATED_KEYS); + insertEmployee = connection.prepareStatement( + INSERT_EMPLOYEE, Statement.RETURN_GENERATED_KEYS); + } catch (SQLException e) { throw new PersistenceException(e); } @@ -42,9 +48,23 @@ public class EmployeeDatabaseDao implements EmployeeDAO { public long add(Employee employee) throws PersistenceException { // Assumption: the given employee is already validated (from service) + try { + insertEmployeeVersion.setString(1, employee.name()); + insertEmployeeVersion.setTimestamp(2, Timestamp.valueOf(employee.birthday().atStartOfDay())); + insertEmployeeVersion.setString(3, employee.educationLevel().toString()); + insertEmployeeVersion.setBoolean(4, employee.isDriver()); + insertEmployeeVersion.setBoolean(5, employee.isPilot()); + insertEmployeeVersion.executeUpdate(); + ResultSet rs = insertEmployeeVersion.getGeneratedKeys(); + if (rs.next()) { + return rs.getLong(1); + } + throw new PersistenceException("Employee was not created"); - return 0; + } catch (SQLException e) { + throw new PersistenceException(e); + } } @Override -- cgit v1.2.3-70-g09d2 From 715a289ec50e38a6fb0b623720ac39b5398a849a Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 16:13:44 +0200 Subject: add EmployeeServiceImpl and implement add method --- .../service/EmployeeServiceImpl.java | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java new file mode 100644 index 0000000..328f7c9 --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java @@ -0,0 +1,42 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.EmployeeValidator; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class EmployeeServiceImpl implements EmployeeService { + + private final EmployeeDAO employeePersistence; + + public EmployeeServiceImpl(EmployeeDAO employeePersistence) { + this.employeePersistence = employeePersistence; + } + + @Override + public long add(Employee employee) throws InvalidEmployeeException, PersistenceException { + + EmployeeValidator.validate(employee); + return employeePersistence.add(employee); + } + + @Override + public Employee update(Employee employee) + throws InvalidEmployeeException, PersistenceException { + return null; + } + + @Override + public List list() throws PersistenceException { + return null; + } + + @Override + public void remove(long id) throws InvalidEmployeeException, PersistenceException { + + } +} -- cgit v1.2.3-70-g09d2 From 795f86fb257c6d5099886390b4dfe9971f5a6371 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 16:14:04 +0200 Subject: create EmployeeValidator --- .../einsatzverwaltung/dto/EmployeeValidator.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/EmployeeValidator.java (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/EmployeeValidator.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/EmployeeValidator.java new file mode 100644 index 0000000..d7fa9aa --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/EmployeeValidator.java @@ -0,0 +1,23 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto; + +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; + +public class EmployeeValidator { + + public static boolean validate(Employee employee) throws InvalidEmployeeException { + + if (employee.name() == null || employee.name().trim().length() == 0) { + throw new InvalidEmployeeException("name not set"); + } + + if (employee.birthday() == null) { + throw new InvalidEmployeeException("birthday not set"); + } + + if (employee.educationLevel() == null) { + throw new InvalidEmployeeException("educationLevel not set"); + } + + return true; + } +} -- cgit v1.2.3-70-g09d2 From 58af7e0158b2d7c160cd76d279411c90f124295c Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 16:39:59 +0200 Subject: fix syntax error in INSERT_EMPLOYEE_VERSION SQL statement, reformat code --- .../einsatzverwaltung/dao/EmployeeDatabaseDao.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java index 81b8c86..f16f98e 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java @@ -20,11 +20,9 @@ public class EmployeeDatabaseDao implements EmployeeDAO { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final String INSERT_EMPLOYEE_VERSION = - "INSERT INTO EmployeeVersion(name, birthday, educationLevel, isDriver, isPilot " + - "VALUES(?, ?, ?, ?, ?)"; - private static final String INSERT_EMPLOYEE = - "INSERT INTO Employee(version) VALUES(?)"; - + "INSERT INTO EmployeeVersion(name, birthday, educationLevel, isDriver, isPilot) " + + "VALUES(?, ?, ?, ?, ?)"; + private static final String INSERT_EMPLOYEE = "INSERT INTO Employee(version) VALUES(?)"; private final PreparedStatement insertEmployeeVersion, insertEmployee; @@ -34,10 +32,11 @@ public class EmployeeDatabaseDao implements EmployeeDAO { try { final var connection = connectionManager.getConnection(); - insertEmployeeVersion = connection.prepareStatement( + insertEmployeeVersion = + connection.prepareStatement( INSERT_EMPLOYEE_VERSION, Statement.RETURN_GENERATED_KEYS); - insertEmployee = connection.prepareStatement( - INSERT_EMPLOYEE, Statement.RETURN_GENERATED_KEYS); + insertEmployee = + connection.prepareStatement(INSERT_EMPLOYEE, Statement.RETURN_GENERATED_KEYS); } catch (SQLException e) { throw new PersistenceException(e); @@ -50,7 +49,8 @@ public class EmployeeDatabaseDao implements EmployeeDAO { // Assumption: the given employee is already validated (from service) try { insertEmployeeVersion.setString(1, employee.name()); - insertEmployeeVersion.setTimestamp(2, Timestamp.valueOf(employee.birthday().atStartOfDay())); + insertEmployeeVersion.setTimestamp( + 2, Timestamp.valueOf(employee.birthday().atStartOfDay())); insertEmployeeVersion.setString(3, employee.educationLevel().toString()); insertEmployeeVersion.setBoolean(4, employee.isDriver()); insertEmployeeVersion.setBoolean(5, employee.isPilot()); -- cgit v1.2.3-70-g09d2 From 66c5c9f03a80d699584e1c8b0619a5f98a92e4bd Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 16:40:51 +0200 Subject: implement CreateNewEmployeeController.onCreateClicked --- .../controller/CreateNewEmployeeController.java | 55 +++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index eaf016c..86b3139 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -1,14 +1,31 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.lang.invoke.MethodHandles; +import java.time.LocalDate; import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; +import javafx.scene.control.ButtonType; import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Hyperlink; import javafx.scene.control.TextField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +@Controller public class CreateNewEmployeeController { + private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private final EmployeeService employeeService; + @FXML private CheckBox inputIsDriver; @FXML private CheckBox inputIsPilot; @FXML private Hyperlink btnCancel; @@ -16,6 +33,10 @@ public class CreateNewEmployeeController { @FXML private TextField inputName; @FXML private ChoiceBox inputQualification; + public CreateNewEmployeeController(EmployeeService employeeService) { + this.employeeService = employeeService; + } + @FXML public void onCancelClicked() { throw new UnsupportedOperationException(); @@ -23,6 +44,38 @@ public class CreateNewEmployeeController { @FXML public void onCreateClicked() { - throw new UnsupportedOperationException(); + + Employee employee = + Employee.builder() + .name(inputName.getText()) + .educationLevel(parseEducationLevel()) + .birthday(LocalDate.MIN) // TODO: change UI to include birthday field + .isDriver(inputIsDriver.isSelected()) + .isPilot(inputIsPilot.isSelected()) + .build(); + + try { + employeeService.add(employee); + } catch (InvalidEmployeeException e) { + LOG.error("Invalid Employee: {}", e); + new Alert(AlertType.ERROR, "Ungültige Eingabe", ButtonType.OK).showAndWait(); + return; + } catch (PersistenceException e) { + LOG.error("Employee could not be saved: {}", e); + new Alert(AlertType.ERROR, "Konnte nicht gespeichert werden", ButtonType.OK) + .showAndWait(); + return; + } + + new Alert(AlertType.INFORMATION, "Mitarbeiter wurde erfolgreich angelegt.", ButtonType.OK) + .showAndWait(); + } + + private EducationLevel parseEducationLevel() { + if (inputQualification.getSelectionModel().getSelectedItem() == null) { + return EducationLevel.RS; + } + return EducationLevel.valueOf( + inputQualification.getSelectionModel().getSelectedItem().toString()); } } -- cgit v1.2.3-70-g09d2 From 21716ce4c9f7c144d793047973b31b1698e0eaf5 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 17:07:05 +0200 Subject: add unit tests for employeeService, format code in EmployeeServiceImpl --- .../service/EmployeeServiceImpl.java | 4 +- .../groupphase/employee/EmployeeServiceTest.java | 67 ++++++++++++++++++++++ 2 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java index 328f7c9..df8df64 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java @@ -36,7 +36,5 @@ public class EmployeeServiceImpl implements EmployeeService { } @Override - public void remove(long id) throws InvalidEmployeeException, PersistenceException { - - } + public void remove(long id) throws InvalidEmployeeException, PersistenceException {} } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java new file mode 100644 index 0000000..ac73c9a --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java @@ -0,0 +1,67 @@ +package at.ac.tuwien.sepm.assignment.groupphase.employee; + +import static junit.framework.TestCase.fail; +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.time.LocalDate; +import org.junit.Assert; +import org.junit.Test; + +public class EmployeeServiceTest { + + private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); + private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); + + public EmployeeServiceTest() throws PersistenceException { + when(employeePersistence.add(any())).thenReturn(1L); + } + + @Test + public void testAddValidEmployee() { + + Employee employee = + Employee.builder() + .name("Testperson") + .birthday(LocalDate.MIN) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); + + try { + Assert.assertThat(employeeService.add(employee), is(1L)); + } catch (InvalidEmployeeException | PersistenceException e) { + fail(); + } + } + + @Test(expected = InvalidEmployeeException.class) + public void testAddInvalidEmployee() throws InvalidEmployeeException { + + Employee employee = + Employee.builder() + .name("") + .birthday(LocalDate.MIN) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); + + try { + employeeService.add(employee); + } catch (PersistenceException e) { + fail(); + } + } +} -- cgit v1.2.3-70-g09d2 From 4e765b616635c856755b50cf9b1b4cb0c595ca8a Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 1 May 2018 22:55:43 +0200 Subject: refactor alert-creating code to method showModalDialogWithOkButton --- .../controller/CreateNewEmployeeController.java | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index 86b3139..5721c28 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -58,17 +58,33 @@ public class CreateNewEmployeeController { employeeService.add(employee); } catch (InvalidEmployeeException e) { LOG.error("Invalid Employee: {}", e); - new Alert(AlertType.ERROR, "Ungültige Eingabe", ButtonType.OK).showAndWait(); + + showModalDialogWithOkButton( + AlertType.ERROR, + "Ungültige Eingabe", + "Mindestens eines der Eingabefelder haben einen ungültigen Wert!"); return; } catch (PersistenceException e) { LOG.error("Employee could not be saved: {}", e); - new Alert(AlertType.ERROR, "Konnte nicht gespeichert werden", ButtonType.OK) - .showAndWait(); + + showModalDialogWithOkButton( + AlertType.ERROR, + "Speicherfehler", + "Der Eintrag konnte nicht gespeichert werden. Bitte versuchen Sie es erneut."); return; } - new Alert(AlertType.INFORMATION, "Mitarbeiter wurde erfolgreich angelegt.", ButtonType.OK) - .showAndWait(); + showModalDialogWithOkButton( + AlertType.INFORMATION, + "Erfolgreich angelegt", + "Mitarbeiter wurde erfolgreich angelegt und gespeichert!"); + } + + private void showModalDialogWithOkButton( + AlertType alertType, String headerText, String contentText) { + Alert alert = new Alert(alertType, contentText, ButtonType.OK); + alert.setHeaderText(headerText); + alert.showAndWait(); } private EducationLevel parseEducationLevel() { -- cgit v1.2.3-70-g09d2 From f6bff6fb96fbdf1bd7809221576bd6ab11426e5e Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Wed, 2 May 2018 16:30:54 +0200 Subject: Initialize values in inputQualification, implement onCancelClicked --- .../controller/CreateNewEmployeeController.java | 27 +++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index 5721c28..d7f1a73 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -7,6 +7,9 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeExceptio import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import java.lang.invoke.MethodHandles; import java.time.LocalDate; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; @@ -16,6 +19,7 @@ import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Hyperlink; import javafx.scene.control.TextField; +import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -31,15 +35,32 @@ public class CreateNewEmployeeController { @FXML private Hyperlink btnCancel; @FXML private Button btnCreate; @FXML private TextField inputName; - @FXML private ChoiceBox inputQualification; + @FXML private ChoiceBox inputQualification; public CreateNewEmployeeController(EmployeeService employeeService) { this.employeeService = employeeService; } + @FXML + public void initialize() { + inputQualification.setItems( + FXCollections.observableArrayList( + Stream.of( + EducationLevel.RS, + EducationLevel.NFS, + EducationLevel.NKV, + EducationLevel.NKA, + EducationLevel.NKI, + EducationLevel.NA) + .map(Enum::toString) + .collect(Collectors.toList()))); + + inputQualification.setValue(EducationLevel.RS.toString()); + } + @FXML public void onCancelClicked() { - throw new UnsupportedOperationException(); + ((Stage)inputQualification.getScene().getWindow()).close(); } @FXML @@ -92,6 +113,6 @@ public class CreateNewEmployeeController { return EducationLevel.RS; } return EducationLevel.valueOf( - inputQualification.getSelectionModel().getSelectedItem().toString()); + inputQualification.getSelectionModel().getSelectedItem()); } } -- cgit v1.2.3-70-g09d2 From 8f741b60910ff19daa21ecce800a4f628c7057ab Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Wed, 2 May 2018 21:59:48 +0200 Subject: Run maven fmt:format to reformat code --- .../controller/CreateNewEmployeeController.java | 5 ++--- .../groupphase/util/HighDpiAwareApplicationTest.java | 15 ++++++++------- .../sepm/assignment/groupphase/util/ScaledBounds.java | 11 ++++++----- 3 files changed, 16 insertions(+), 15 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index d7f1a73..5906692 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -60,7 +60,7 @@ public class CreateNewEmployeeController { @FXML public void onCancelClicked() { - ((Stage)inputQualification.getScene().getWindow()).close(); + ((Stage) inputQualification.getScene().getWindow()).close(); } @FXML @@ -112,7 +112,6 @@ public class CreateNewEmployeeController { if (inputQualification.getSelectionModel().getSelectedItem() == null) { return EducationLevel.RS; } - return EducationLevel.valueOf( - inputQualification.getSelectionModel().getSelectedItem()); + return EducationLevel.valueOf(inputQualification.getSelectionModel().getSelectedItem()); } } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java index 1a765d3..c9816a1 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java @@ -11,13 +11,14 @@ public class HighDpiAwareApplicationTest extends ApplicationTest { public HighDpiAwareApplicationTest() { FxRobotContext context = robotContext(); - context.setBoundsLocator(new BoundsLocatorImpl(){ - @Override - public Bounds boundsOnScreenFor(Node node) { - Bounds bounds = super.boundsOnScreenFor(node); - return ScaledBounds.wrap(bounds); - } - }); + context.setBoundsLocator( + new BoundsLocatorImpl() { + @Override + public Bounds boundsOnScreenFor(Node node) { + Bounds bounds = super.boundsOnScreenFor(node); + return ScaledBounds.wrap(bounds); + } + }); robotContext().setPointLocator(new PointLocatorImpl(context.getBoundsLocator())); } } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java index 78578d1..02c15c4 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java @@ -10,11 +10,12 @@ public class ScaledBounds extends BoundingBox { static { scale = - 1 / GraphicsEnvironment.getLocalGraphicsEnvironment() - .getDefaultScreenDevice() - .getDefaultConfiguration() - .getDefaultTransform() - .getScaleX(); + 1 + / GraphicsEnvironment.getLocalGraphicsEnvironment() + .getDefaultScreenDevice() + .getDefaultConfiguration() + .getDefaultTransform() + .getScaleX(); } public static ScaledBounds wrap(Bounds bounds) { -- cgit v1.2.3-70-g09d2 From 8c26cc43a277fb2662a7dad0fa728b2f8f4e041d Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Thu, 3 May 2018 23:18:07 +0200 Subject: Change occurences of PersistenceException in Service and Controllers to ServiceExceptions --- .../controller/CreateNewEmployeeController.java | 4 ++-- .../einsatzverwaltung/dao/EmployeeDatabaseDao.java | 2 +- .../einsatzverwaltung/service/EmployeeServiceImpl.java | 16 ++++++++++------ .../employee/CreateNewEmployeeApplication.java | 8 +------- .../employee/CreateNewEmployeeControllerTest.java | 13 ++++++------- .../groupphase/employee/EmployeeServiceTest.java | 5 +++-- 6 files changed, 23 insertions(+), 25 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index 5906692..d81f6d7 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -4,7 +4,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.lang.invoke.MethodHandles; import java.time.LocalDate; import java.util.stream.Collectors; @@ -85,7 +85,7 @@ public class CreateNewEmployeeController { "Ungültige Eingabe", "Mindestens eines der Eingabefelder haben einen ungültigen Wert!"); return; - } catch (PersistenceException e) { + } catch (ServiceException e) { LOG.error("Employee could not be saved: {}", e); showModalDialogWithOkButton( diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java index f16f98e..fc9a549 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java @@ -1,9 +1,9 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.util.JDBCConnectionManager; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; import java.lang.invoke.MethodHandles; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java index df8df64..144ccc6 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java @@ -5,6 +5,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.EmployeeValidator; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.util.List; import org.springframework.stereotype.Service; @@ -18,23 +19,26 @@ public class EmployeeServiceImpl implements EmployeeService { } @Override - public long add(Employee employee) throws InvalidEmployeeException, PersistenceException { + public long add(Employee employee) throws InvalidEmployeeException, ServiceException { EmployeeValidator.validate(employee); - return employeePersistence.add(employee); + try { + return employeePersistence.add(employee); + } catch (PersistenceException e) { + throw new ServiceException(e); + } } @Override - public Employee update(Employee employee) - throws InvalidEmployeeException, PersistenceException { + public Employee update(Employee employee) throws InvalidEmployeeException, ServiceException { return null; } @Override - public List list() throws PersistenceException { + public List list() throws ServiceException { return null; } @Override - public void remove(long id) throws InvalidEmployeeException, PersistenceException {} + public void remove(long id) throws InvalidEmployeeException, ServiceException {} } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java index 66c7e56..e9f4801 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java @@ -1,7 +1,6 @@ package at.ac.tuwien.sepm.assignment.groupphase.employee; -import at.ac.tuwien.sepm.assignment.groupphase.application.MainApplication; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.util.SpringFXMLLoader; +import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; import java.lang.invoke.MethodHandles; import javafx.application.Application; import javafx.scene.Parent; @@ -46,11 +45,6 @@ public final class CreateNewEmployeeApplication extends Application { LOG.debug("Application startup complete"); } - public static void main(String[] args) { - LOG.debug("Application starting with arguments={}", (Object) args); - Application.launch(MainApplication.class, args); - } - @Override public void stop() { LOG.debug("Stopping application"); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java index 4a7477b..da8a6ac 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java @@ -5,7 +5,7 @@ import static org.mockito.Mockito.when; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest; import java.util.ArrayList; import java.util.Collections; @@ -40,7 +40,7 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest } @Test - public void testClickAddValidEmployee() throws PersistenceException, InvalidEmployeeException { + public void testClickAddValidEmployee() throws InvalidEmployeeException, ServiceException { when(employeeService.add(any())).thenReturn(1L); @@ -56,8 +56,7 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest } @Test - public void testClickAddInvalidEmployee() - throws PersistenceException, InvalidEmployeeException { + public void testClickAddInvalidEmployee() throws InvalidEmployeeException, ServiceException { when(employeeService.add(any())).thenThrow(InvalidEmployeeException.class); @@ -72,10 +71,10 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest } @Test - public void testClickAddEmployeeWithPersistenceException() - throws PersistenceException, InvalidEmployeeException { + public void testClickAddEmployeeWithServiceException() + throws InvalidEmployeeException, ServiceException { - when(employeeService.add(any())).thenThrow(PersistenceException.class); + when(employeeService.add(any())).thenThrow(ServiceException.class); clickOn("#inputName", Motion.DIRECT, MouseButton.PRIMARY); write("Test"); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java index ac73c9a..47328b3 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java @@ -14,6 +14,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.Employe import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.time.LocalDate; import org.junit.Assert; import org.junit.Test; @@ -41,7 +42,7 @@ public class EmployeeServiceTest { try { Assert.assertThat(employeeService.add(employee), is(1L)); - } catch (InvalidEmployeeException | PersistenceException e) { + } catch (InvalidEmployeeException | ServiceException e) { fail(); } } @@ -60,7 +61,7 @@ public class EmployeeServiceTest { try { employeeService.add(employee); - } catch (PersistenceException e) { + } catch (ServiceException e) { fail(); } } -- cgit v1.2.3-70-g09d2