org.springdoc.demo.resource.web.controller.FooController Maven / Gradle / Ivy
package org.springdoc.demo.resource.web.controller;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.demo.resource.model.Foo;
import org.springdoc.demo.resource.service.IFooService;
import org.springdoc.demo.resource.web.dto.FooDTO;
import org.springframework.http.HttpStatus;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
@RestController
@RequestMapping(value = "/api/foos")
@SecurityRequirement(name = "security_auth")
public class FooController {
private IFooService fooService;
public FooController(IFooService fooService) {
this.fooService = fooService;
}
@GetMapping(value = "/{id}")
public FooDTO findOne(@PathVariable Long id) {
Foo entity = fooService.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
return convertToDto(entity);
}
@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public void create(@RequestBody FooDTO newFoo) {
Foo entity = convertToEntity(newFoo);
this.fooService.save(entity);
}
@GetMapping
public Collection findAll() {
Iterable foos = this.fooService.findAll();
List fooDtos = new ArrayList<>();
foos.forEach(p -> fooDtos.add(convertToDto(p)));
return fooDtos;
}
@PutMapping("/{id}")
public FooDTO updateFoo(@PathVariable("id") Long id, @RequestBody FooDTO updatedFoo) {
Foo fooEntity = convertToEntity(updatedFoo);
return this.convertToDto(this.fooService.save(fooEntity));
}
protected FooDTO convertToDto(Foo entity) {
FooDTO dto = new FooDTO(entity.getId(), entity.getName());
return dto;
}
protected Foo convertToEntity(FooDTO dto) {
Foo foo = new Foo(dto.getName());
if (!StringUtils.isEmpty(dto.getId())) {
foo.setId(dto.getId());
}
return foo;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy