From dffe0187df216152b883bd6df009fb7bfbfc084d Mon Sep 17 00:00:00 2001 From: atusa17 Date: Sun, 17 Feb 2019 18:23:09 -0700 Subject: [PATCH] PAN-7 Added response codes to DefinitionRepository methods --- .../controller/DefinitionController.java | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java index 4d875db..a73093e 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java @@ -3,10 +3,13 @@ package edu.msudenver.tsp.persistence.controller; import edu.msudenver.tsp.persistence.dto.DefinitionDto; import edu.msudenver.tsp.persistence.repository.DefinitionRepository; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.Optional; @RestController @AllArgsConstructor @@ -14,8 +17,37 @@ import org.springframework.web.bind.annotation.RestController; public class DefinitionController { private final DefinitionRepository definitionRepository; - @GetMapping("/all") - public @ResponseBody Iterable getAllDefinitions() { - return definitionRepository.findAll(); + @GetMapping("/") + public @ResponseBody + ResponseEntity> getAllDefinitions() { + final Iterable listOfDefinitions = definitionRepository.findAll(); + return new ResponseEntity<>(listOfDefinitions, HttpStatus.OK); + } + + @GetMapping("/{id}") + public @ResponseBody + ResponseEntity getDefinitionById(@PathVariable("id") final Integer id) { + if (id == null) { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + } + final Optional definition = definitionRepository.findById(id); + return definition.map(definitionDto -> + new ResponseEntity<>(definitionDto, HttpStatus.OK)).orElseGet( + () -> new ResponseEntity<>(HttpStatus.NOT_FOUND)); + + } + + @PostMapping("/add") + public @ResponseBody ResponseEntity insertDefinition( + @Valid @ModelAttribute("definitionDto") final DefinitionDto definitionDto, + final BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY); + } + if (definitionDto == null) { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + } + final DefinitionDto savedDefinition = definitionRepository.save(definitionDto); + return new ResponseEntity<>(savedDefinition, HttpStatus.CREATED); } }