From e3415c6f40dd357b112bf527f9cd89fbd6e65313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luiz=20dos=20Santos=20Sobrinho?= Date: Mon, 6 Dec 2021 17:20:07 -0300 Subject: [PATCH] Implementacao TDD desafio --- .../controllers/DepartmentController.java | 28 +++++++++++ .../bds01/controllers/EmployeeController.java | 43 +++++++++++++++++ .../devsuperior/bds01/dto/DepartmentDTO.java | 46 +++++++++++++++++++ .../repositories/DepartmentRepository.java | 14 ++++++ .../repositories/EmployeeRepository.java | 12 +++++ .../bds01/services/DepartmentSerice.java | 29 ++++++++++++ .../bds01/services/EmployeeService.java | 41 +++++++++++++++++ 7 files changed, 213 insertions(+) create mode 100644 src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java create mode 100644 src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java create mode 100644 src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java create mode 100644 src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java create mode 100644 src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java create mode 100644 src/main/java/com/devsuperior/bds01/services/DepartmentSerice.java create mode 100644 src/main/java/com/devsuperior/bds01/services/EmployeeService.java diff --git a/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java b/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java new file mode 100644 index 0000000..2d5510d --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/controllers/DepartmentController.java @@ -0,0 +1,28 @@ +package com.devsuperior.bds01.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.devsuperior.bds01.dto.DepartmentDTO; +import com.devsuperior.bds01.services.DepartmentSerice; + +@RestController +@RequestMapping(value = "/departments") +public class DepartmentController { + + @Autowired + private DepartmentSerice service; + + @GetMapping + public ResponseEntity> findAll(){ + + List departments = service.findAll(); + + return ResponseEntity.ok().body(departments); + } +} diff --git a/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java b/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java new file mode 100644 index 0000000..da7bb17 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/controllers/EmployeeController.java @@ -0,0 +1,43 @@ +package com.devsuperior.bds01.controllers; + +import java.net.URI; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import com.devsuperior.bds01.dto.EmployeeDTO; +import com.devsuperior.bds01.services.EmployeeService; + +@RestController +@RequestMapping(value = "/employees") +public class EmployeeController { + + @Autowired + private EmployeeService service; + + @GetMapping + public ResponseEntity> findAll(Pageable pageable) { + PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(),Sort.by("name")); + Page employees = service.findAll(pageRequest); + return ResponseEntity.ok().body(employees); + } + + @PostMapping + public ResponseEntity insert(@RequestBody EmployeeDTO employeeDTO){ + + employeeDTO = service.insert(employeeDTO); + URI uri = ServletUriComponentsBuilder.fromCurrentContextPath().path("/{id}").buildAndExpand(employeeDTO.getId()) + .toUri(); + return ResponseEntity.created(uri).body(employeeDTO); + } +} diff --git a/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java b/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java new file mode 100644 index 0000000..d0ee42b --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java @@ -0,0 +1,46 @@ +package com.devsuperior.bds01.dto; + +import java.io.Serializable; + +import com.devsuperior.bds01.entities.Department; + +public class DepartmentDTO implements Serializable{ + + private static final long serialVersionUID = 8606549653896788793L; + + public Long id; + public String name; + + public DepartmentDTO() { + super(); + } + + public DepartmentDTO(Long id, String name) { + + this.id = id; + this.name = name; + } + + public DepartmentDTO(Department department) { + + this.id = department.getId(); + this.name = department.getName(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java b/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java new file mode 100644 index 0000000..e7af75d --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/repositories/DepartmentRepository.java @@ -0,0 +1,14 @@ +package com.devsuperior.bds01.repositories; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.devsuperior.bds01.entities.Department; + +@Repository +public interface DepartmentRepository extends JpaRepository { + + List findByOrderByNameAsc(); +} diff --git a/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java b/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java new file mode 100644 index 0000000..650f455 --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/repositories/EmployeeRepository.java @@ -0,0 +1,12 @@ +package com.devsuperior.bds01.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.devsuperior.bds01.entities.Employee; + +@Repository +public interface EmployeeRepository extends JpaRepository{ + + +} diff --git a/src/main/java/com/devsuperior/bds01/services/DepartmentSerice.java b/src/main/java/com/devsuperior/bds01/services/DepartmentSerice.java new file mode 100644 index 0000000..c8edd3f --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/services/DepartmentSerice.java @@ -0,0 +1,29 @@ +package com.devsuperior.bds01.services; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.devsuperior.bds01.dto.DepartmentDTO; +import com.devsuperior.bds01.entities.Department; +import com.devsuperior.bds01.repositories.DepartmentRepository; + +@Service +public class DepartmentSerice { + + @Autowired + private DepartmentRepository repository; + + @Transactional(readOnly = true) + public List findAll() { + + List findAll = repository.findAll(Sort.by("Name")); + + return findAll.stream().map(x -> new DepartmentDTO(x)).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/devsuperior/bds01/services/EmployeeService.java b/src/main/java/com/devsuperior/bds01/services/EmployeeService.java new file mode 100644 index 0000000..30f1dba --- /dev/null +++ b/src/main/java/com/devsuperior/bds01/services/EmployeeService.java @@ -0,0 +1,41 @@ +package com.devsuperior.bds01.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.devsuperior.bds01.dto.EmployeeDTO; +import com.devsuperior.bds01.entities.Department; +import com.devsuperior.bds01.entities.Employee; +import com.devsuperior.bds01.repositories.EmployeeRepository; + +@Service +public class EmployeeService { + + @Autowired + private EmployeeRepository repository; + + @Transactional(readOnly = true) + public Page findAll(Pageable pageable) { + Page employees = repository.findAll(pageable); + return employees.map(EmployeeDTO::new); + } + + + @Transactional + public EmployeeDTO insert(EmployeeDTO employeeDTO) { + + Employee employee = new Employee(); + employee.setEmail(employeeDTO.getEmail()); + employee.setName(employeeDTO.getName()); + employee.setDepartment(new Department(employeeDTO.getDepartmentId(), null)); + + employee = repository.save(employee); + return new EmployeeDTO(employee); + } + + + +}