From 43173b8dfa6b5abfe88f9bcaccc3850ae1bafd92 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Sun, 24 Nov 2019 11:56:43 +0400 Subject: [PATCH 1/5] beginning --- .../com/epam/izh/rd/online/entity/Author.java | 36 +++++++++++++++++- .../com/epam/izh/rd/online/entity/Book.java | 23 ++++++++++++ .../epam/izh/rd/online/entity/SchoolBook.java | 37 +++++++++++++++++++ 3 files changed, 95 insertions(+), 1 deletion(-) 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..e51fdd68 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 @@ -1,7 +1,6 @@ package com.epam.izh.rd.online.entity; import java.time.LocalDate; -import java.util.Objects; /** * Класс содержащий информацию об авторе. @@ -19,5 +18,40 @@ * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) */ public class Author { + private String lastName; //1) Создать список полей с указанными типами ровно в этом порядке + private LocalDate birthdate; + private String country; + public Author() { + } + + public Author(String lastName, LocalDate birthdate, String country) { + this.lastName = lastName; + this.birthdate = birthdate; + this.country = country; + } + + 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; + } } 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..54adc951 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 @@ -16,5 +16,28 @@ * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) */ public abstract class Book { + private int numberOfPages; //1)Создать список полей с указанными типами + private String name; + public Book() { //2)Создать дефолтный конструктор (без параметров) + } + + public Book(int numberOfPages, String name) {//3)Создать конструктор со всеми параметрами + 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; + } } 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..ff0bd97d 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 @@ -20,5 +20,42 @@ * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) */ public class SchoolBook extends Book { + private String authorName; + private String authorLastName; + private String publishDate; + public SchoolBook() { + } + + public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, String 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 String getPublishDate() { + return publishDate; + } + + public void setPublishDate(String publishDate) { + this.publishDate = publishDate; + } } + From 31169fe0b75e5566be26f43c68472af0755f79a5 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Sun, 24 Nov 2019 12:11:30 +0400 Subject: [PATCH 2/5] add some content --- .../java/com/epam/izh/rd/online/entity/Author.java | 12 +++++++++++- .../com/epam/izh/rd/online/entity/SchoolBook.java | 14 ++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) 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 e51fdd68..b7b0c7fa 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 @@ -18,6 +18,7 @@ * 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset) */ public class Author { + private String name; private String lastName; //1) Создать список полей с указанными типами ровно в этом порядке private LocalDate birthdate; private String country; @@ -25,12 +26,21 @@ public class Author { public Author() { } - public Author(String lastName, LocalDate birthdate, String country) { + 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; } 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 ff0bd97d..7bd82219 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 @@ -22,12 +22,18 @@ public class SchoolBook extends Book { private String authorName; private String authorLastName; - private String publishDate; + private LocalDate publishDate; public SchoolBook() { } - public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, String publishDate) { + public SchoolBook(String authorName, String authorLastName, LocalDate publishDate) { + this.authorName = authorName; + this.authorLastName = authorLastName; + this.publishDate = publishDate; + } + + public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, LocalDate publishDate) { super(numberOfPages, name); this.authorName = authorName; this.authorLastName = authorLastName; @@ -50,11 +56,11 @@ public void setAuthorLastName(String authorLastName) { this.authorLastName = authorLastName; } - public String getPublishDate() { + public LocalDate getPublishDate() { return publishDate; } - public void setPublishDate(String publishDate) { + public void setPublishDate(LocalDate publishDate) { this.publishDate = publishDate; } } From 0604066a3f9ecb8e06d44d0d12fb28d12677ea4a Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Mon, 25 Nov 2019 16:26:54 +0400 Subject: [PATCH 3/5] add some content --- .../com/epam/izh/rd/online/entity/Author.java | 25 ++++++++++++- .../com/epam/izh/rd/online/entity/Book.java | 18 ++++++++++ .../epam/izh/rd/online/entity/SchoolBook.java | 27 +++++++++++--- .../repository/SimpleAuthorRepository.java | 25 +++++++++++++ .../SimpleSchoolBookRepository.java | 25 +++++++++++++ .../online/service/SimpleAuthorService.java | 25 +++++++++++++ .../service/SimpleSchoolBookService.java | 36 +++++++++++++++++++ 7 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java create mode 100644 src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java create mode 100644 src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java create mode 100644 src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java 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 b7b0c7fa..6eb80ad0 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 @@ -1,6 +1,7 @@ package com.epam.izh.rd.online.entity; import java.time.LocalDate; +import java.util.Objects; /** * Класс содержащий информацию об авторе. @@ -19,7 +20,7 @@ */ public class Author { private String name; - private String lastName; //1) Создать список полей с указанными типами ровно в этом порядке + private String lastName; private LocalDate birthdate; private String country; @@ -64,4 +65,26 @@ public String getCountry() { 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; + + if (name != null ? !name.equals(author.name) : author.name != null) return false; + if (lastName != null ? !lastName.equals(author.lastName) : author.lastName != null) return false; + if (birthdate != null ? !birthdate.equals(author.birthdate) : author.birthdate != null) return false; + return country != null ? country.equals(author.country) : author.country == null; + } + + @Override + public int hashCode() { + int result = name != null ? name.hashCode() : 0; + result = 31 * result + (lastName != null ? lastName.hashCode() : 0); + result = 31 * result + (birthdate != null ? birthdate.hashCode() : 0); + result = 31 * result + (country != null ? country.hashCode() : 0); + return result; + } } 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 54adc951..150c796c 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 @@ -40,4 +40,22 @@ public String getName() { 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; + + if (numberOfPages != book.numberOfPages) return false; + return name != null ? name.equals(book.name) : book.name == null; + } + + @Override + public int hashCode() { + int result = numberOfPages; + result = 31 * result + (name != null ? name.hashCode() : 0); + return result; + } } 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 7bd82219..7631abda 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 @@ -56,12 +56,31 @@ public void setAuthorLastName(String authorLastName) { this.authorLastName = authorLastName; } - public LocalDate getPublishDate() { - return publishDate; + 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; + + if (authorName != null ? !authorName.equals(that.authorName) : that.authorName != null) return false; + if (authorLastName != null ? !authorLastName.equals(that.authorLastName) : that.authorLastName != null) + return false; + return publishDate != null ? publishDate.equals(that.publishDate) : that.publishDate == null; } - public void setPublishDate(LocalDate publishDate) { - this.publishDate = publishDate; + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + (authorName != null ? authorName.hashCode() : 0); + result = 31 * result + (authorLastName != null ? authorLastName.hashCode() : 0); + result = 31 * result + (publishDate != null ? publishDate.hashCode() : 0); + return result; } } 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..75456141 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java @@ -0,0 +1,25 @@ +package com.epam.izh.rd.online.repository; + +import com.epam.izh.rd.online.entity.Author; + +public class SimpleAuthorRepository implements AuthorRepository { + @Override + public boolean save(Author author) { + return false; + } + + @Override + public Author findByFullName(String name, String lastname) { + return null; + } + + @Override + public boolean remove(Author author) { + return false; + } + + @Override + public int count() { + return 0; + } +} 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..186fb754 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java @@ -0,0 +1,25 @@ +package com.epam.izh.rd.online.repository; + +import com.epam.izh.rd.online.entity.Book; + +public class SimpleSchoolBookRepository implements BookRepository{ + @Override + public boolean save(Book book) { + return false; + } + + @Override + public Book[] findByName(String name) { + return new Book[0]; + } + + @Override + public boolean removeByName(String name) { + return false; + } + + @Override + public int count() { + return 0; + } +} 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..32e77db9 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java @@ -0,0 +1,25 @@ +package com.epam.izh.rd.online.service; + +import com.epam.izh.rd.online.entity.Author; + +public class SimpleAuthorService implements AuthorService { + @Override + public boolean save(Author author) { + return false; + } + + @Override + public Author findByFullName(String name, String lastname) { + return null; + } + + @Override + public boolean remove(Author author) { + return false; + } + + @Override + public int count() { + return 0; + } +} 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..2455cdb3 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java @@ -0,0 +1,36 @@ +package com.epam.izh.rd.online.service; + +import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.entity.Book; + +public class SimpleSchoolBookService implements BookService { + @Override + public boolean save(Book book) { + return false; + } + + @Override + public Book[] findByName(String name) { + return new Book[0]; + } + + @Override + public int getNumberOfBooksByName(String name) { + return 0; + } + + @Override + public boolean removeByName(String name) { + return false; + } + + @Override + public int count() { + return 0; + } + + @Override + public Author findAuthorByBookName(String name) { + return null; + } +} From f9c90ed70f0298a3c5d075b36a15d61830f4f7d7 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Mon, 25 Nov 2019 18:58:27 +0400 Subject: [PATCH 4/5] add program structure implementation --- .../java/com/epam/izh/rd/online/entity/Author.java | 14 ++++++++++++-- .../java/com/epam/izh/rd/online/entity/Book.java | 8 ++++++++ .../com/epam/izh/rd/online/entity/SchoolBook.java | 9 +++++++++ .../online/repository/SimpleAuthorRepository.java | 2 ++ .../repository/SimpleSchoolBookRepository.java | 3 +++ .../izh/rd/online/service/SimpleAuthorService.java | 10 ++++++++++ .../rd/online/service/SimpleSchoolBookService.java | 13 +++++++++++++ 7 files changed, 57 insertions(+), 2 deletions(-) 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 6eb80ad0..94bafc25 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 @@ -5,7 +5,7 @@ /** * Класс содержащий информацию об авторе. - * + *

* Необходимо: * 1) Создать список полей с указанными типами ровно в этом порядке: * - name с типом String и приватным модификатором доступа @@ -20,7 +20,7 @@ */ public class Author { private String name; - private String lastName; + private String lastName; private LocalDate birthdate; private String country; @@ -87,4 +87,14 @@ public int hashCode() { result = 31 * result + (country != null ? country.hashCode() : 0); return result; } + + @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 150c796c..b5a7a1c8 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 @@ -58,4 +58,12 @@ public int hashCode() { result = 31 * result + (name != null ? name.hashCode() : 0); return result; } + + @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 7631abda..694622e0 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 @@ -82,5 +82,14 @@ public int hashCode() { result = 31 * result + (publishDate != null ? publishDate.hashCode() : 0); return result; } + + @Override + public String toString() { + return "SchoolBook{" + + "authorName='" + authorName + '\'' + + ", authorLastName='" + authorLastName + '\'' + + ", publishDate=" + publishDate + + '}'; + } } 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 index 75456141..915cd333 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java @@ -3,6 +3,8 @@ import com.epam.izh.rd.online.entity.Author; public class SimpleAuthorRepository implements AuthorRepository { + private Author[] authors = {}; + @Override public boolean save(Author author) { return false; 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 index 186fb754..5e46d3cb 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java @@ -1,8 +1,11 @@ package com.epam.izh.rd.online.repository; import com.epam.izh.rd.online.entity.Book; +import com.epam.izh.rd.online.entity.SchoolBook; public class SimpleSchoolBookRepository implements BookRepository{ + private SchoolBook[] schoolBooks = {}; + @Override public boolean save(Book book) { return false; 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 index 32e77db9..60eaa4b6 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java @@ -1,8 +1,18 @@ 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) { return false; 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 index 2455cdb3..0d5167b8 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java @@ -2,8 +2,21 @@ import com.epam.izh.rd.online.entity.Author; import com.epam.izh.rd.online.entity.Book; +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(Book book) { return false; From 2479df67d6c1a36574a61908bf17351f53a8dd02 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Fri, 6 Dec 2019 20:00:56 +0400 Subject: [PATCH 5/5] all tests done --- .../com/epam/izh/rd/online/entity/Author.java | 16 ++++----- .../com/epam/izh/rd/online/entity/Book.java | 20 +++++++---- .../epam/izh/rd/online/entity/SchoolBook.java | 24 +++++++------ .../repository/SimpleAuthorRepository.java | 19 +++++++++-- .../SimpleSchoolBookRepository.java | 34 ++++++++++++++----- .../online/service/SimpleAuthorService.java | 8 ++--- .../service/SimpleSchoolBookService.java | 15 +++++--- 7 files changed, 91 insertions(+), 45 deletions(-) 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 94bafc25..8c73ec6b 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 @@ -67,16 +67,16 @@ public void setCountry(String country) { } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; - Author author = (Author) o; + Author author = (Author) obj; - if (name != null ? !name.equals(author.name) : author.name != null) return false; - if (lastName != null ? !lastName.equals(author.lastName) : author.lastName != null) return false; - if (birthdate != null ? !birthdate.equals(author.birthdate) : author.birthdate != null) return false; - return country != null ? country.equals(author.country) : author.country == null; + if (!Objects.equals(name, author.name)) return false; + if (!Objects.equals(lastName, author.lastName)) return false; + if (!Objects.equals(birthdate, author.birthdate)) return false; + return Objects.equals(country, author.country); } @Override 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 b5a7a1c8..b87a8163 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 @@ -4,7 +4,7 @@ /** * Базовая сущность для книги. Содержит базовые поля. - * + *

* Необходимо: * 1) Создать список полей с указанными типами ровно в этом порядке: * - numberOfPages с типом int и приватным модификатором доступа @@ -27,7 +27,13 @@ public Book(int numberOfPages, String name) {//3)Создать конструк this.name = name; } - public int getNumberOfPages() { return numberOfPages; } + public abstract String getAuthorName(); + + public abstract String getAuthorLastName(); + + public int getNumberOfPages() { + return numberOfPages; + } public void setNumberOfPages(int numberOfPages) { this.numberOfPages = numberOfPages; @@ -42,14 +48,14 @@ public void setName(String name) { } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; - Book book = (Book) o; + Book book = (Book) obj; if (numberOfPages != book.numberOfPages) return false; - return name != null ? name.equals(book.name) : book.name == null; + return Objects.equals(name, book.name); } @Override 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 694622e0..fb610a88 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 @@ -56,22 +56,26 @@ public void setAuthorLastName(String authorLastName) { this.authorLastName = authorLastName; } - public LocalDate getPublishDate() { return publishDate; } + public LocalDate getPublishDate() { + return publishDate; + } - public void setPublishDate(LocalDate publishDate) { this.publishDate = 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; + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; - SchoolBook that = (SchoolBook) o; + SchoolBook that = (SchoolBook) obj; - if (authorName != null ? !authorName.equals(that.authorName) : that.authorName != null) return false; - if (authorLastName != null ? !authorLastName.equals(that.authorLastName) : that.authorLastName != null) + if (!Objects.equals(authorName, that.authorName)) return false; + if (!Objects.equals(authorLastName, that.authorLastName)) return false; - return publishDate != null ? publishDate.equals(that.publishDate) : that.publishDate == null; + return Objects.equals(publishDate, that.publishDate); } @Override 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 index 915cd333..e854a92c 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java @@ -1,27 +1,42 @@ package com.epam.izh.rd.online.repository; import com.epam.izh.rd.online.entity.Author; +import org.apache.commons.lang3.ArrayUtils; public class SimpleAuthorRepository implements AuthorRepository { - private Author[] authors = {}; + private Author[] authors = new Author[]{}; @Override public boolean save(Author author) { + if (findByFullName(author.getName(),author.getLastName()) == null) { + authors = ArrayUtils.add(authors, author); + return true; + } return false; } @Override public Author findByFullName(String name, String lastname) { + for (Author author: authors) { + if (author.getName().equals(name) && author.getLastName().equals(lastname)) { + return author; + } + } return null; } @Override public boolean remove(Author author) { + if (findByFullName(author.getName(),author.getLastName()) != null) { + int index = ArrayUtils.indexOf(authors, author); + authors = ArrayUtils.remove(authors, index); + return true; + } return false; } @Override public int count() { - return 0; + return authors.length; } } 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 index 5e46d3cb..a4722af8 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java @@ -1,28 +1,44 @@ package com.epam.izh.rd.online.repository; -import com.epam.izh.rd.online.entity.Book; import com.epam.izh.rd.online.entity.SchoolBook; +import org.apache.commons.lang3.ArrayUtils; -public class SimpleSchoolBookRepository implements BookRepository{ - private SchoolBook[] schoolBooks = {}; +public class SimpleSchoolBookRepository implements BookRepository { + private SchoolBook[] schoolBooks = new SchoolBook[]{}; @Override - public boolean save(Book book) { - return false; + public boolean save(SchoolBook book) { + schoolBooks = ArrayUtils.add(schoolBooks, book); + return true; } @Override - public Book[] findByName(String name) { - return new Book[0]; + public SchoolBook[] findByName(String name) { + SchoolBook[] foundBooks = new SchoolBook[]{}; + for (SchoolBook newBook: schoolBooks) { + if (newBook.getName().equals(name)) { + foundBooks = ArrayUtils.add(foundBooks, newBook); + } + } + return foundBooks; } @Override public boolean removeByName(String name) { - return false; + SchoolBook[] onDelete = findByName(name); + int index; + if (onDelete.length == 0) { + return false; + } + for (SchoolBook bookOnDelete: onDelete) { + index = ArrayUtils.indexOf(schoolBooks, bookOnDelete); + schoolBooks = ArrayUtils.remove(schoolBooks, index); + } + return true; } @Override public int count() { - return 0; + return schoolBooks.length; } } 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 index 60eaa4b6..bd885470 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.java @@ -15,21 +15,21 @@ public SimpleAuthorService(AuthorRepository authorRepository) { @Override public boolean save(Author author) { - return false; + return authorRepository.save(author); } @Override public Author findByFullName(String name, String lastname) { - return null; + return authorRepository.findByFullName(name, lastname); } @Override public boolean remove(Author author) { - return false; + return authorRepository.remove(author); } @Override public int count() { - return 0; + 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 index 0d5167b8..dc3f8fb5 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java @@ -19,31 +19,36 @@ public SimpleSchoolBookService(BookRepository schoolBookBookReposito @Override public boolean save(Book book) { + if (authorService.findByFullName(book.getAuthorName(),book.getAuthorLastName()) != null) { + schoolBookBookRepository.save((SchoolBook) book); + return true; + } return false; } @Override public Book[] findByName(String name) { - return new Book[0]; + return schoolBookBookRepository.findByName(name); } @Override public int getNumberOfBooksByName(String name) { - return 0; + return findByName(name).length; } @Override public boolean removeByName(String name) { - return false; + return schoolBookBookRepository.removeByName(name); } @Override public int count() { - return 0; + return schoolBookBookRepository.count(); } @Override public Author findAuthorByBookName(String name) { - return null; + SchoolBook[] books = schoolBookBookRepository.findByName(name); + return authorService.findByFullName(books[0].getAuthorName(),books[0].getAuthorLastName()); } }