Advertisement
Guest User

Untitled

a guest
Apr 8th, 2024
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.05 KB | None | 0 0
  1.   @Override
  2.   public Map<Reader, List<Book>> findAllWithBooks() {
  3.     var selectAllReadersWithBooks =
  4.         """
  5.                SELECT reader.id, reader.name, book.name AS bookName, book.author AS authorName
  6.                FROM reader LEFT JOIN book ON reader.id = book.reader_id
  7.                """;
  8.     try (var connection = DBUtil.getConnection();
  9.         var selectAllReadersWithBooksStatement = connection.createStatement()) {
  10.       var resultSet = selectAllReadersWithBooksStatement.executeQuery(selectAllReadersWithBooks);
  11.       Map<Reader, List<Book>> map = new HashMap<>();
  12.       while (resultSet.next()) {
  13.         var book = new Book(resultSet.getString("bookName"), resultSet.getString("authorName"));
  14.         map.computeIfAbsent(mapResultSetToReader(resultSet), k -> new ArrayList<>()).add(book);
  15.       }
  16.       return map;
  17.     } catch (SQLException e) {
  18.       throw new DaoOperationException("Error finding readers with borrowed books list!");
  19.     }
  20.   }
  21.  
  22.  private void showAllReadersWithBorrowedBooks() {
  23.     Map<Reader, List<Book>> map = libraryService.findAllReadersWithBooks();
  24.     map.forEach(
  25.         (reader, books) -> {
  26.           if (books.get(0).getName() == null) {
  27.             System.out.println(
  28.                 reader.getName()
  29.                     + ":"
  30.                     + SET_GREEN_TEXT_COLOR
  31.                     + "no books borrowed"
  32.                     + SET_DEFAULT_TEXT_COLOR);
  33.           } else {
  34.             System.out.print(SET_GREEN_TEXT_COLOR + reader.getName() + ": ");
  35.             var booksInfo =
  36.                 books.stream()
  37.                     .map(book -> SET_GREEN_TEXT_COLOR + book.getName() + " by " + book.getAuthor())
  38.                     .collect(Collectors.joining(", "));
  39.             System.out.println(booksInfo + SET_DEFAULT_TEXT_COLOR);
  40.           }
  41.         });
  42.   }
  43. package entity;
  44.  
  45. import java.util.Objects;
  46.  
  47. public class Book {
  48.   private long id;
  49.   private String name;
  50.   private  String author;
  51.   private long readerId;
  52.  
  53.   public Book(String name, String author) {
  54.     this.name = name;
  55.     this.author = author;
  56.   }
  57.    
  58.   public Book() {
  59.   }
  60.  
  61.   public void setReaderId(long readerId) {
  62.     this.readerId = readerId;
  63.   }
  64.  
  65.   public void setId(long id) {
  66.     this.id = id;
  67.   }
  68.  
  69.   public void setName(String name) {
  70.     this.name = name;
  71.   }
  72.  
  73.   public void setAuthor(String author) {
  74.     this.author = author;
  75.   }
  76.  
  77.   public String getName() {
  78.     return name;
  79.   }
  80.  
  81.   public String getAuthor() {
  82.     return author;
  83.   }
  84.  
  85.   @Override
  86.   public boolean equals(Object o) {
  87.     if (this == o) return true;
  88.     if (o == null || getClass() != o.getClass()) return false;
  89.     Book book = (Book) o;
  90.     return id == book.id;
  91.   }
  92.  
  93.   @Override
  94.   public int hashCode() {
  95.     return Objects.hash(id);
  96.   }
  97.  
  98.   @Override
  99.   public String toString() {
  100.     return "Book{"
  101.         + "id="
  102.         + id
  103.         + ", name='"
  104.         + name
  105.         + '\''
  106.         + ", author='"
  107.         + author
  108.         + '\''
  109.         + ", readerId="
  110.         + readerId
  111.         + '}';
  112.   }
  113. }
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement