100 lines
3.9 KiB
Java
100 lines
3.9 KiB
Java
package org.example;
|
|
import org.hibernate.Session;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.query.Query;
|
|
import java.util.List;
|
|
|
|
public class LibraryService {
|
|
|
|
private SessionFactory sessionFactory;
|
|
|
|
public LibraryService(SessionFactory sessionFactory) {
|
|
this.sessionFactory = sessionFactory;
|
|
}
|
|
|
|
public void printAllAuthors() {
|
|
try (Session session = sessionFactory.openSession()) {
|
|
Query<Author> query = session.createQuery("FROM Author", Author.class);
|
|
List<Author> authors = query.getResultList();
|
|
|
|
System.out.println("Dostępni autorzy:");
|
|
for (Author author : authors) {
|
|
System.out.println("ID: " + author.getId() + author.getName());
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<Book> findAllBooksByAuthorId(Long authorId) {
|
|
List<Book> books;
|
|
try (Session session = sessionFactory.openSession()) {
|
|
Query<Book> query = session.createQuery("SELECT b FROM Book b JOIN FETCH b.author WHERE b.author.id = :authorId", Book.class);
|
|
query.setParameter("authorId", authorId);
|
|
books = query.getResultList();
|
|
}
|
|
return books;
|
|
}
|
|
|
|
public void printBooksByAuthor(long authorId) {
|
|
List<Book> booksByAuthor = findAllBooksByAuthorId(authorId);
|
|
|
|
if (!booksByAuthor.isEmpty()) {
|
|
Author author = booksByAuthor.get(0).getAuthor();
|
|
System.out.println("Książki autora:\n " + author.getName());
|
|
for (Book book : booksByAuthor) {
|
|
System.out.println("Tytuł: " + book.getTitle());
|
|
System.out.println("Data publikacji: " + book.getPublicationDate());
|
|
System.out.println("--------");
|
|
}
|
|
} else {
|
|
System.out.println("Nie znaleziono książek dla autora o ID: " + authorId);
|
|
}
|
|
}
|
|
|
|
public void printBorrowsByUserId(long userId, int pageNumber) {
|
|
int pageSize = 3;
|
|
try (Session session = sessionFactory.openSession()) {
|
|
Query<Borrow> query = session.createQuery("FROM Borrow b WHERE b.user.id = :userId", Borrow.class);
|
|
query.setParameter("userId", userId);
|
|
query.setFirstResult((pageNumber - 1) * pageSize);
|
|
query.setMaxResults(pageSize);
|
|
|
|
List<Borrow> borrows = query.getResultList();
|
|
|
|
if (borrows.isEmpty()) {
|
|
System.out.println("Użytkownik o ID " + userId + " nie ma żadnych wypożyczeń.");
|
|
} else {
|
|
for (Borrow borrow : borrows) {
|
|
System.out.println("Wypożyczenie ID: " + borrow.getId());
|
|
System.out.println("Książka: " + borrow.getBook().getTitle());
|
|
System.out.println("Data wypożyczenia: " + borrow.getBorrowDate());
|
|
System.out.println("Data zwrotu: " + borrow.getReturnDate());
|
|
System.out.println("--------");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean hasBorrows(long userId) {
|
|
try (Session session = sessionFactory.openSession()) {
|
|
Query<Long> query = session.createQuery("SELECT COUNT(b.id) FROM Borrow b WHERE b.user.id = :userId", Long.class);
|
|
query.setParameter("userId", userId);
|
|
return query.getSingleResult() > 0;
|
|
}
|
|
}
|
|
|
|
public void printAvailableBooks() {
|
|
try (Session session = sessionFactory.openSession()) {
|
|
Query<Book> query = session.createQuery("FROM Book b WHERE b.availabilityStatus = true", Book.class);
|
|
List<Book> availableBooks = query.getResultList();
|
|
|
|
if (availableBooks.isEmpty()) {
|
|
System.out.println("Brak dostępnych książek.");
|
|
} else {
|
|
System.out.println("Dostępne książki:");
|
|
for (Book book : availableBooks) {
|
|
System.out.println("ID: " + book.getId() + ", Tytuł: " + book.getTitle());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |