No Description

TvSeriesController.java 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package fr.natan.akkastreamfileprocessingapi.controller;
  2. import fr.natan.akkastreamfileprocessingapi.futurecompleteness.CompletableFutureBuilder;
  3. import fr.natan.akkastreamfileprocessingapi.models.ModelsAndJsonMap;
  4. import fr.natan.akkastreamfileprocessingapi.service.AkkaStreamFileProcessingFuture;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.http.HttpStatus;
  8. import org.springframework.http.ResponseEntity;
  9. import org.springframework.web.bind.annotation.PathVariable;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import play.api.libs.json.JsValue;
  14. import play.api.libs.json.Json;
  15. import scala.Option;
  16. import scala.collection.IndexedSeq;
  17. import scala.concurrent.Future;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.concurrent.CompletableFuture;
  21. import java.util.concurrent.ExecutionException;
  22. @SuppressWarnings("SpellCheckingInspection")
  23. @RestController
  24. public class TvSeriesController {
  25. private final AkkaStreamFileProcessingFuture akkaStreamFilesProcessing;
  26. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  27. public TvSeriesController(AkkaStreamFileProcessingFuture akkaStreamFilesProcessing) {
  28. this.akkaStreamFilesProcessing = akkaStreamFilesProcessing;
  29. }
  30. @RequestMapping(value = "/persons/id/{personID}", method = RequestMethod.GET)
  31. private String getPersonByID(@PathVariable(name = "personID") String personID) throws ExecutionException, InterruptedException {
  32. Future<Option<ModelsAndJsonMap.Person>> futurePerson = akkaStreamFilesProcessing.getPersonByIdFuture(personID);
  33. CompletableFuture<ModelsAndJsonMap.Person> completableFuture = CompletableFutureBuilder
  34. .buildcompletableFuture1(futurePerson);
  35. ModelsAndJsonMap.Person person = completableFuture.get();
  36. JsValue personJs = Json.toJson(person, person.personJsonFormatter());
  37. return Json.prettyPrint(personJs);
  38. }
  39. @RequestMapping(value = "/persons/name/{primaryName}", method = RequestMethod.GET)
  40. private String getPersonByName(@PathVariable(name = "primaryName") String primaryName)
  41. throws ExecutionException, InterruptedException {
  42. Future<Option<ModelsAndJsonMap.Person>> personFuture = akkaStreamFilesProcessing.getPersonByNameFuture(primaryName);
  43. CompletableFuture<ModelsAndJsonMap.Person> personCompletableFuture = CompletableFutureBuilder
  44. .buildcompletableFuture1(personFuture);
  45. ModelsAndJsonMap.Person person = personCompletableFuture.get();
  46. JsValue personJs = Json.toJson(person, person.personJsonFormatter());
  47. return Json.prettyPrint(personJs);
  48. }
  49. @RequestMapping(value = "/tvseries/id/{tvSerieId}", method = RequestMethod.GET)
  50. private String getTvSerieByID(@PathVariable(name = "tvSerieId") String tvSerieID)
  51. throws ExecutionException, InterruptedException {
  52. Future<Option<ModelsAndJsonMap.TvSerie>> tvSerieFuture = akkaStreamFilesProcessing.getTvSerieByIdFuture(tvSerieID);
  53. CompletableFuture<ModelsAndJsonMap.TvSerie> tvSerieCompletableFuture = CompletableFutureBuilder
  54. .buildcompletableFuture1(tvSerieFuture);
  55. ModelsAndJsonMap.TvSerie tvSerie = tvSerieCompletableFuture.get();
  56. JsValue tvSerieJs = Json.toJson(tvSerie, tvSerie.tvSerieJsonFormatter());
  57. return Json.prettyPrint(tvSerieJs);
  58. }
  59. @RequestMapping(value = "/tvseries/title/{tvseriePrimaryTitle}", method = RequestMethod.GET)
  60. private List<String> getTvserieByPrimaryTitle(
  61. @PathVariable(name = "tvseriePrimaryTitle") String tvseriePrimaryTitle) throws InterruptedException, ExecutionException {
  62. Future<IndexedSeq<ModelsAndJsonMap.TvSerie>> listFuture = akkaStreamFilesProcessing
  63. .getTvSeriesByPrimaryTitleFuture(tvseriePrimaryTitle);
  64. CompletableFuture<IndexedSeq<ModelsAndJsonMap.TvSerie>> completableFuture =
  65. CompletableFutureBuilder.buildcompletableFuture2(listFuture);
  66. IndexedSeq<ModelsAndJsonMap.TvSerie> tvSerieList = completableFuture.get();
  67. List<String> tvSeries = new ArrayList<>();
  68. tvSerieList.foreach(tvSerie -> {
  69. JsValue tvSerieJs = Json.toJson(tvSerie, tvSerie.tvSerieJsonFormatter());
  70. tvSeries.add(Json.prettyPrint(tvSerieJs));
  71. return null;
  72. });
  73. return tvSeries;
  74. }
  75. @RequestMapping(value = "/persons/tvseries/title/{tvSerieTitle}", method = RequestMethod.GET)
  76. private List<String> getPersonsForTvSerieByTvSerieTitle(@PathVariable(name = "tvSerieTitle") String tvSerieTitle)
  77. throws InterruptedException, ExecutionException {
  78. Future<IndexedSeq<ModelsAndJsonMap.Person>> futurePersonSeq = akkaStreamFilesProcessing
  79. .getPersonsForTvSerieByTvSerieTitleFuture(tvSerieTitle);
  80. CompletableFuture<IndexedSeq<ModelsAndJsonMap.Person>> completableFuture = CompletableFutureBuilder
  81. .buildcompletableFuture2(futurePersonSeq);
  82. IndexedSeq<ModelsAndJsonMap.Person> personIndexedSeq = completableFuture.get();
  83. List<String> personList = new ArrayList<>();
  84. personIndexedSeq.foreach(person -> {
  85. JsValue personJs = Json.toJson(person, person.personJsonFormatter());
  86. personList.add(Json.prettyPrint(personJs));
  87. return null;
  88. });
  89. return personList;
  90. }
  91. @RequestMapping(value = "/persons/tvseries/id/{tvSerieID}", method = RequestMethod.GET)
  92. private List<String> getPersonsForTvSerieByTvSerieID(@PathVariable(name = "tvSerieID") String tvSerieID)
  93. throws InterruptedException, ExecutionException {
  94. Future<IndexedSeq<ModelsAndJsonMap.Person>> futureIndexedSeqPersons = akkaStreamFilesProcessing
  95. .getPersonsForTvSerieByTvSerieIDFuture(tvSerieID);
  96. CompletableFuture<IndexedSeq<ModelsAndJsonMap.Person>> seqCompletableFuture = CompletableFutureBuilder
  97. .buildcompletableFuture2(futureIndexedSeqPersons);
  98. IndexedSeq<ModelsAndJsonMap.Person> personIndexedSeq = seqCompletableFuture.get();
  99. List<String> personsList = new ArrayList<>();
  100. personIndexedSeq.foreach(person ->{
  101. JsValue personJs = Json.toJson(person, person.personJsonFormatter());
  102. personsList.add(Json.prettyPrint(personJs));
  103. return null;
  104. });
  105. return personsList;
  106. }
  107. @RequestMapping(value = "/persons", method = RequestMethod.GET)
  108. private ResponseEntity<String> getAllPersons() {
  109. akkaStreamFilesProcessing.getAllPersonsFuture();
  110. return new ResponseEntity<>("is running", HttpStatus.OK);
  111. }
  112. @RequestMapping(value = "/tvseries", method = RequestMethod.GET)
  113. private ResponseEntity<String> getAllvSeries() {
  114. akkaStreamFilesProcessing.getAllTvSeriesFuture();
  115. return new ResponseEntity<>("is running", HttpStatus.OK);
  116. }
  117. }

Powered by TurnKey Linux.