Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions src/main/java/library/Book.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
103 changes: 103 additions & 0 deletions src/main/java/library/Library.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package library;

import java.util.ArrayList;
import java.util.Objects;

public class Library {
private ArrayList<Book> 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<String> 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);
}
}
82 changes: 82 additions & 0 deletions src/test/java/Tests.java
Original file line number Diff line number Diff line change
@@ -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);
}
}