package org.kalipo.web.rest; import com.codahale.metrics.annotation.Timed; import com.wordnik.swagger.annotations.ApiOperation; import com.wordnik.swagger.annotations.ApiResponse; import com.wordnik.swagger.annotations.ApiResponses; import org.kalipo.domain.ReputationModifier; import org.kalipo.service.ReputationModifierService; import org.kalipo.service.util.Asserts; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.inject.Inject; import javax.validation.constraints.NotNull; import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutionException; /** * REST controller for managing Privilege. */ @RestController @RequestMapping("/app/rest") public class ReputationModifierResource { private final Logger log = LoggerFactory.getLogger(ReputationModifierResource.class); @Inject private ReputationModifierService reputationModifierService; /** * PUT /rest/reputations -> Update existing reputation. */ @RequestMapping(value = "/reputations/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE) @Timed @ApiOperation(value = "Update existing reputation") @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid ID supplied"), @ApiResponse(code = 404, message = "Reputation not found") }) public void update(@PathVariable String id, @NotNull @RequestBody ReputationModifier reputationModifier) throws KalipoException { log.debug("REST request to update Reputation : {}", reputationModifier); Asserts.isNotNull(id, "id"); reputationModifier.setId(id); reputationModifierService.update(reputationModifier); } /** * GET /rest/reputations -> get all the reputations. */ @RequestMapping(value = "/reputations", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @Timed @ApiOperation(value = "Get all the reputations") public List<ReputationModifier> getAll() throws ExecutionException, InterruptedException { log.debug("REST request to get all Reputations"); return reputationModifierService.getAll().get(); } /** * GET /rest/reputations/:id -> get the "id" reputation. */ @RequestMapping(value = "/reputations/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @Timed @ApiOperation(value = "Get the \"id\" reputation.") @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid ID supplied"), @ApiResponse(code = 404, message = "Reputation not found") }) public ResponseEntity<ReputationModifier> get(@PathVariable String id) throws KalipoException, ExecutionException, InterruptedException { log.debug("REST request to get Reputation : {}", id); Asserts.isNotNull(id, "id"); return Optional.ofNullable(reputationModifierService.get(id).get()) .map(reputation -> new ResponseEntity<>( reputation, HttpStatus.OK)) .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } }