From 9098b5f224380e59c4e9d2d8f068c27d84987a98 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Sat, 30 Nov 2019 00:30:23 +0400 Subject: [PATCH 1/9] add realize methods for Author --- .../java/com/epam/izh/rd/online/Main.java | 1 - .../com/epam/izh/rd/online/entity/Author.java | 71 +++++++++++++++++++ .../com/epam/izh/rd/online/entity/Book.java | 47 ++++++++++++ .../epam/izh/rd/online/entity/SchoolBook.java | 65 +++++++++++++++++ .../repository/SimpleAuthorRepository.java | 59 +++++++++++++++ .../SimpleSchoolBookRepository.java | 29 ++++++++ .../online/service/SimpleAuthorService.java | 36 ++++++++++ .../service/SimpleSchoolBookService.java | 51 +++++++++++++ 8 files changed, 358 insertions(+), 1 deletion(-) 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/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index e3939a4b..00109f5a 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -3,7 +3,6 @@ public class Main { public static void main(String[] args) { - } } 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..b1a6c43f 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 @@ -19,5 +19,76 @@ * 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..d0dd7e2c 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,52 @@ * 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..b6269be8 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,70 @@ * 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) { + super(numberOfPages, name); + } + + 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/SimpleAuthorRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java new file mode 100644 index 00000000..0fa1560b --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleAuthorRepository.java @@ -0,0 +1,59 @@ +package com.epam.izh.rd.online.repository; + +import com.epam.izh.rd.online.entity.Author; + +import java.util.Arrays; + +public class SimpleAuthorRepository implements AuthorRepository { + + private Author[] authors = new Author[]{}; + + @Override + public boolean save(Author author) { + Author[] checkLength = Arrays.copyOf(authors, authors.length); + int value = authors.length+1; + if (authors.length == 0) { + authors = new Author[1]; + authors[0] = author; + } else { + for (int i = 0; i < authors.length; i++){ + if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { + break; + } else { + authors = new Author[value]; + for (int j = 0; j < authors.length; j++){ + if(authors[j] == null){ + authors[j] = author; + } + } + } + } + } + return !Arrays.equals(checkLength, authors); + } + + @Override + public Author findByFullName(String name, String lastname) { + for (int i = 0; i < authors.length; 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 < authors.length; i++) { + if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { + authors[i] = null; + } + } + return false; + } + + @Override + public int count() { + 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 new file mode 100644 index 00000000..e6db462e --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java @@ -0,0 +1,29 @@ +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 { + + @Override + public boolean save(SchoolBook book) { + return false; + } + + @Override + public SchoolBook[] findByName(String name) { + return new SchoolBook[0]; + } + + @Override + public boolean removeByName(String name) { + return false; + } + + @Override + public int count() { + return 0; + } + + private SchoolBook[] schoolBooks = new SchoolBook[]{}; +} 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..20193f5c --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleAuthorService.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.repository.AuthorRepository; + +public class SimpleAuthorService implements AuthorService { + + @Override + public boolean save(Author author) { + return authorRepository.save(author); + } + + @Override + public Author findByFullName(String name, String lastname) { + return authorRepository.findByFullName(name, lastname); + } + + @Override + public boolean remove(Author author) { + return authorRepository.remove(author); + } + + @Override + public int count() { + return authorRepository.count(); + } + + private AuthorRepository authorRepository; + + public SimpleAuthorService() { + } + + public SimpleAuthorService(AuthorRepository authorRepository) { + this.authorRepository = authorRepository; + } +} 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..b599ad97 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleSchoolBookService.java @@ -0,0 +1,51 @@ +package com.epam.izh.rd.online.service; + +import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.entity.Book; +import com.epam.izh.rd.online.repository.BookRepository; +import com.epam.izh.rd.online.entity.SchoolBook; + +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; + } + + private BookRepository schoolBookBookRepository; + private AuthorService authorService; + + public SimpleSchoolBookService() { + } + + public SimpleSchoolBookService(BookRepository schoolBookBookRepository, AuthorService authorService) { + this.schoolBookBookRepository = schoolBookBookRepository; + this.authorService = authorService; + } +} From 19a58635c8ac3c846de39f14aaecb1370a5face3 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Sat, 30 Nov 2019 02:10:11 +0400 Subject: [PATCH 2/9] changes implementation methods in AuthorRepository --- .../online/repository/SimpleAuthorRepository.java | 15 ++++++++++++++- .../online/service/SimpleSchoolBookService.java | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) 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 0fa1560b..8aab9ee6 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 @@ -44,12 +44,25 @@ public Author findByFullName(String name, String lastname) { @Override public boolean remove(Author author) { + Author[] checkLength = Arrays.copyOf(authors, authors.length); + int valueOfIndexArray = 0; + for (int i = 0; i < authors.length; i++) { if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { + valueOfIndexArray = i; authors[i] = null; + checkLength = new Author[authors.length-1]; + } + } + + if (!Arrays.equals(checkLength, authors)) { + for (int i = valueOfIndexArray; i < authors.length-1; i++){ + authors[i-1] = authors[i]; } + return true; + } else { + return false; } - return false; } @Override 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 b599ad97..c163aa86 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 @@ -8,8 +8,8 @@ public class SimpleSchoolBookService implements BookService { @Override - public boolean save(Book book) { - + public boolean save(SchoolBook book) { + authorService.findByFullName(book.getAuthorName(), book.getAuthorLastName()); return false; } From 07795819add339295cccd0025f91b7778c602164 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Mon, 2 Dec 2019 20:17:32 +0400 Subject: [PATCH 3/9] add changes in authorService and authorRepository methods --- .../java/com/epam/izh/rd/online/Main.java | 29 ++++++++++++++ .../epam/izh/rd/online/entity/SchoolBook.java | 4 -- .../repository/SimpleAuthorRepository.java | 38 ++++++++----------- .../SimpleSchoolBookRepository.java | 33 ++++++++++++++-- .../online/service/SimpleAuthorService.java | 1 + .../service/SimpleSchoolBookService.java | 13 +++++-- 6 files changed, 83 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 00109f5a..9aa12c6e 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,8 +1,37 @@ package com.epam.izh.rd.online; +import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.repository.SimpleAuthorRepository; +import com.epam.izh.rd.online.service.AuthorService; +import com.epam.izh.rd.online.service.SimpleAuthorService; +import sun.java2d.pipe.SpanShapeRenderer; + +import java.time.LocalDate; +import java.util.Arrays; + +import static java.lang.System.console; +import static java.lang.System.out; + public class Main { public static void main(String[] args) { + Author authorFirst = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); + Author authorSecond = new Author("Max", "Levin", LocalDate.of(1993, 9, 30), "Russia"); + Author authorThird = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); + + SimpleAuthorRepository author1 = new SimpleAuthorRepository(); + + out.println(author1.save(authorFirst)); + out.println(author1.findByFullName(authorFirst.getName(), authorFirst.getLastName())); + out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); + out.println(author1.count()); + out.println(author1.save(authorThird)); + out.println(author1.findByFullName(authorThird.getName(), authorThird.getLastName())); + out.println(author1.count()); + out.println(author1.save(authorSecond)); + out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); + out.println(author1.count()); + } } 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 b6269be8..ed8e8388 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 @@ -27,10 +27,6 @@ public class SchoolBook extends Book { public SchoolBook(){ } - public SchoolBook(int numberOfPages, String name) { - super(numberOfPages, name); - } - public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, LocalDate publishDate) { super(numberOfPages, name); this.authorName = authorName; 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 8aab9ee6..28220beb 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 @@ -6,39 +6,29 @@ public class SimpleAuthorRepository implements AuthorRepository { - private Author[] authors = new Author[]{}; - @Override public boolean save(Author author) { - Author[] checkLength = Arrays.copyOf(authors, authors.length); - int value = authors.length+1; - if (authors.length == 0) { - authors = new Author[1]; - authors[0] = author; + SimpleAuthorRepository checkAuthor = new SimpleAuthorRepository(); + + if (checkAuthor.findByFullName(author.getName(), author.getLastName()) == author) { + return false; } else { - for (int i = 0; i < authors.length; i++){ - if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { - break; - } else { - authors = new Author[value]; - for (int j = 0; j < authors.length; j++){ - if(authors[j] == null){ - authors[j] = author; - } - } - } - } + Author[] arrayForCopy = Arrays.copyOf(authors, authors.length+1); + authors = new Author[authors.length+1]; + authors = Arrays.copyOf(arrayForCopy, arrayForCopy.length); + authors[authors.length-1] = author; + return true; } - return !Arrays.equals(checkLength, authors); } @Override public Author findByFullName(String name, String lastname) { - for (int i = 0; i < authors.length; i++) { - if (authors[i].getName().equals(name) && authors[i].getLastName().equals(lastname)) { - return authors[i]; + for (Author element : authors) { + if (element.getName().equals(name) && element.getLastName().equals(lastname)) { + return element; } } + return null; } @@ -69,4 +59,6 @@ public boolean remove(Author author) { public int count() { return authors.length; } + + private Author[] authors = new Author[]{}; } 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 e6db462e..46cdc57f 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,23 +1,48 @@ package com.epam.izh.rd.online.repository; -import com.epam.izh.rd.online.entity.Book; import com.epam.izh.rd.online.entity.SchoolBook; +import java.util.Arrays; + public class SimpleSchoolBookRepository implements BookRepository { @Override public boolean save(SchoolBook book) { - return false; + SchoolBook[] schoolBooksSaving = schoolBooks.clone(); + + schoolBooks = new SchoolBook[schoolBooks.length + 1]; + schoolBooks[schoolBooks.length - 1] = book; + + return !Arrays.equals(schoolBooksSaving, schoolBooks); } @Override public SchoolBook[] findByName(String name) { - return new SchoolBook[0]; + int value = 0; + SchoolBook[] findBooksByName = new SchoolBook[]{}; + for (int i = 0; i < schoolBooks.length; i++) { + if (schoolBooks[i].getName().equals(name)) { + value += 1; + findBooksByName = new SchoolBook[value]; + findBooksByName[value-1] = schoolBooks[i]; + } + } + return findBooksByName; } @Override public boolean removeByName(String name) { - return false; + int key = Arrays.binarySearch(schoolBooks, name); + + if (key == -1) { + return false; + } else { + schoolBooks[key] = null; + for (int i = key; i < schoolBooks.length; i++) { + schoolBooks[key -1] = schoolBooks[key]; + } + return true; + } } @Override 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 20193f5c..37fe50e6 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 @@ -2,6 +2,7 @@ import com.epam.izh.rd.online.entity.Author; import com.epam.izh.rd.online.repository.AuthorRepository; +import com.epam.izh.rd.online.repository.SimpleAuthorRepository; public class SimpleAuthorService implements AuthorService { 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 c163aa86..2efb4125 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 @@ -8,19 +8,24 @@ public class SimpleSchoolBookService implements BookService { @Override - public boolean save(SchoolBook book) { - authorService.findByFullName(book.getAuthorName(), book.getAuthorLastName()); + public boolean save(Book book) { +// SimpleAuthorService bookAuthor = new SimpleAuthorService(); +// if (bookAuthor.findByFullName(((SchoolBook) book).getAuthorName(), ((SchoolBook) book).getAuthorLastName()).equals(true) == true){ +// return schoolBookBookRepository.save((SchoolBook) book); +// } else { +// return false; +// } 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 From c35044a44a0c2372dfb48cc8dc96b535bdc38fc8 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Tue, 3 Dec 2019 21:49:27 +0400 Subject: [PATCH 4/9] add changes in Main and SimpleAuthorRepository files, changes method (save) --- .../java/com/epam/izh/rd/online/Main.java | 4 +- .../repository/SimpleAuthorRepository.java | 46 +++++++++++++++---- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 9aa12c6e..33fd676f 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -4,10 +4,8 @@ import com.epam.izh.rd.online.repository.SimpleAuthorRepository; import com.epam.izh.rd.online.service.AuthorService; import com.epam.izh.rd.online.service.SimpleAuthorService; -import sun.java2d.pipe.SpanShapeRenderer; import java.time.LocalDate; -import java.util.Arrays; import static java.lang.System.console; import static java.lang.System.out; @@ -26,11 +24,13 @@ public static void main(String[] args) { out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); out.println(author1.save(authorThird)); +// author1.countInArray(); out.println(author1.findByFullName(authorThird.getName(), authorThird.getLastName())); out.println(author1.count()); out.println(author1.save(authorSecond)); out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); +// author1.countInArray(); } 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 28220beb..bc2d4afb 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 @@ -8,26 +8,48 @@ public class SimpleAuthorRepository implements AuthorRepository { @Override public boolean save(Author author) { - SimpleAuthorRepository checkAuthor = new SimpleAuthorRepository(); - - if (checkAuthor.findByFullName(author.getName(), author.getLastName()) == author) { - return false; + int countPropInArray = authors.length; + System.out.println(Arrays.toString(authors)); + System.out.println(author.getName() + " " + author.getLastName()); + if (authors.length == 0 ) { + authors = new Author[1]; + authors[0] = author; } else { - Author[] arrayForCopy = Arrays.copyOf(authors, authors.length+1); - authors = new Author[authors.length+1]; - authors = Arrays.copyOf(arrayForCopy, arrayForCopy.length); + for (int i = 0; i < authors.length; i++) { + if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { + break; + } else { + authors = new Author[countPropInArray + 1]; + } + } + } + +// authors + Author[] arraysForCopy = Arrays.copyOf(authors, authors.length); + +// System.out.println(Arrays.toString(arraysForCopy)); +// authors = Arrays.copyOf(arraysForCopy, arraysForCopy.length) +// System.out.println(Arrays.toString(authors)); + if (authors.length != countPropInArray) { authors[authors.length-1] = author; return true; } + + return false; } @Override public Author findByFullName(String name, String lastname) { - for (Author element : authors) { - if (element.getName().equals(name) && element.getLastName().equals(lastname)) { - return element; + for (int i = 0; i < authors.length; i++) { + if (authors[i].getName().equals(name) && authors[i].getLastName().equals(lastname)) { + return authors[i]; } } +// for (Author element : authors) { +// if (element.getName().equals(name) && element.getLastName().equals(lastname)) { +// return element; +// } +// } return null; } @@ -55,6 +77,10 @@ public boolean remove(Author author) { } } +// public void countInArray(){ +// System.out.println(Arrays.toString(authors)); +// } + @Override public int count() { return authors.length; From 4ea5e6e03cd8b344520aa5d0320c87e044f29b94 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Tue, 3 Dec 2019 23:44:30 +0400 Subject: [PATCH 5/9] for Merge --- .../java/com/epam/izh/rd/online/Main.java | 9 ++-- .../repository/SimpleAuthorRepository.java | 47 +++++-------------- 2 files changed, 17 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 33fd676f..dbd7b9e0 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -2,12 +2,9 @@ import com.epam.izh.rd.online.entity.Author; import com.epam.izh.rd.online.repository.SimpleAuthorRepository; -import com.epam.izh.rd.online.service.AuthorService; -import com.epam.izh.rd.online.service.SimpleAuthorService; import java.time.LocalDate; -import static java.lang.System.console; import static java.lang.System.out; public class Main { @@ -20,17 +17,19 @@ public static void main(String[] args) { SimpleAuthorRepository author1 = new SimpleAuthorRepository(); out.println(author1.save(authorFirst)); + out.println("-------------"); out.println(author1.findByFullName(authorFirst.getName(), authorFirst.getLastName())); out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); out.println(author1.save(authorThird)); -// author1.countInArray(); + out.println("-------------"); out.println(author1.findByFullName(authorThird.getName(), authorThird.getLastName())); out.println(author1.count()); out.println(author1.save(authorSecond)); + out.println("-------------"); out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); -// author1.countInArray(); + } 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 bc2d4afb..da04b3ee 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,6 +1,7 @@ package com.epam.izh.rd.online.repository; import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.service.AuthorService; import java.util.Arrays; @@ -8,50 +9,32 @@ public class SimpleAuthorRepository implements AuthorRepository { @Override public boolean save(Author author) { - int countPropInArray = authors.length; - System.out.println(Arrays.toString(authors)); - System.out.println(author.getName() + " " + author.getLastName()); - if (authors.length == 0 ) { + if (authors.length == 0) { authors = new Author[1]; - authors[0] = author; + authors[authors.length-1] = author; + return true; } else { for (int i = 0; i < authors.length; i++) { - if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { - break; - } else { - authors = new Author[countPropInArray + 1]; + if (author.getName().equals(authors[i].getName()) && author.getLastName().equals(authors[i].getLastName())) { + return false; } } - } -// authors - Author[] arraysForCopy = Arrays.copyOf(authors, authors.length); - -// System.out.println(Arrays.toString(arraysForCopy)); -// authors = Arrays.copyOf(arraysForCopy, arraysForCopy.length) -// System.out.println(Arrays.toString(authors)); - if (authors.length != countPropInArray) { - authors[authors.length-1] = author; + Author[] arrayForCopy = Arrays.copyOf(authors, authors.length + 1); + authors = Arrays.copyOf(arrayForCopy, arrayForCopy.length); + authors[authors.length - 1] = author; return true; } - - return false; } @Override public Author findByFullName(String name, String lastname) { - for (int i = 0; i < authors.length; i++) { - if (authors[i].getName().equals(name) && authors[i].getLastName().equals(lastname)) { - return authors[i]; + for (Author element: authors) { + if (element.getName().equals(name) && element.getLastName().equals(lastname)){ + return element; } } -// for (Author element : authors) { -// if (element.getName().equals(name) && element.getLastName().equals(lastname)) { -// return element; -// } -// } - - return null; + return null; } @Override @@ -77,10 +60,6 @@ public boolean remove(Author author) { } } -// public void countInArray(){ -// System.out.println(Arrays.toString(authors)); -// } - @Override public int count() { return authors.length; From e7c215f8867b0e9774e40ebd95eca4cc9a7b7064 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Wed, 4 Dec 2019 00:05:14 +0400 Subject: [PATCH 6/9] add correct method save() --- src/main/java/com/epam/izh/rd/online/Main.java | 1 + .../epam/izh/rd/online/repository/SimpleAuthorRepository.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index dbd7b9e0..e39c2fd6 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -29,6 +29,7 @@ public static void main(String[] args) { out.println("-------------"); out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); + author1.valueOfArray(); } 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 da04b3ee..bf767db7 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 @@ -60,6 +60,10 @@ public boolean remove(Author author) { } } + public void valueOfArray() { + System.out.println(Arrays.toString(authors)); + } + @Override public int count() { return authors.length; From be97baf70fa00bc51fd63970b16d11c1a1c61b08 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Wed, 4 Dec 2019 00:48:07 +0400 Subject: [PATCH 7/9] add correct using method remove() --- .../java/com/epam/izh/rd/online/Main.java | 14 ++------- .../repository/SimpleAuthorRepository.java | 31 ++++++++++++++----- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index e39c2fd6..0f19bcec 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -17,20 +17,10 @@ public static void main(String[] args) { SimpleAuthorRepository author1 = new SimpleAuthorRepository(); out.println(author1.save(authorFirst)); - out.println("-------------"); - out.println(author1.findByFullName(authorFirst.getName(), authorFirst.getLastName())); - out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); - out.println(author1.count()); - out.println(author1.save(authorThird)); - out.println("-------------"); - out.println(author1.findByFullName(authorThird.getName(), authorThird.getLastName())); - out.println(author1.count()); out.println(author1.save(authorSecond)); - out.println("-------------"); - out.println(author1.findByFullName(authorSecond.getName(), authorSecond.getLastName())); out.println(author1.count()); - author1.valueOfArray(); - + out.println(author1.remove(authorThird)); + out.println(author1.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 index bf767db7..6478272b 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 @@ -43,21 +43,36 @@ public boolean remove(Author author) { int valueOfIndexArray = 0; for (int i = 0; i < authors.length; i++) { - if (authors[i].getName().equals(author.getName()) && authors[i].getLastName().equals(author.getLastName())) { + if (author.getName().equals(authors[i].getName()) && author.getLastName().equals(authors[i].getLastName())) { valueOfIndexArray = i; authors[i] = null; - checkLength = new Author[authors.length-1]; } } - if (!Arrays.equals(checkLength, authors)) { - for (int i = valueOfIndexArray; i < authors.length-1; i++){ - authors[i-1] = authors[i]; + if (!Arrays.equals(authors, checkLength)) { + if (valueOfIndexArray != 0) { + for (int i = valueOfIndexArray; i < authors.length - 1; i++){ + authors[i-1] = authors[i]; + } + + authors = new Author[authors.length - 1]; + authors = Arrays.copyOf(checkLength, authors.length); + + return true; + } else { + for (int j = 0; j < authors.length / 2; j++) { + Author element = authors[j]; + authors[j] = authors[authors.length -j -1]; + authors[authors.length -j -1] = element; + } + + authors = new Author[authors.length - 1]; + authors = Arrays.copyOf(checkLength, authors.length); + + return true; } - return true; - } else { - return false; } + return false; } public void valueOfArray() { From d97a52bd1770760252232ca40aebc14da365a082 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Wed, 4 Dec 2019 06:07:09 +0400 Subject: [PATCH 8/9] add correctly working save(), remove(), findByName() methods --- .../java/com/epam/izh/rd/online/Main.java | 35 ++++++-- .../epam/izh/rd/online/entity/SchoolBook.java | 2 +- .../repository/SimpleAuthorRepository.java | 7 +- .../SimpleSchoolBookRepository.java | 82 ++++++++++++++----- .../service/SimpleSchoolBookService.java | 11 +-- 5 files changed, 95 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 0f19bcec..149603bc 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,9 +1,13 @@ package com.epam.izh.rd.online; import com.epam.izh.rd.online.entity.Author; +import com.epam.izh.rd.online.entity.SchoolBook; import com.epam.izh.rd.online.repository.SimpleAuthorRepository; +import com.epam.izh.rd.online.repository.SimpleSchoolBookRepository; +import com.epam.izh.rd.online.service.SimpleSchoolBookService; import java.time.LocalDate; +import java.util.Arrays; import static java.lang.System.out; @@ -13,15 +17,32 @@ public static void main(String[] args) { Author authorFirst = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); Author authorSecond = new Author("Max", "Levin", LocalDate.of(1993, 9, 30), "Russia"); Author authorThird = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); + SchoolBook schoolBook1 = new SchoolBook(501, "Nani", "John", "Lima", LocalDate.of(1997, 7, 10)); + SchoolBook schoolBook2 = new SchoolBook(501, "Nani", "John", "Lima", LocalDate.of(1997, 7, 10)); + SchoolBook schoolBook3 = new SchoolBook(754, "Kubil", "Max", "Levin", LocalDate.of(2007, 11, 15)); + SchoolBook schoolBook4 = new SchoolBook(754, "Kubil", "Max", "Levin", LocalDate.of(2007, 11, 15)); SimpleAuthorRepository author1 = new SimpleAuthorRepository(); - - out.println(author1.save(authorFirst)); - out.println(author1.save(authorSecond)); - out.println(author1.count()); - out.println(author1.remove(authorThird)); - out.println(author1.count()); - + SimpleSchoolBookRepository simpleSchoolBookRepository = new SimpleSchoolBookRepository(); +// +// out.println(author1.save(authorFirst)); +// out.println(author1.save(authorSecond)); +// out.println(author1.count()); + + out.println(simpleSchoolBookRepository.save(schoolBook1)); +// out.println(simpleSchoolBookRepository.count()); + out.println(simpleSchoolBookRepository.save(schoolBook4)); + out.println(simpleSchoolBookRepository.save(schoolBook2)); +// +// out.println(Arrays.toString(simpleSchoolBookRepository.findByName(schoolBook2.getName()))); +// simpleSchoolBookRepository.valuesOfArray(); +// + out.println(simpleSchoolBookRepository.save(schoolBook3)); + out.println(simpleSchoolBookRepository.removeByName(schoolBook3.getName())); + out.println(simpleSchoolBookRepository.removeByName(schoolBook1.getName())); + + simpleSchoolBookRepository.valuesOfArray(); +// out.println(simpleSchoolBookRepository.count()); } } 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 ed8e8388..54facab3 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 @@ -80,6 +80,6 @@ public String toString() { "authorName='" + authorName + '\'' + ", authorLastName='" + authorLastName + '\'' + ", publishDate=" + publishDate + - '}'; + "} " + super.toString(); } } 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 6478272b..24ec8742 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 @@ -20,8 +20,7 @@ public boolean save(Author author) { } } - Author[] arrayForCopy = Arrays.copyOf(authors, authors.length + 1); - authors = Arrays.copyOf(arrayForCopy, arrayForCopy.length); + authors = Arrays.copyOf(authors, authors.length + 1); authors[authors.length - 1] = author; return true; } @@ -75,10 +74,6 @@ public boolean remove(Author author) { return false; } - public void valueOfArray() { - System.out.println(Arrays.toString(authors)); - } - @Override public int count() { 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 46cdc57f..f77a29c0 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 @@ -2,52 +2,92 @@ import com.epam.izh.rd.online.entity.SchoolBook; +import java.lang.reflect.Array; import java.util.Arrays; public class SimpleSchoolBookRepository implements BookRepository { @Override public boolean save(SchoolBook book) { - SchoolBook[] schoolBooksSaving = schoolBooks.clone(); - - schoolBooks = new SchoolBook[schoolBooks.length + 1]; - schoolBooks[schoolBooks.length - 1] = book; + if (schoolBooks.length == 0) { + schoolBooks = new SchoolBook[1]; + schoolBooks[0] = book; + } else { + schoolBooks = Arrays.copyOf(schoolBooks, schoolBooks.length + 1); + schoolBooks[schoolBooks.length - 1] = book; + } - return !Arrays.equals(schoolBooksSaving, schoolBooks); + return true; } @Override public SchoolBook[] findByName(String name) { - int value = 0; - SchoolBook[] findBooksByName = new SchoolBook[]{}; - for (int i = 0; i < schoolBooks.length; i++) { - if (schoolBooks[i].getName().equals(name)) { - value += 1; - findBooksByName = new SchoolBook[value]; - findBooksByName[value-1] = schoolBooks[i]; + int neededBooksInArray = 0; + SchoolBook neededBook = null; + + for (SchoolBook element : schoolBooks) { + if (name.equals(element.getName())) { + neededBooksInArray += 1; + neededBook = element; } } - return findBooksByName; + + SchoolBook[] arrayForSend = new SchoolBook[neededBooksInArray]; + + if (neededBooksInArray != 0) { + Arrays.fill(arrayForSend, neededBook); + } + + return arrayForSend; } @Override public boolean removeByName(String name) { - int key = Arrays.binarySearch(schoolBooks, name); + int booksForRemove = 0; + SchoolBook bookForSearchInArray = null; - if (key == -1) { - return false; - } else { - schoolBooks[key] = null; - for (int i = key; i < schoolBooks.length; i++) { - schoolBooks[key -1] = schoolBooks[key]; + for (SchoolBook element : schoolBooks) { + if (name.equals(element.getName())) { + booksForRemove += 1; + bookForSearchInArray = element; } + } + + if (booksForRemove != 0) { + if (booksForRemove == schoolBooks.length) { + schoolBooks = new SchoolBook[]{}; + } else { + for (int i = 0; i < schoolBooks.length; i++) { + if (bookForSearchInArray.equals(schoolBooks[i])) { + schoolBooks[i] = null; + } + } + + for (int j = 0; j < schoolBooks.length; j++) { + if (schoolBooks[j] == null) { + for (int l = j + 1; l < schoolBooks.length; l++) { + schoolBooks[l - 1] = schoolBooks[l]; + schoolBooks[l] = null; + } + } + } + + schoolBooks = Arrays.copyOf(schoolBooks, schoolBooks.length - booksForRemove); + } + return true; } + + return false; } @Override public int count() { - return 0; + return schoolBooks.length; + } + + public void valuesOfArray() { + System.out.println(Arrays.toString(schoolBooks)); } private SchoolBook[] schoolBooks = new SchoolBook[]{}; 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 2efb4125..8924c6a2 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 @@ -9,12 +9,9 @@ public class SimpleSchoolBookService implements BookService { @Override public boolean save(Book book) { -// SimpleAuthorService bookAuthor = new SimpleAuthorService(); -// if (bookAuthor.findByFullName(((SchoolBook) book).getAuthorName(), ((SchoolBook) book).getAuthorLastName()).equals(true) == true){ -// return schoolBookBookRepository.save((SchoolBook) book); -// } else { -// return false; -// } + if (authorService.findByFullName(((SchoolBook) book).getAuthorName(), ((SchoolBook) book).getAuthorLastName()) != null) { + return schoolBookBookRepository.save((SchoolBook) book); + } return false; } @@ -35,7 +32,7 @@ public boolean removeByName(String name) { @Override public int count() { - return 0; + return schoolBookBookRepository.count(); } @Override From 0f5c396cd0a0d17844933112b63042f9004cabe9 Mon Sep 17 00:00:00 2001 From: Egor BIzyaev Date: Wed, 4 Dec 2019 18:35:19 +0400 Subject: [PATCH 9/9] add full realize methods; test complete --- .../java/com/epam/izh/rd/online/Main.java | 40 ------------------- .../repository/SimpleAuthorRepository.java | 4 ++ .../SimpleSchoolBookRepository.java | 5 --- .../online/service/SimpleAuthorService.java | 22 +++++----- .../service/SimpleSchoolBookService.java | 36 ++++++++++++----- 5 files changed, 42 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 149603bc..00109f5a 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,48 +1,8 @@ package com.epam.izh.rd.online; -import com.epam.izh.rd.online.entity.Author; -import com.epam.izh.rd.online.entity.SchoolBook; -import com.epam.izh.rd.online.repository.SimpleAuthorRepository; -import com.epam.izh.rd.online.repository.SimpleSchoolBookRepository; -import com.epam.izh.rd.online.service.SimpleSchoolBookService; - -import java.time.LocalDate; -import java.util.Arrays; - -import static java.lang.System.out; - public class Main { public static void main(String[] args) { - Author authorFirst = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); - Author authorSecond = new Author("Max", "Levin", LocalDate.of(1993, 9, 30), "Russia"); - Author authorThird = new Author("John", "Lima", LocalDate.of(1974, 12, 19), "USA"); - SchoolBook schoolBook1 = new SchoolBook(501, "Nani", "John", "Lima", LocalDate.of(1997, 7, 10)); - SchoolBook schoolBook2 = new SchoolBook(501, "Nani", "John", "Lima", LocalDate.of(1997, 7, 10)); - SchoolBook schoolBook3 = new SchoolBook(754, "Kubil", "Max", "Levin", LocalDate.of(2007, 11, 15)); - SchoolBook schoolBook4 = new SchoolBook(754, "Kubil", "Max", "Levin", LocalDate.of(2007, 11, 15)); - - SimpleAuthorRepository author1 = new SimpleAuthorRepository(); - SimpleSchoolBookRepository simpleSchoolBookRepository = new SimpleSchoolBookRepository(); -// -// out.println(author1.save(authorFirst)); -// out.println(author1.save(authorSecond)); -// out.println(author1.count()); - - out.println(simpleSchoolBookRepository.save(schoolBook1)); -// out.println(simpleSchoolBookRepository.count()); - out.println(simpleSchoolBookRepository.save(schoolBook4)); - out.println(simpleSchoolBookRepository.save(schoolBook2)); -// -// out.println(Arrays.toString(simpleSchoolBookRepository.findByName(schoolBook2.getName()))); -// simpleSchoolBookRepository.valuesOfArray(); -// - out.println(simpleSchoolBookRepository.save(schoolBook3)); - out.println(simpleSchoolBookRepository.removeByName(schoolBook3.getName())); - out.println(simpleSchoolBookRepository.removeByName(schoolBook1.getName())); - - simpleSchoolBookRepository.valuesOfArray(); -// out.println(simpleSchoolBookRepository.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 index 24ec8742..19fb1d2f 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 @@ -12,6 +12,7 @@ public boolean save(Author author) { if (authors.length == 0) { authors = new Author[1]; authors[authors.length-1] = author; + return true; } else { for (int i = 0; i < authors.length; i++) { @@ -22,6 +23,7 @@ public boolean save(Author author) { authors = Arrays.copyOf(authors, authors.length + 1); authors[authors.length - 1] = author; + return true; } } @@ -33,6 +35,7 @@ public Author findByFullName(String name, String lastname) { return element; } } + return null; } @@ -71,6 +74,7 @@ public boolean remove(Author author) { return true; } } + 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 f77a29c0..775d8a73 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 @@ -2,7 +2,6 @@ import com.epam.izh.rd.online.entity.SchoolBook; -import java.lang.reflect.Array; import java.util.Arrays; public class SimpleSchoolBookRepository implements BookRepository { @@ -86,9 +85,5 @@ public int count() { return schoolBooks.length; } - public void valuesOfArray() { - System.out.println(Arrays.toString(schoolBooks)); - } - private SchoolBook[] schoolBooks = new SchoolBook[]{}; } 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 37fe50e6..da3d2c62 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 @@ -2,36 +2,40 @@ import com.epam.izh.rd.online.entity.Author; import com.epam.izh.rd.online.repository.AuthorRepository; -import com.epam.izh.rd.online.repository.SimpleAuthorRepository; public class SimpleAuthorService implements AuthorService { + private AuthorRepository authorRepository; + + public SimpleAuthorService() { + } + + public SimpleAuthorService(AuthorRepository authorRepository) { + this.authorRepository = authorRepository; + } + @Override public boolean save(Author author) { return authorRepository.save(author); + } @Override public Author findByFullName(String name, String lastname) { + return authorRepository.findByFullName(name, lastname); } @Override public boolean remove(Author author) { + return authorRepository.remove(author); } @Override public int count() { - return authorRepository.count(); - } - - private AuthorRepository authorRepository; - public SimpleAuthorService() { + return authorRepository.count(); } - public SimpleAuthorService(AuthorRepository authorRepository) { - this.authorRepository = authorRepository; - } } 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 8924c6a2..2e10d308 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 @@ -5,13 +5,27 @@ import com.epam.izh.rd.online.repository.BookRepository; import com.epam.izh.rd.online.entity.SchoolBook; +import java.util.Arrays; + 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) { if (authorService.findByFullName(((SchoolBook) book).getAuthorName(), ((SchoolBook) book).getAuthorLastName()) != null) { return schoolBookBookRepository.save((SchoolBook) book); } + return false; } @@ -22,12 +36,12 @@ public Book[] findByName(String name) { @Override public int getNumberOfBooksByName(String name) { - return findByName(name).length; + return schoolBookBookRepository.findByName(name).length; } @Override public boolean removeByName(String name) { - return false; + return schoolBookBookRepository.removeByName(name); } @Override @@ -37,17 +51,17 @@ public int count() { @Override public Author findAuthorByBookName(String name) { - return null; - } + if (!Arrays.equals(findByName(name), new SchoolBook[]{})) { - private BookRepository schoolBookBookRepository; - private AuthorService authorService; + SchoolBook book1 = schoolBookBookRepository.findByName(name)[0]; - public SimpleSchoolBookService() { - } + String authorName = book1.getAuthorName(); + String authorLastName = book1.getAuthorLastName(); - public SimpleSchoolBookService(BookRepository schoolBookBookRepository, AuthorService authorService) { - this.schoolBookBookRepository = schoolBookBookRepository; - this.authorService = authorService; + return authorService.findByFullName(authorName, authorLastName); + } else { + return null; + } } + }