Pre-requirements: Java 8, MySQL, Hibernate/JPA, Spring MVC
Data structure:
Books(id,name,published,genre,rating)
Authors(id,name,gender,born)
Books_Authors(id,book_id,author_id)
Tasks:
1.Create basic CRUD(create/read/update/delete) for all tablets;
2.Show authors which are older 55 years old and sort them by 'born' column:
@GetMapping("/older")
public List<Author> older55years(){
List<Author> authors=authorDAO.findAll();
List<Author> olderAuthors=new ArrayList<>();
for (Author author : authors) {
if(author.getBorn()==null)
continue;
if((LocalDate.now().getYear()-author.getBorn().getYear())>55) {
olderAuthors.add(author);
}
}
Collections.sort(olderAuthors,new AuthorComparatorASC());
return olderAuthors;
}
3.Return books whose author has more than 1 written books:
@GetMapping("/more_than_one_book")
public List<Book> findBooksWhichAuthorHaveMoreThanOneBook(){
List<Book> books=bookDAO.findAll();
List<Book> booksWhichAuthorHaveMoreThanOneBook=new ArrayList<>();
for (Book book : books) {
if(book.getBook_author().size()>1) {
booksWhichAuthorHaveMoreThanOneBook.add(book);
}
}
return booksWhichAuthorHaveMoreThanOneBook;
}
4.Find out author which has most books:
@GetMapping("/most_books")
public ResponseEntity<Author> windAuthorWhichHasMostBooks(){
List<Author> authors=authorDAO.findAll();
Author authorWithMostBooks=authors.get(0);
for (Author author : authors) {
if(author.getBook_author().size()>authorWithMostBooks.getBook_author().size()) {
authorWithMostBooks=author;
}
}
return ResponseEntity.ok().body(authorWithMostBooks);
}
5.Calculate number of books by genre:
@GetMapping("/by_genre/{genre}")
public int numberOfBooksByGenre(@PathVariable(value="genre")GenreEnum genre) {
List<Book> books=bookDAO.findAll();
int count=0;
for (Book book : books) {
if(book.getGenre().equals(genre)) {
count++;
}
}
return count;
}
Examples adding book, author and books_authors(using Postman):
{
"name":"Zalyshynets. Chornyy voron",
"genre":"HISTORICAL_NOVEL",
"rating":"5"
}
{
"name":"Schkliiar Vasyl Mikolauovych",
"gender":"MALE",
"born":"1951-06-10"
}
{
"book":{
"name":"Zalyshynets. Chornyy voron",
"genre":"HISTORICAL_NOVEL",
"rating":"5"
},
"author":{
"name":"Schkliiar Vasyl Mikolauovych",
"gender":"MALE",
"born":"1951-06-10"
}
}