diff --git a/src/main/java/library/Book.java b/src/main/java/library/Book.java new file mode 100644 index 0000000..0a1b5f8 --- /dev/null +++ b/src/main/java/library/Book.java @@ -0,0 +1,71 @@ +package library; + +import java.lang.String; +import java.util.Objects; + + +public class Book { + private String name; + private String author; + private String genre; + private String number; + + + public Book(String name, String author, String genre, String number) { + this.name = name; + this.author = author; + this.genre = genre; + this.number = number; + } + + public String toString() { + StringBuilder str = new StringBuilder(); + str.append(name + " ").append(author + " ").append(genre + " ").append(number); + return str.toString(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Book book = (Book) o; + return Objects.equals(name, book.name) && Objects.equals(author, book.author) && Objects.equals(genre, book.genre) && Objects.equals(number, book.number); + } + + @Override + public int hashCode() { + return Objects.hash(name, author, genre, number); + } +} \ No newline at end of file diff --git a/src/main/java/library/Library.java b/src/main/java/library/Library.java new file mode 100644 index 0000000..45988d3 --- /dev/null +++ b/src/main/java/library/Library.java @@ -0,0 +1,103 @@ +package library; + +import java.util.ArrayList; +import java.util.Objects; + +public class Library { + private ArrayList books = new ArrayList(); + + public Library(Book... b) { + for (int i = 0; i < b.length; i++) { + books.add(b[i]); + } + } + + public void addBook(Book b) { + books.add(b); + } + + public void deleteBook(Book x) { + books.remove(x); + } + + public Library searchName(String n) { + Library mas = new Library(); + for (int i = 0; i < books.size(); i++) { + String s = books.get(i).getName(); + if (s.contains(n)) { + mas.addBook(books.get(i)); + } + } + return mas; + } + + public Library searchAuthor(String n) { + Library mas = new Library(); + for (int i = 0; i < books.size(); i++) { + String s = books.get(i).getAuthor(); + if (s.contains(n)) { + mas.addBook(books.get(i)); + } + } + return mas; + } + + public Library searchGenre(String n) { + Library mas = new Library(); + for (int i = 0; i < books.size(); i++) { + String s = books.get(i).getGenre(); + if (s.contains(n)) { + mas.addBook(books.get(i)); + } + } + return mas; + } + + public Library searchNumber(String n) { + Library mas = new Library(); + for (int i = 0; i < books.size(); i++) { + String s = books.get(i).getNumber(); + if (s.contains(n)) { + mas.addBook(books.get(i)); + } + } + return mas; + } + + + public Library search(String... arr) { + Library mas = new Library(); + ArrayList listArgs = new ArrayList<>(); + String str = ""; + int count = 0; + for (String a : arr) { + listArgs.add(a); + } + for (int i = 0; i < books.size(); i++) { + count = 0; + str=books.get(i).getName()+" "+books.get(i).getAuthor()+" "+books.get(i).getGenre()+" "+books.get(i).getNumber(); + for (int j = 0; j < listArgs.size(); j++) { + if (str.contains(listArgs.get(j))) { + count += 1; + } + } + if (listArgs.size() == count) { + mas.addBook(books.get(i)); + } + } + return mas; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Library library = (Library) o; + return Objects.equals(books, library.books); + } + + @Override + public int hashCode() { + return Objects.hash(books); + } +} \ No newline at end of file diff --git a/src/test/java/Tests.java b/src/test/java/Tests.java new file mode 100644 index 0000000..8ffd80a --- /dev/null +++ b/src/test/java/Tests.java @@ -0,0 +1,82 @@ +import static org.junit.jupiter.api.Assertions.assertEquals; + +import library.Book; +import library.Library; +import org.junit.jupiter.api.Test; + +public class Tests { + @Test + public void addBook() { + Book first = new Book("GG", "Egor", "comedy", "A3"); + Library expected = new Library(first); + Library n = new Library(); + n.addBook(first); + assertEquals(expected, n); + } + + @Test + public void deleteBook() { + Book first = new Book("GG", "Egor", "comedy", "A3"); + Book second = new Book("Sasha Lukichev", "Egor", "comedy", "A3"); + Library expected = new Library(second); + Library n = new Library(first, second); + n.deleteBook(first); + assertEquals(expected, n); + } + + @Test + public void changeBook() { + Book expected = new Book("GG", "Egor", "comedy", "A3"); + Book expected1 = new Book("GG", "Egorka", "comedy", "A3"); + Book expected2 = new Book("GG", "Egorka", "drama", "A3"); + Book expected3 = new Book("GG", "Egorka", "drama", "A4"); + Book n = new Book("Sasha Lukichev", "Egor", "comedy", "A3"); + n.setName("GG"); + assertEquals(expected,n); + n.setAuthor("Egorka"); + assertEquals(expected1,n); + n.setGenre("drama"); + assertEquals(expected2,n); + n.setNumber("A4"); + assertEquals(expected3,n); + } + + @Test + public void findBookNameAndNumber(){ + Book first = new Book("GG", "Egor", "comedy", "A3"); + Book second = new Book("Sasha Lukichev", "Egor", "comedy", "A3"); + Book third = new Book("GG", "Egor", "comedy", "A4"); + Library lib = new Library(first, second, third); + String str = "G"; + String str1 = "A3"; + Library expected = new Library(first); + Library n = lib.searchName(str).searchNumber(str1); + assertEquals(expected,n); + } + + @Test + public void findBookAuthorAndGenre(){ + Book first = new Book("GG", "Egor", "comedy", "A3"); + Book second = new Book("GG", "Egorka", "drama", "A3"); + Book third = new Book("GG", "Egorka", "comedy", "A4"); + Library lib = new Library(first, second, third); + String str = "Egor"; + String str1 = "comedy"; + Library expected = new Library(first,third); + Library n = lib.searchAuthor(str).searchGenre(str1); + assertEquals(expected,n); + } + + @Test + public void newFind(){ + Book first = new Book("GG", "Egor", "comedy", "A3"); + Book second = new Book("GG", "Egorka", "drama", "A3"); + Book third = new Book("GG", "Egorka", "comedy", "A4"); + Library lib = new Library(first, second, third); + String str = "Egor"; + String str1 = "comedy"; + Library expected = new Library(first,third); + Library n = lib.search(str, str1); + assertEquals(expected,n); + } +} \ No newline at end of file