From 1bb6757f9b66efba22f08c9650a0f8591a8b9c9e Mon Sep 17 00:00:00 2001
From: Dominic Rogetzer <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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<Employee> 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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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<Employee> 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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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<String> 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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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 <e1627756@student.tuwien.ac.at>
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/at/ac/tuwien')

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<Employee> list() throws PersistenceException {
+    public List<Employee> 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