UserResource.java
package br.com.rivelino.demo.resources;
import br.com.rivelino.demo.domain.dto.UserDTO;
import br.com.rivelino.demo.services.UserService;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import java.net.URI;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping(value = "/user")
public class UserResource {
public static final String ID = "/{id}";
@Autowired
private ModelMapper mapper;
@Autowired
private UserService userService;
@GetMapping(value = ID)
public ResponseEntity<UserDTO> findById(@PathVariable Integer id) {
return ResponseEntity.ok().body(mapper.map(userService.findById(id), UserDTO.class));
}
@GetMapping
public ResponseEntity<List<UserDTO>> findAll() {
return ResponseEntity.ok()
.body(userService.findAll()
.stream().map(x -> mapper.map(x, UserDTO.class)).collect(Collectors.toList()));
}
@PostMapping
public ResponseEntity<UserDTO> create(@RequestBody UserDTO obj) {
URI uri = ServletUriComponentsBuilder
.fromCurrentRequest().path(ID).buildAndExpand(userService.create(obj)).toUri();
return ResponseEntity.created(uri).build();
}
@PutMapping(value = ID)
public ResponseEntity<UserDTO> update(@PathVariable Integer id, @RequestBody UserDTO obj) {
obj.setId(id);
return ResponseEntity.ok().body(mapper.map(userService.update(obj), UserDTO.class));
}
@DeleteMapping(value = ID)
public ResponseEntity<UserDTO> delete(@PathVariable Integer id) {
userService.delete(id);
return ResponseEntity.noContent().build();
}
}