Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. import akka.Done;
  2. import akka.NotUsed;
  3. import com.knoldus.Book;
  4. import com.knoldus.BookService;
  5. import com.lightbend.lagom.javadsl.api.ServiceCall;
  6. import com.lightbend.lagom.javadsl.persistence.PersistentEntityRef;
  7. import com.lightbend.lagom.javadsl.persistence.PersistentEntityRegistry;
  8. import com.lightbend.lagom.javadsl.persistence.ReadSide;
  9. import com.lightbend.lagom.javadsl.persistence.cassandra.CassandraSession;
  10. import commands.BookCommand;
  11. import events.BookEventProcessor;
  12.  
  13. import javax.inject.Inject;
  14. import java.util.List;
  15. import java.util.Optional;
  16. import java.util.concurrent.CompletionStage;
  17. import java.util.stream.Collectors;
  18.  
  19. public class BookServiceImpl implements BookService {
  20.  
  21. private final PersistentEntityRegistry persistentEntityRegistry;
  22. private final CassandraSession session;
  23.  
  24. /**
  25. * @param registry
  26. * @param readSide
  27. * @param session
  28. */
  29. @Inject
  30. public BookServiceImpl(final PersistentEntityRegistry registry, ReadSide readSide, CassandraSession session) {
  31. this.persistentEntityRegistry = registry;
  32. this.session = session;
  33.  
  34. persistentEntityRegistry.register(BookEntity.class);
  35. readSide.register(BookEventProcessor.class);
  36. }
  37.  
  38. /**
  39. * @param isbn
  40. * @return
  41. */
  42. @Override
  43. public ServiceCall<NotUsed, Optional<Book>> getBook(String isbn) {
  44. return request -> {
  45. CompletionStage<Optional<Book>> bookFuture =
  46. session.selectAll("SELECT * FROM book WHERE isbn = ?", isbn)
  47. .thenApply(rows ->
  48. rows.stream()
  49. .map(row -> Book.builder().isbn(row.getString("isbn"))
  50. .bookName(row.getString("bookName"))
  51. .authorName(row.getString("authorName"))
  52. .price(row.getFloat("price"))
  53. .build()
  54. )
  55. .findFirst()
  56. );
  57. return bookFuture;
  58. };
  59. }
  60.  
  61. /**
  62. * @return
  63. */
  64. @Override
  65. public ServiceCall<Book, Done> newBook() {
  66. return book -> {
  67. PersistentEntityRef<BookCommand> ref = bookEntityRef(book);
  68. return ref.ask(BookCommand.CreateBook.builder().book(book).build());
  69. };
  70. }
  71.  
  72. /**
  73. * @return
  74. */
  75. @Override
  76. public ServiceCall<Book, Done> updateBook() {
  77. return book -> {
  78. PersistentEntityRef<BookCommand> ref = bookEntityRef(book);
  79. return ref.ask(BookCommand.UpdateBook.builder().book(book).build());
  80. };
  81. }
  82.  
  83. /**
  84. * @param isbn
  85. * @return
  86. */
  87. @Override
  88. public ServiceCall<NotUsed, Done> deleteBook(String isbn) {
  89. return request -> {
  90. Book book = Book.builder().isbn(isbn).build();
  91. System.out.println(book);
  92. PersistentEntityRef<BookCommand> ref = bookEntityRef(book);
  93. return ref.ask(BookCommand.DeleteBook.builder().book(book).build());
  94. };
  95. }
  96.  
  97. @Override
  98. public ServiceCall<NotUsed, List<Book>> getAllBook() {
  99. return request -> {
  100. CompletionStage<List<Book>> bookFuture =
  101. session.selectAll("SELECT * FROM book")
  102. .thenApply(rows ->
  103. rows.stream()
  104. .map(row -> Book.builder().isbn(row.getString("isbn"))
  105. .bookName(row.getString("bookName"))
  106. .authorName(row.getString("authorName"))
  107. .price(row.getFloat("price"))
  108. .build()
  109. ).collect(Collectors.toList())
  110. );
  111. return bookFuture;
  112. };
  113. }
  114.  
  115. /**
  116. * @param book
  117. * @return
  118. */
  119. private PersistentEntityRef<BookCommand> bookEntityRef(Book book) {
  120. return persistentEntityRegistry.refFor(BookEntity.class, book.getIsbn());
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement