diff --git a/pom.xml b/pom.xml index a4e1e3d..976738c 100644 --- a/pom.xml +++ b/pom.xml @@ -17,10 +17,15 @@ 17 + + org.springframework.boot + spring-boot-starter-data-rest + org.springframework.boot spring-boot-starter-data-jpa + org.springframework.boot spring-boot-starter-web diff --git a/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAO.java b/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAO.java deleted file mode 100644 index e6f13fe..0000000 --- a/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAO.java +++ /dev/null @@ -1,15 +0,0 @@ -//package com.manumiguezz.crudapplication.dao; -// -//import com.manumiguezz.crudapplication.entity.Employee; -// -//import java.util.List; -// -//public interface EmployeeDAO { -// List findAll(); -// -// Employee findById(int theId); -// -// Employee save(Employee theEmployee); -// -// void deleteByID(int theId); -//} diff --git a/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAOJpaImpl.java b/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAOJpaImpl.java deleted file mode 100644 index 6008827..0000000 --- a/src/main/java/com/manumiguezz/crudapplication/dao/EmployeeDAOJpaImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -//package com.manumiguezz.crudapplication.dao; -// -//import com.manumiguezz.crudapplication.entity.Employee; -//import jakarta.persistence.EntityManager; -//import jakarta.persistence.TypedQuery; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Repository; -// -//import java.util.List; -// -//@Repository -//public class EmployeeDAOJpaImpl implements EmployeeDAO { -// -// private EntityManager entityManager; -// -// @Autowired -// public EmployeeDAOJpaImpl(EntityManager theEntityManager) { -// entityManager = theEntityManager; -// } -// -// @Override -// public List findAll() { -// -// TypedQuery theQuery = entityManager.createQuery("from Employee", Employee.class); -// -// List employees = theQuery.getResultList(); -// -// return employees; -// } -// -// @Override -// public Employee findById(int theId) { -// Employee theEmployee = entityManager.find(Employee.class, theId); -// return theEmployee; -// } -// -// @Override -// public Employee save(Employee theEmployee) { -// // if ID of passed employee is equal to 0, it will insert a new one, else it will just update -// Employee dbEmployee = entityManager.merge(theEmployee); -// return dbEmployee; -// } -// -// @Override -// public void deleteByID(int theId) { -// Employee theEmployee = entityManager.find(Employee.class, theId); -// entityManager.remove(theEmployee); -// } -// -//} diff --git a/src/main/java/com/manumiguezz/crudapplication/rest/EmployeeRestController.java b/src/main/java/com/manumiguezz/crudapplication/rest/EmployeeRestController.java index 13a5acd..1c7a781 100644 --- a/src/main/java/com/manumiguezz/crudapplication/rest/EmployeeRestController.java +++ b/src/main/java/com/manumiguezz/crudapplication/rest/EmployeeRestController.java @@ -1,9 +1,7 @@ package com.manumiguezz.crudapplication.rest; -import com.manumiguezz.crudapplication.dao.EmployeeDAO; import com.manumiguezz.crudapplication.entity.Employee; -import com.manumiguezz.crudapplication.service.EmployeeService; -import com.manumiguezz.crudapplication.service.EmployeeServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -12,19 +10,24 @@ @RequestMapping("/api") public class EmployeeRestController { - private EmployeeService employeeService; + private Employee employeeService; - public EmployeeRestController (EmployeeService theEmployeeService) { + @Autowired + public EmployeeRestController(EmployeeService theEmployeeService) { employeeService = theEmployeeService; } + // expose "/employees" and return a list of employees @GetMapping("/employees") - public List findAll(){ + public List findAll() { return employeeService.findAll(); } + // add mapping for GET /employees/{employeeId} + @GetMapping("/employees/{employeeId}") public Employee getEmployee(@PathVariable int employeeId) { + Employee theEmployee = employeeService.findById(employeeId); if (theEmployee == null) { @@ -34,35 +37,61 @@ public Employee getEmployee(@PathVariable int employeeId) { return theEmployee; } - @PostMapping ("/employees") + // add mapping for POST /employees - add new employee + + @PostMapping("/employees") public Employee addEmployee(@RequestBody Employee theEmployee) { + // also just in case they pass an id in JSON ... set id to 0 + // this is to force a save of new item ... instead of update + theEmployee.setId(0); Employee dbEmployee = employeeService.save(theEmployee); + return dbEmployee; } + // add mapping for PUT /employees - update existing employee + @PutMapping("/employees") public Employee updateEmployee(@RequestBody Employee theEmployee) { + Employee dbEmployee = employeeService.save(theEmployee); + return dbEmployee; } - @DeleteMapping("/employees/{employeeId} ") + // add mapping for DELETE /employees/{employeeId} - delete employee + + @DeleteMapping("/employees/{employeeId}") public String deleteEmployee(@PathVariable int employeeId) { + Employee tempEmployee = employeeService.findById(employeeId); + // throw exception if null + if (tempEmployee == null) { - throw new RuntimeException("Employee id: " + employeeId + " not found"); + throw new RuntimeException("Employee id not found - " + employeeId); } - employeeService.deleteByID(employeeId); + employeeService.deleteById(employeeId); - return "Employee with id: " + employeeId + " was deleted"; + return "Deleted employee id - " + employeeId; } +} + + + + + + + + + + + -} diff --git a/src/main/java/com/manumiguezz/crudapplication/service/EmployeeService.java b/src/main/java/com/manumiguezz/crudapplication/service/EmployeeService.java deleted file mode 100644 index ff56fdb..0000000 --- a/src/main/java/com/manumiguezz/crudapplication/service/EmployeeService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.manumiguezz.crudapplication.service; - -import com.manumiguezz.crudapplication.entity.Employee; - -import java.util.List; - -public interface EmployeeService { - List findAll(); - - Employee findById(int theId); - - Employee save(Employee theEmployee); - - void deleteByID(int theId); - -} diff --git a/src/main/java/com/manumiguezz/crudapplication/service/EmployeeServiceImpl.java b/src/main/java/com/manumiguezz/crudapplication/service/EmployeeServiceImpl.java deleted file mode 100644 index 6acf772..0000000 --- a/src/main/java/com/manumiguezz/crudapplication/service/EmployeeServiceImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.manumiguezz.crudapplication.service; - -import com.manumiguezz.crudapplication.dao.EmployeeDAO; -import com.manumiguezz.crudapplication.dao.EmployeeRepository; -import com.manumiguezz.crudapplication.entity.Employee; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -@Service -public class EmployeeServiceImpl implements EmployeeService{ - - private EmployeeRepository employeeRepository; - - @Autowired - public EmployeeServiceImpl (EmployeeRepository theEmployeeRepository) { - employeeRepository = theEmployeeRepository; - } - - @Override - public List findAll() { - return employeeRepository.findAll(); - } - - @Override - public Employee findById(int theId) { - Optional result = employeeRepository.findById(theId); - - Employee theEmployee; - - if (result.isPresent()) { - theEmployee = result.get(); - } - else { - throw new RuntimeException("Did not find employee id: " + theId); - } - - return theEmployee; - } - - @Override - public Employee save(Employee theEmployee) { - return employeeRepository.save(theEmployee); - } - - @Override - public void deleteByID(int theId) { - employeeRepository.deleteById(theId); - } -} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4a4b39a..f95f4bc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/employee_directory spring.datasource.username=springstudent -spring.datasource.password=springstudent \ No newline at end of file +spring.datasource.password=springstudent + +spring.data.rest.base-path=/company-api +spring.data.rest.default-page-size=40 \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties index 4a4b39a..f95f4bc 100644 --- a/target/classes/application.properties +++ b/target/classes/application.properties @@ -1,4 +1,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/employee_directory spring.datasource.username=springstudent -spring.datasource.password=springstudent \ No newline at end of file +spring.datasource.password=springstudent + +spring.data.rest.base-path=/company-api +spring.data.rest.default-page-size=40 \ No newline at end of file diff --git a/target/classes/com/manumiguezz/crudapplication/dao/EmployeeRepository.class b/target/classes/com/manumiguezz/crudapplication/dao/EmployeeRepository.class new file mode 100644 index 0000000..1d2b904 Binary files /dev/null and b/target/classes/com/manumiguezz/crudapplication/dao/EmployeeRepository.class differ diff --git a/target/classes/com/manumiguezz/crudapplication/service/EmployeeService.class b/target/classes/com/manumiguezz/crudapplication/service/EmployeeService.class deleted file mode 100644 index fb6d74a..0000000 Binary files a/target/classes/com/manumiguezz/crudapplication/service/EmployeeService.class and /dev/null differ