diff --git a/src/main/java/com/epam/izh/rd/online/entity/Author.java b/src/main/java/com/epam/izh/rd/online/entity/Author.java index 166be587..56928ea4 100644 --- a/src/main/java/com/epam/izh/rd/online/entity/Author.java +++ b/src/main/java/com/epam/izh/rd/online/entity/Author.java @@ -3,21 +3,74 @@ import java.time.LocalDate; import java.util.Objects; -/** - * Класс содержащий информацию об авторе. - * - * Необходимо: - * 1) Создать список полей с указанными типами ровно в этом порядке: - * - name с типом String и приватным модификатором доступа - * - lastName с типом String и приватным модификатором доступа - * - birthdate с типом LocalDate и приватным модификатором доступа - * - country с типом String и приватным модификатором доступа - * 2) Создать дефолтный конструктор (без параметров) (не забывайте alt+inset) - * 3) Создать конструктор со всеми параметрами (в том порядке в котором перечислены) (не забывайте alt+inset) - * 4) Создать геттеры и сеттеры (не забывайте alt+inset) - * 5) Переопределить методы equals и hashCode - используйте генерацию (не забывайте alt+inset) - * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) - */ public class Author { + private String name; + private String lastName; + private LocalDate birthdate; + private String country; + public Author() { + } + + public Author(String name, String lastName, LocalDate birthdate, String country) { + this.name = name; + this.lastName = lastName; + this.birthdate = birthdate; + this.country = country; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public LocalDate getBirthdate() { + return birthdate; + } + + public void setBirthdate(LocalDate birthdate) { + this.birthdate = birthdate; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Author author = (Author) o; + return Objects.equals(name, author.name) && Objects.equals(lastName, author.lastName) && Objects.equals(birthdate, author.birthdate) && Objects.equals(country, author.country); + } + + @Override + public int hashCode() { + return Objects.hash(name, lastName, birthdate, country); + } + + @Override + public String toString() { + return "Author{" + + "name='" + name + '\'' + + ", lastName='" + lastName + '\'' + + ", birthdate=" + birthdate + + ", country='" + country + '\'' + + '}'; + } } diff --git a/src/main/java/com/epam/izh/rd/online/entity/Book.java b/src/main/java/com/epam/izh/rd/online/entity/Book.java index 08bdccb8..37fbb464 100644 --- a/src/main/java/com/epam/izh/rd/online/entity/Book.java +++ b/src/main/java/com/epam/izh/rd/online/entity/Book.java @@ -2,19 +2,52 @@ import java.util.Objects; -/** - * Базовая сущность для книги. Содержит базовые поля. - * - * Необходимо: - * 1) Создать список полей с указанными типами ровно в этом порядке: - * - numberOfPages с типом int и приватным модификатором доступа - * - name с типом String и приватным модификатором доступа - * 2) Создать дефолтный конструктор (без параметров) (не забывайте alt+inset) - * 3) Создать конструктор со всеми параметрами (в том порядке в котором перечислены) (не забывайте alt+inset) - * 4) Создать геттеры и сеттеры (не забывайте alt+inset) - * 5) Переопределить методы equals и hashCode - используйте генерацию (не забывайте alt+inset) - * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) - */ public abstract class Book { + private int numberOfPages; + private String name; + public Book() { + } + + public Book(int numberOfPages, String name) { + this.numberOfPages = numberOfPages; + this.name = name; + } + + public int getNumberOfPages() { + return numberOfPages; + } + + public void setNumberOfPages(int numberOfPages) { + this.numberOfPages = numberOfPages; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Book book = (Book) o; + return numberOfPages == book.numberOfPages && Objects.equals(name, book.name); + } + + @Override + public int hashCode() { + return Objects.hash(numberOfPages, name); + } + + @Override + public String toString() { + return "Book{" + + "numberOfPages=" + numberOfPages + + ", name='" + name + '\'' + + '}'; + } } diff --git a/src/main/java/com/epam/izh/rd/online/entity/SchoolBook.java b/src/main/java/com/epam/izh/rd/online/entity/SchoolBook.java index a9834db4..80621e14 100644 --- a/src/main/java/com/epam/izh/rd/online/entity/SchoolBook.java +++ b/src/main/java/com/epam/izh/rd/online/entity/SchoolBook.java @@ -3,22 +3,65 @@ import java.time.LocalDate; import java.util.Objects; -/** - * Сущность учебника. Он должен быть унаследован от сущности Book - * - * Необходимо: - * 1) Унаследовать данный класс от класса Book - * 2) Создать список полей с указанными типами ровно в этом порядке: - * - authorName с типом String и приватным модификатором доступа - * - authorLastName с типом String и приватным модификатором доступа - * - publishDate с типом LocalDate и приватным модификатором доступа - * 2) Создать дефолтный конструктор (без параметров) (не забывайте alt+inset) - * 3) Создать конструктор со всеми параметрами (важно - не только с полями данного класса, но и с полями родителя Book) - * (создавать в том порядке в котором перечислены). Сначала нужно создать аналогичный конструтор для Book. Используйте alt+inset. - * 4) Создать геттеры и сеттеры (не забывайте alt+inset) - * 5) Переопределить методы equals и hashCode - используйте генерацию (не забывайте alt+inset) - * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) - */ public class SchoolBook extends Book { + private String authorName; + private String authorLastName; + private LocalDate publishDate; + public SchoolBook() { + } + + public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, LocalDate publishDate) { + super(numberOfPages, name); + this.authorName = authorName; + this.authorLastName = authorLastName; + this.publishDate = publishDate; + } + + public String getAuthorName() { + return authorName; + } + + public void setAuthorName(String authorName) { + this.authorName = authorName; + } + + public String getAuthorLastName() { + return authorLastName; + } + + public void setAuthorLastName(String authorLastName) { + this.authorLastName = authorLastName; + } + + public LocalDate getPublishDate() { + return publishDate; + } + + public void setPublishDate(LocalDate publishDate) { + this.publishDate = publishDate; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + SchoolBook that = (SchoolBook) o; + return Objects.equals(authorName, that.authorName) && Objects.equals(authorLastName, that.authorLastName) && Objects.equals(publishDate, that.publishDate); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), authorName, authorLastName, publishDate); + } + + @Override + public String toString() { + return "SchoolBook{" + + "authorName='" + authorName + '\'' + + ", authorLastName='" + authorLastName + '\'' + + ", publishDate=" + publishDate + + '}'; + } } diff --git a/src/main/java/com/epam/izh/rd/online/repository/AuthorRepository.java b/src/main/java/com/epam/izh/rd/online/repository/AuthorRepository.java index c62bd4e9..da346a4f 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/AuthorRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/AuthorRepository.java @@ -2,58 +2,12 @@ import com.epam.izh.rd.online.entity.Author; -/** - * Интерфейс репозитория для хранения данных об авторах. - *

- * Необходимо: - * 1) Создать в этом же пакете класс SimpleAuthorRepository - * 2) Имплементировать им данный интерфейс - * 3) Добавить все методы (пока можно не писать реализацию) - * 4) Добавить в SimpleAuthorRepository приватное поле "Author[] authors" для хранения авторов - * 5) Инициалазировать его пустым массивом - * 6) Написать в классе SimpleAuthorRepository реализацию для всех методов (коллекции не используем, работаем только с массивами) - */ public interface AuthorRepository { - /** - * Метод должен сохранять автора в массив authors. - * Массив при каждом сохранении должен увеличиваться в размере ровно на 1. - * То есть он ровно того размера, сколько сущностей мы в него сохранили. - *

- * Если на вход для сохранения приходит автор, который уже есть в массиве (сохранен), то автор не сохраняется и - * метод возвращает false. - *

- * Можно сравнивать только по полному имени (имя и фамилия), считаем, что двух авторов - * с одинаковыми именем и фамилией быть не может. - * Подсказка - можно использовать для проверки метод findByFullName. - *

- * Если сохранение прошло успешно, метод должен вернуть true. - */ boolean save(Author author); - - /** - * Метод должен находить в массиве authors автора по имени и фамилии (считаем, что двух авторов - * с одинаковыми именем и фамилией быть не может.) - *

- * Если автор с таким именем и фамилией найден - возвращаем его, если же не найден, метод должен вернуть null. - */ Author findByFullName(String name, String lastname); - - /** - * Метод должен удалять автора из массива authors, если он там имеется. - * Автора опять же, можно определять только по совпадению имении и фамилии. - *

- * Важно: при удалении автора из массива размер массива должен уменьшиться! - * То есть, если мы сохранили 2 авторов и вызвали count() (метод ниже), то он должен вернуть 2. - * Если после этого мы удалили 1 автора, метод count() должен вернуть 1. - *

- * Если автор был найден и удален, метод должен вернуть true, в противном случае, если автор не был найден, метод - * должен вернуть false. - */ boolean remove(Author author); - - /** - * Метод возвращает количество сохраненных сущностей в массиве authors. - */ int count(); } + + diff --git a/src/main/java/com/epam/izh/rd/online/repository/BookRepository.java b/src/main/java/com/epam/izh/rd/online/repository/BookRepository.java index 7358e99b..27a2fe05 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/BookRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/BookRepository.java @@ -2,53 +2,11 @@ import com.epam.izh.rd.online.entity.Book; -/** - * Интерфейс репозитория для хранения данных о книгах - *

- * Необходимо: - * 1) Создать в этом же пакете класс SimpleSchoolBookRepository - * 2) Имплементировать им данный интерфейс (имплементировать "BookRepository") - это указание дженерика - * 3) Добавить все методы (пока можно не писать реализацию) - * 4) Добавить в SimpleSchoolBookRepository приватное поле "SchoolBook[] schoolBooks" для хранения школьных книг - * 5) Инициалазировать его пустым массивом - * 6) Написать в классе SimpleSchoolBookRepository реализацию для всех методов (коллекции не используем, работаем только с массивами) - */ public interface BookRepository { - /** - * Метод должен сохранять школьную книгу в массив schoolBooks. - * Массив при каждом сохранении должен увеличиваться в размере ровно на 1. - * То есть он ровно того размера, сколько сущностей мы в него сохранили. - *

- * Одну и ту же книгу МОЖНО сохранить в массиве несколько раз, проверки на то, что такая книга уже сохранена, делать не нужно. - *

- * Если сохранение прошло успешно, метод должен вернуть true. - */ boolean save(T book); - - /** - * Метод должен находить в массиве schoolBooks все книги по имени. - *

- * Если книги найдены - метод должен их вернуть. - * Если найденных по имени книг нет, должен вернуться пустой массив. - */ T[] findByName(String name); - - /** - * Метод должен удалять книги из массива schoolBooks по названию. - * Если книг с одинаковым названием в массиве несколько, метод должен удалить их все. - *

- * Важно: при удалении книги из массива размер массива должен уменьшиться! - * То есть, если мы сохранили 2 разные книги и вызвали count() (метод ниже), то он должен вернуть 2. - * Если после этого мы удалили 1 книгу, метод count() должен вернуть 1. - *

- * Если хотя бы одна книга была найдена и удалена, метод должен вернуть true, в противном случае, - * если книга не была найдена, метод должен вернуть false. - */ boolean removeByName(String name); - - /** - * Метод возвращает количество сохраненных сущностей в массиве schoolBooks. - */ int count(); } + diff --git a/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java new file mode 100644 index 00000000..833dd9ce --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java @@ -0,0 +1,75 @@ +package com.epam.izh.rd.online.repository; + +import com.epam.izh.rd.online.entity.Author; +import org.apache.commons.lang3.ArrayUtils; + +import java.util.Arrays; + +public class SimpleAuthorRepository implements AuthorRepository { + private Author[] authors = new Author[] {}; + private Author[] authorsCopy = new Author[] {}; + int counter; + int removing = 0; + + + public SimpleAuthorRepository() { + } + + @Override + public boolean save(Author author) { + if (count() == 0) { + authors = new Author[1]; + authors[0] = author; + return true; + } + else { + if (findByFullName(author.getName(), author.getLastName()) == null) { + counter = count() + 1; + authorsCopy = authors; + authors = new Author[counter]; + authors = Arrays.copyOf(authorsCopy,counter); + authors[counter - 1] = author; + + return true; + } + else return false; + } + } + + @Override + public Author findByFullName(String name, String lastname) { + for (int i = 0; i < counter; i++) { + if ((authors[i].getName().equals(name)) && (authors[i].getLastName().equals(lastname))) { + return authors[i]; + } + } + return null; + } + + @Override + public boolean remove(Author author) { + for (int i = 0; i < counter; i++) { + if (findByFullName(author.getName(), author.getLastName()) != null) { + authors = ArrayUtils.remove(authors, i); + removing++; + counter--; + return true; + } + } + return false; + } + + @Override + public int count() { + if (removing != 0) { + return counter; + } + if (authors.length == 0) { + counter = 0; + } + else { + counter = authors.length; + } + return counter; + } +} diff --git a/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java new file mode 100644 index 00000000..7de13ed4 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java @@ -0,0 +1,83 @@ +package com.epam.izh.rd.online.repository; + +import com.epam.izh.rd.online.entity.SchoolBook; +import org.apache.commons.lang3.ArrayUtils; + +import java.util.Arrays; + +public class SimpleSchoolBookRepository implements BookRepository { + private SchoolBook[] schoolBooks = new SchoolBook[0]; + private SchoolBook[] schoolBooksCopy = new SchoolBook[0]; + int counterB; + int removing = 0; + + public SimpleSchoolBookRepository() { + } + + @Override + public boolean save(SchoolBook book) { + if (count() == 0) { + schoolBooks = new SchoolBook[1]; + schoolBooks[0] = book; + return true; + } + else { + counterB = count() + 1; + schoolBooksCopy = schoolBooks; + schoolBooks = new SchoolBook[counterB]; + schoolBooks = Arrays.copyOf(schoolBooksCopy,counterB); + schoolBooks[counterB - 1] = book; + } + return true; + } + + @Override + public SchoolBook[] findByName(String name) { + int iTwo = 0; + SchoolBook[] schoolBooks2 = new SchoolBook[0]; + SchoolBook[] schoolBooks2Copy = new SchoolBook[0]; + + + for (int i = 0; i < counterB; i++) { + if (schoolBooks[i].getName() == name) { + iTwo++; + schoolBooks2Copy = schoolBooks2; + schoolBooks2 = new SchoolBook[iTwo]; + schoolBooks2 = Arrays.copyOf(schoolBooks2Copy,iTwo); + schoolBooks2[iTwo - 1] = schoolBooks[i]; + } + } + + return schoolBooks2; + } + + @Override + public boolean removeByName(String name) { + + for (int i = 0; i < counterB; i++) { + if (schoolBooks[i].getName().equals(name)) { + schoolBooks = ArrayUtils.remove(schoolBooks, i); + counterB--; + removing++; + } + } + if (removing == 0) { + return false; + } + else return true; + } + + @Override + public int count() { + if (removing!=0) { + return counterB - removing; + } + if (schoolBooks.length == 0) { + counterB = 0; + } + else { + counterB = schoolBooks.length; + } + return counterB; + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/AuthorService.java b/src/main/java/com/epam/izh/rd/online/service/AuthorService.java index 25bfecd1..709b7410 100644 --- a/src/main/java/com/epam/izh/rd/online/service/AuthorService.java +++ b/src/main/java/com/epam/izh/rd/online/service/AuthorService.java @@ -2,43 +2,11 @@ import com.epam.izh.rd.online.entity.Author; -/** - * Интерфейс сервиса для выполнения бизнес логики при работе с авторами и взаимодействием с - * репозиторием для авторов AuthorRepository. - *

- * Необходимо: - * 1) Создать в этом же пакете класс SimpleAuthorService - * 2) Имплементировать им данный интерфейс - * 3) Добавить все методы (пока можно не писать реализацию) - * 4) Добавить в SimpleAuthorService приватное поле "AuthorRepository authorRepository" - это репозиторий к котормоу - * вы будете обращаться в методах - * 5) Создать дефолтный конструтор (без параметров) - * 6) Создать конструтор с параметром AuthorRepository authorRepository (который будет устанвливать в поле authorRepository значение) - * 7) Написать в классе SimpleAuthorService реализацию для всех методов - */ public interface AuthorService { - /** - * Метод должен сохранять автора. - * По факту, он просто обращается к репозиторию с авторами и вызывает аналогичный метод, псоле чего возвращает результат. - */ boolean save(Author author); - - /** - * Метод должен находить автора по имени и фамилии. - * По факту, он просто обращается к репозиторию с авторами и вызывает аналогичный метод, псоле чего возвращает результат. - */ Author findByFullName(String name, String lastname); - - /** - * Метод должен удалять автора. - * По факту, он просто обращается к репозиторию с авторами и вызывает аналогичный метод, псоле чего возвращает результат.. - */ boolean remove(Author author); - - /** - * Метод считать количество сохраненных авторов на текущий момент. - * По факту, он просто обращается к репозиторию с авторами и вызывает аналогичный метод, псоле чего возвращает результат. - */ int count(); } + diff --git a/src/main/java/com/epam/izh/rd/online/service/BookService.java b/src/main/java/com/epam/izh/rd/online/service/BookService.java index e221033b..4218cf28 100644 --- a/src/main/java/com/epam/izh/rd/online/service/BookService.java +++ b/src/main/java/com/epam/izh/rd/online/service/BookService.java @@ -3,71 +3,13 @@ import com.epam.izh.rd.online.entity.Author; import com.epam.izh.rd.online.entity.Book; -/** - * Интерфейс сервиса для выполнения бизнес логики при работе с книга и авторами и взаимодействием с - * репозиторием для книг BookRepository и сервисом для авторов AuthorService. - *

- * Необходимо: - * 1) Создать в этом же пакете класс SimpleSchoolBookService - * 2) Имплементировать им данный интерфейс - * 3) Добавить все методы (пока можно не писать реализацию) - * 4) Добавить в SimpleSchoolBookService приватное поле "BookRepository schoolBookBookRepository" - это репозиторий - * книг к которому вы будете обращаться в методах - * 5) Добавить в SimpleSchoolBookService приватное поле "AuthorService authorService" - это сервис для работы с авторами к которому - * вы будете обращаться в методах - * 6) Создать дефолтный конструтор (без параметров) - * 7) Создать конструтор с параметрами "BookRepository schoolBookBookRepository, AuthorService authorService" - * (который будет устанвливать в поле schoolBookBookRepository и в поле authorService значения) - * 8) Написать в классе SimpleSchoolBookService реализацию для всех методов - */ public interface BookService { - /** - * Метод должен сохранять книгу. - * - * Перед сохранением книги нужно проверить, сохранен ли такой автор в базе авторов. - * То есть вы должен взять имя и фамилию автора из книги и обратиться к сервису авторов и узнать о наличии такого автора. - * Напомню, что мы считаем, что двух авторов с одинаковыми именем и фамилией быть не может. - * - * Если такой автор сущесвует (сохранен) - значит можно сохранять и книгу. - * Если же такого автора в базе нет, значит книгу сохранять нельзя. - * - * Соответственно, если книга была успешно сохранена - метод возвращает true, если же книга не была сохранена - метод возвращает false. - */ boolean save(T book); - - /** - * Метод должен находить книгу по имени. - *

- * По факту, он просто обращается к репозиторию с книгами и вызывает аналогичный метод, псоле чего возвращает результат. - */ T[] findByName(String name); - - /** - * Метод должен находить количество сохраненных книг по конкретному имени книги. - */ int getNumberOfBooksByName(String name); - - /** - * Метод должен удалять все книги по имени. - *

- * По факту, он просто обращается к репозиторию с книгами и вызывает аналогичный метод, псоле чего возвращает результат. - */ boolean removeByName(String name); - - /** - * Метод должен возвращать количество всех книг. - *

- * По факту, он просто обращается к репозиторию с книгами и вызывает аналогичный метод, псоле чего возвращает результат. - */ int count(); - - /** - * Метод должен возвращать автора книги по названию книги. - * - * То есть приждется сходить и в репозиторий с книгами и в сервис авторов. - * - * Если такой книги не найдено, метод должен вернуть null. - */ Author findAuthorByBookName(String name); } + diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java new file mode 100644 index 00000000..5dca37df --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java @@ -0,0 +1,37 @@ +package com.epam.izh.rd.online.service; + +import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.repository.AuthorRepository; + +public class SimpleAuthorService implements AuthorService { + private AuthorRepository authorRepository; + + public SimpleAuthorService() { + } + + public SimpleAuthorService(AuthorRepository authorRepository) { + this.authorRepository = authorRepository; + } + + @Override + public boolean save(Author author) { + boolean s = authorRepository.save(author); + return s; + } + + @Override + public Author findByFullName(String name, String lastname) { + Author byFullName = authorRepository.findByFullName(name, lastname); + return byFullName; + } + + @Override + public boolean remove(Author author) { + return authorRepository.remove(author); + } + + @Override + public int count() { + return authorRepository.count(); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java new file mode 100644 index 00000000..8fd4141e --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java @@ -0,0 +1,62 @@ +package com.epam.izh.rd.online.service; + +import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.entity.SchoolBook; +import com.epam.izh.rd.online.repository.BookRepository; + +public class SimpleSchoolBookService implements BookService { + private BookRepository schoolBookBookRepository; + private AuthorService authorService; + + public SimpleSchoolBookService() { + } + + public SimpleSchoolBookService(BookRepository schoolBookBookRepository, AuthorService authorService) { + this.schoolBookBookRepository = schoolBookBookRepository; + this.authorService = authorService; + } + + @Override + public boolean save(SchoolBook book) { + if (authorService.findByFullName(book.getAuthorName(), book.getAuthorLastName()) != null) { + schoolBookBookRepository.save(book); + return true; + } + else return false; + } + + @Override + public SchoolBook[] findByName(String name) { + return schoolBookBookRepository.findByName(name); + } + + @Override + public int getNumberOfBooksByName(String name) { + int numberOfBooks = 0; + numberOfBooks = schoolBookBookRepository.findByName(name).length; + return numberOfBooks; + } + + @Override + public boolean removeByName(String name) { + return schoolBookBookRepository.removeByName(name); + } + + @Override + public int count() { + return schoolBookBookRepository.count(); + } + + @Override + public Author findAuthorByBookName(String name) { + SchoolBook[] schoolBooks3 = new SchoolBook[schoolBookBookRepository.count()]; + schoolBooks3 = findByName(name); + + for (int i = 0; i < schoolBookBookRepository.count(); i++) { + if (authorService.findByFullName(schoolBooks3[i].getAuthorName(),schoolBooks3[i].getAuthorLastName()) != null) { + return authorService.findByFullName(schoolBooks3[i].getAuthorName(),schoolBooks3[i].getAuthorLastName()); + }; + } + return null; + } +}