/** * Endpoint for deleting all feedback in the system * * @return {@link org.springframework.http.ResponseEntity} with string containing outcome of action */ @RequestMapping(method = RequestMethod.DELETE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, String>> deleteAllFeedBack() { feedbackRepository.deleteAll(); return new ResponseEntity<>(response("All Feedback messages deleted"), HttpStatus.OK); }
/** * Endpoint for getting all feedback within the system * * @return returns a list of all feedback */ @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<List<NameEntryFeedback>> getFeedbacks() { final Sort sort = new Sort(Sort.Direction.DESC, "submittedAt"); return new ResponseEntity<>(feedbackRepository.findAll(sort), HttpStatus.OK); }
/** * Endpoint for getting all feedback within the system for a given name * * @param name the name to get all feedback for * * @return a list of all feedback for given name */ @RequestMapping(params = "name", method = RequestMethod.GET) public ResponseEntity<List<NameEntryFeedback>> getFeedbacksForName(@RequestParam("name") String name) { final Sort sort = new Sort(Sort.Direction.DESC, "submittedAt"); return new ResponseEntity<>(feedbackRepository.findByName(name, sort), HttpStatus.OK); }
/** * Endpoint for deleting a feedback by Id, for a name * * @param feedbackId the feedback to delete * @return the status of the delete operation */ @RequestMapping(value = "{id}", method = RequestMethod.DELETE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, String>> deleteAFeedback(@PathVariable("id") String feedbackId) { final Long id = Long.valueOf(feedbackId); final NameEntryFeedback feedback = feedbackRepository.findOne(id); if (feedback == null) { return new ResponseEntity<>(response("No feedback found with supplied Id. None deleted"), HttpStatus.BAD_REQUEST); } feedbackRepository.delete(id); return new ResponseEntity<>(response("Feedback message deleted"), HttpStatus.OK); }
/** * Endpoint for deleting all feedback for a name * * @return {@link org.springframework.http.ResponseEntity} with string containing outcome of action */ @RequestMapping(params = "name", method = RequestMethod.DELETE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, String>> deleteAllFeedbackForName(@RequestParam("name") String name) { if (entryService.loadName(name) == null) { throw new GenericApiCallException(name + " does not exist. Cannot delete all feedback"); } final Sort sort = new Sort(Sort.Direction.DESC, "submittedAt"); List<NameEntryFeedback> feedbacks = feedbackRepository.findByName(name, sort); feedbacks.stream().forEach(feedback -> feedbackRepository.delete(feedback)); return new ResponseEntity<>(response("All Feedback messages deleted for "+ name), HttpStatus.OK); }
/** * Endpoint for retrieving a feedback by Id. * * @param feedbackId the feedback to delete * @return the status of the delete operation */ @RequestMapping(value = "{id}", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<NameEntryFeedback> getAFeedback(@PathVariable("id") String feedbackId) { final NameEntryFeedback feedback = feedbackRepository.findOne(Long.valueOf(feedbackId)); if (feedback == null) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } return new ResponseEntity<>(feedback, HttpStatus.OK); }
/** * Endpoint for adding a feedback * * @param postFeedback a map with key of "feedback" for the feedback * @return {@link org.springframework.http.ResponseEntity} with string containing outcome of action */ @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, String>> addFeedback(@RequestBody Map<String, String> postFeedback) { String feedback = postFeedback.get("feedback"); String name = postFeedback.get("name"); if (feedback.isEmpty()) { throw new GenericApiCallException("Cannot give an empty feedback"); } if (entryService.loadName(name) == null) { throw new GenericApiCallException(name + " does not exist. Cannot add feedback"); } feedbackRepository.save(new NameEntryFeedback(name, feedback)); return new ResponseEntity<>(response("Feedback added"), HttpStatus.CREATED); }
/** * Returns all the feedback for a name, sorted by time submitted * * @return the feedback as a list of {@link NameEntryFeedback} */ public List<NameEntryFeedback> getFeedback(NameEntry entry) { final Sort sort = new Sort(Sort.Direction.DESC, "submittedAt"); return nameEntryFeedbackRepository.findByName(entry.getName(), sort); }