Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
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.DepartmentService;

@RestController
@RequestMapping(value = "/departments")
public class DepartmentController {

@Autowired
DepartmentService departmentService;

@GetMapping
public ResponseEntity<List<DepartmentDTO>> findAll(){

List<DepartmentDTO> listDepartment = departmentService.findAll();

return ResponseEntity.ok().body(listDepartment);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
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
EmployeeService employeeService;

@GetMapping
ResponseEntity<Page<EmployeeDTO>> findAll(Pageable pageable){
PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("name"));

Page<EmployeeDTO> pageEmployess = employeeService.findAll(pageRequest);

return ResponseEntity.ok().body(pageEmployess);
}

@PostMapping
ResponseEntity<EmployeeDTO> insert(@RequestBody EmployeeDTO employee) {
EmployeeDTO newEmployeeDto = employeeService.insert(employee);

URI uri = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(newEmployeeDto.getId())
.toUri();

return ResponseEntity.created(uri).body(newEmployeeDto); // o método created, retorna um status 201, criado.

}

}
45 changes: 45 additions & 0 deletions src/main/java/com/devsuperior/bds01/dto/DepartmentDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
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 = 1L;

public Long id;
public String name;


public DepartmentDTO () {
}

public DepartmentDTO(Long id, String name) {
this.id = id;
this.name = name;
}


public DepartmentDTO(Department entity) {
id = entity.getId();
name = entity.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;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.devsuperior.bds01.repositories;

import org.springframework.data.jpa.repository.JpaRepository;

import com.devsuperior.bds01.entities.Department;

public interface DepartmentRepository extends JpaRepository<Department, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.devsuperior.bds01.repositories;

import org.springframework.data.jpa.repository.JpaRepository;

import com.devsuperior.bds01.entities.Employee;

public interface EmployeeRepository extends JpaRepository<Employee, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
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 com.devsuperior.bds01.dto.DepartmentDTO;
import com.devsuperior.bds01.entities.Department;
import com.devsuperior.bds01.repositories.DepartmentRepository;

@Service
public class DepartmentService {

@Autowired
public DepartmentRepository departmentRepository;

public List<DepartmentDTO> findAll() {
List<Department> listDepartment = departmentRepository.findAll(Sort.by("name"));

List<DepartmentDTO> listDepartmentDto = listDepartment.stream().map(x -> new DepartmentDTO(x)).collect(Collectors.toList());

return listDepartmentDto;
}

}
43 changes: 43 additions & 0 deletions src/main/java/com/devsuperior/bds01/services/EmployeeService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
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
EmployeeRepository employeeRepository;

@Transactional(readOnly = true)
public Page<EmployeeDTO> findAll(Pageable pageable ) {
Page<Employee> pageEmployee = employeeRepository.findAll(pageable);

Page<EmployeeDTO> pageEmployeeDto = pageEmployee.map(x -> new EmployeeDTO(x));

return pageEmployeeDto;

}

public EmployeeDTO insert(EmployeeDTO employee) {

Employee newEmployee = new Employee();

newEmployee.setName(employee.getName());
newEmployee.setEmail(employee.getEmail());
newEmployee.setDepartment(new Department(employee.getDepartmentId(), "Desenvolvimento"));

newEmployee = employeeRepository.save(newEmployee);

return new EmployeeDTO(newEmployee);
}

}