protected LinkedList<Book> getBooks() {
        if (LOGGER.isLoggable(Level.FINE)) {
            LOGGER.fine("The call of Model.getBooks()");
        }
        long startTime = System.currentTimeMillis();
        LinkedList<Book> books = new LinkedList<Book>();
        String SQL = "SELECT * FROM books";
        try {
            DerbyDBManager db = new DerbyDBManager();
            ResultSet booksArray = db.executeQuery(SQL);
            while (booksArray.next()) {
                String isbn = booksArray.getString(1);
                ArrayList<String[]> illustrationsValues = getIllustrationsValues(isbn);
                try {
                    if (illustrationsValues.size() > 0) {
                        Book book = Book.getBook(isbn, booksArray.getString(2), booksArray.getString(3));
                        for (String[] illustrationValues : illustrationsValues) {
                            book.addIllustration(illustrationValues[0], illustrationValues[1], illustrationValues[2]);
                            //if(LOGGER.isLoggable(Level.FINE)){LOGGER.log(Level.FINE, "Illustration is added to catalog (id, isbn): ("+illustrationValues[0]+","+isbn+")");}
                        }
                        books.add(book);
                    } else {
                        books.add(Book.getBook(isbn, booksArray.getString(2), booksArray.getString(3)));
                        //if(LOGGER.isLoggable(Level.INFO)){LOGGER.log(Level.INFO, "Book is added to catalog(isbn): "+isbn+"");}
                    }
                } catch (Exception e) {
                    View.getInstance().printErrorText(0);
                    LOGGER.log(Level.SEVERE, "Application Exception:" + e.toString() + "");
                }
            }
            long endTime = System.currentTimeMillis();
            if (LOGGER.isLoggable(Level.FINE)) {
                LOGGER.log(Level.FINE, "Time spent on the output the catalog (in ms):", endTime - startTime);
            }
            return books;
        } catch (SQLException e) {
            View.getInstance().printErrorText(2);
            LOGGER.log(Level.SEVERE, "SQLException: " + e.toString() + "", SQL);
        }
        if (LOGGER.isLoggable(Level.INFO)) {
            LOGGER.log(Level.INFO, "Books in catalog: " + books.size() + "");
        }
        return books;
    }