package sk.upjs.paz.prednaska09;
import java.util.Arrays;
// kniznica rozsiruje objekt nie Book - lebo kniznica nie je knihou.
public class Library {
// zoznam knih v kniznici
private Book[] books;
public Library() {
// pri vytvoreni kniznice je pole prazdne
books = new Book[0];
}
// prida knihu do zoznamu - ten sa zvacsi o 1
public void addBook(Book book) {
//Book[] novePole = Arrays.copyOf(books, books.length + 1);
// vytvorit si nove pole o jedna vacsie
Book[] novePole = new Book[books.length + 1];
// prekopirujeme stare pole do noveho
System.arraycopy(books, 0, novePole, 0, books.length);
// pridame novu knihu do noveho pola
novePole[novePole.length - 1] = book;
// nech sa referencuje nove pole
books = novePole;
}
// vypise vsetky knihy v kniznici
public void printAllBooks() {
System.out.println("Kniznica ma tolko knih: " + books.length);
for (int i = 0; i < books.length; i++) {
System.out.println(books[i].toString());
}
}
// odstrani zadanu knihu z kniznice
public void deleteBook(Book book) {
// overenie ci sa kniha nachadza v kniznici
int index = -1;
for (int i = 0; i < books.length; i++) {
if (books[i] == book) {
index = i;
break;
}
}
// ak je index -1 tak som tam knihu nenasiel
if (index != -1) {
Book[] novePole = new Book[books.length - 1];
// kopiruju sa knihy od zaciatku po index odstranovaneho
System.arraycopy(books, 0, novePole, 0, index);
// kopiruju sa knihy od odstranovaneho po koniec
System.arraycopy(books, index + 1, novePole, index, novePole.length - index);
books = novePole;
}
}
// vizualizacia odstranenie
// a b /C/ d e => a b d e
// odstranenie knihy podla nazvu - pretazenie metody - rovnaky nazov ako predosla metoda
public void deleteBook(String title) {
int index = -1;
for (int i = 0; i < books.length; i++) {
if (books[i].getTitle().equals(title)) {
index = i;
break;
}
}
if (index != -1) {
Book[] novePole = new Book[books.length - 1];
System.arraycopy(books, 0, novePole, 0, index);
System.arraycopy(books, index + 1, novePole, index, novePole.length - index);
books = novePole;
}
}
// vypise vsetky knihy ktore maju zadany zaner
public void printByGenre(String genre) {
for (int i = 0; i < books.length; i++) {
if (books[i].hasGenre(genre)) {
System.out.println(books[i]);
}
}
}
}