Advertisement
Guest User

Untitled

a guest
Sep 13th, 2017
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.63 KB | None | 0 0
  1. @RestController
  2. @RequestMapping(value = "/api/v1/message/", produces = MediaType.APPLICATION_JSON_VALUE)
  3. @Api(value = "Message API", description = "Provides a list of methods that manage messages")
  4. public class MessageRestController {
  5.  
  6.     @Autowired
  7.     private MessageService messageService;
  8.     @Autowired
  9.     private AuthorizationService authorizationService;
  10.     @Autowired
  11.     private UnidirectionalConverter<SendMessageDTO, Message> converterSendMessageDTOToMessage;
  12.     @Autowired
  13.     private UnidirectionalConverter<Message, SentMessageInfoDTO> converterMessageToSentMessageInfoDTO;
  14.     @Autowired
  15.     private UnidirectionalConverter<Message, SentMessageDTO> converterMessageToSentMessageDTO;
  16.     @Autowired
  17.     private UnidirectionalConverter<Message, ReceivedMessageInfoDTO> converterMessageToReceivedMessageInfoDTO;
  18.     @Autowired
  19.     private UnidirectionalConverter<Message, ReceivedMessageDTO> converterMessageToReceivedMessageDTO;
  20.  
  21.     @ApiOperation(value = "Save message", code = 201)
  22.     @ApiResponses(value = { @ApiResponse(code = 400, message = "Incorrect data in the form") })
  23.     @PostMapping
  24.     public
  25.     HttpEntity<Boolean> addMessage(
  26.             @ApiParam(value = "Message", required = true) @RequestBody @Valid SendMessageDTO sendMessageDTO,
  27.             UriComponentsBuilder uriComponentsBuilder
  28.     ) {
  29.         messageService.saveMessage(converterSendMessageDTOToMessage.convert(sendMessageDTO));
  30.  
  31.         UriComponents uriComponents
  32.                 = uriComponentsBuilder.path("/profile/{username}").buildAndExpand(sendMessageDTO.getTo());
  33.  
  34.         HttpHeaders httpHeaders = new HttpHeaders();
  35.         httpHeaders.setLocation(uriComponents.toUri());
  36.  
  37.         return new ResponseEntity<>(true, httpHeaders, HttpStatus.CREATED);
  38.     }
  39.  
  40.     @ApiOperation(value = "Get sent message by ID")
  41.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  42.     @GetMapping(value = "/sent/{id}")
  43.     public
  44.     HttpEntity<SentMessageDTO> getSentMessage(
  45.             @ApiParam(value = "The message ID", required = true) @RequestParam Long id
  46.     ) {
  47.         return messageService.findByIdAndSender(id, authorizationService.getUserId())
  48.                 .map(message -> ResponseEntity.ok().body(converterMessageToSentMessageDTO.convert(message)))
  49.                 .orElseGet(() -> ResponseEntity.notFound().build());
  50.     }
  51.  
  52.     @ApiOperation(value = "Get received message by ID")
  53.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  54.     @GetMapping(value = "/received/{id}")
  55.     public
  56.     HttpEntity<ReceivedMessageDTO> getReceivedMessage(
  57.             @ApiParam(value = "The message ID", required = true) @RequestParam Long id
  58.     ) {
  59.         return messageService.findByIdAndRecipient(id, authorizationService.getUserId())
  60.                 .map(message -> ResponseEntity.ok().body(converterMessageToReceivedMessageDTO.convert(message)))
  61.                 .orElseGet(() -> ResponseEntity.notFound().build());
  62.     }
  63.  
  64.     @ApiOperation(value = "Remove sent message by ID")
  65.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  66.     @DeleteMapping(value = "/sent")
  67.     public
  68.     HttpEntity<Boolean> removeSentMessage(
  69.             @ApiParam(value = "The message ID", required = true) @RequestParam Long id
  70.     ) {
  71.         return messageService.findBySender(authorizationService.getUserId()).stream().anyMatch(message -> message.getId().equals(id)) ?
  72.                 ResponseEntity.ok().body(messageService.removeSentMessage(id)) : ResponseEntity.notFound().build();
  73.     }
  74.  
  75.     @ApiOperation(value = "Remove received message by ID")
  76.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  77.     @DeleteMapping(value = "/received")
  78.     public
  79.     HttpEntity<Boolean> removeReceivedMessage(
  80.             @ApiParam(value = "The message ID", required = true) @RequestParam Long id
  81.     ) {
  82.         return messageService.findByRecipient(authorizationService.getUserId()).stream().anyMatch(message -> message.getId().equals(id)) ?
  83.                 ResponseEntity.ok().body(messageService.removeReceivedMessage(id)) : ResponseEntity.notFound().build();
  84.     }
  85.  
  86.     @ApiOperation(value = "Search sent messages by phrase")
  87.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  88.     @GetMapping(value = "/sent/search")
  89.     public
  90.     HttpEntity<List<SentMessageInfoDTO>> searchSentMessage(
  91.             @ApiParam(value = "Search for a phrase", required = true) @RequestParam String q
  92.     ) {
  93.         List<Message> messageList = messageService.findSentMessagesByContaining(authorizationService.getUserId(), q);
  94.  
  95.         return !messageList.isEmpty() ?
  96.                 ResponseEntity.ok().body(converterMessageToSentMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
  97.     }
  98.  
  99.     @ApiOperation(value = "Search received messages by phrase")
  100.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  101.     @GetMapping(value = "/received/search")
  102.     public
  103.     HttpEntity<List<ReceivedMessageInfoDTO>> searchReceivedMessage(
  104.             @ApiParam(value = "Search for a phrase", required = true) @RequestParam String q
  105.     ) {
  106.         List<Message> messageList = messageService.findReceivedMessagesByContaining(authorizationService.getUserId(), q);
  107.  
  108.         return !messageList.isEmpty() ?
  109.                 ResponseEntity.ok().body(converterMessageToReceivedMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
  110.     }
  111.  
  112.     @ApiOperation(value = "Get all sent messages by user ID")
  113.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  114.     @GetMapping(value = "/sent/list")
  115.     public
  116.     HttpEntity<List<SentMessageInfoDTO>> getSentMessageInfoDTO() {
  117.         List<Message> messageList = messageService.findBySender(authorizationService.getUserId());
  118.  
  119.         return !messageList.isEmpty() ?
  120.                 ResponseEntity.ok().body(converterMessageToSentMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
  121.     }
  122.  
  123.     @ApiOperation(value = "Get all received messages by user ID")
  124.     @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
  125.     @GetMapping(value = "/received/list")
  126.     public
  127.     HttpEntity<List<ReceivedMessageInfoDTO>> getReceivedMessageInfoDTO() {
  128.         List<Message> messageList = messageService.findByRecipient(authorizationService.getUserId());
  129.  
  130.         return !messageList.isEmpty() ?
  131.                 ResponseEntity.ok().body(converterMessageToReceivedMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
  132.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement