Skip to content

Commit 533cbdb

Browse files
committed
Созданы entity, repository - без реализации, service- без реализации.
1 parent 1490ec1 commit 533cbdb

File tree

8 files changed

+440
-8
lines changed

8 files changed

+440
-8
lines changed

src/main/java/com/epam/izh/rd/online/entity/Author.java

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
/**
77
* Класс содержащий информацию об авторе.
8-
*
8+
* <p>
99
* Необходимо:
1010
* 1) Создать список полей с указанными типами ровно в этом порядке:
1111
* - name с типом String и приватным модификатором доступа
@@ -19,5 +19,76 @@
1919
* 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset)
2020
*/
2121
public class Author {
22+
private String name;
23+
private String lastName;
24+
private LocalDate birthdate;
25+
private String country;
2226

27+
public Author() {
28+
}
29+
30+
public Author(String name, String lastName, LocalDate birthdate, String country) {
31+
this.name = name;
32+
this.lastName = lastName;
33+
this.birthdate = birthdate;
34+
this.country = country;
35+
}
36+
37+
public String getName() {
38+
return name;
39+
}
40+
41+
public void setName(String name) {
42+
this.name = name;
43+
}
44+
45+
public String getLastName() {
46+
return lastName;
47+
}
48+
49+
public void setLastName(String lastName) {
50+
this.lastName = lastName;
51+
}
52+
53+
public LocalDate getBirthdate() {
54+
return birthdate;
55+
}
56+
57+
public void setBirthdate(LocalDate birthdate) {
58+
this.birthdate = birthdate;
59+
}
60+
61+
public String getCountry() {
62+
return country;
63+
}
64+
65+
public void setCountry(String country) {
66+
this.country = country;
67+
}
68+
69+
@Override
70+
public boolean equals(Object o) {
71+
if (this == o) return true;
72+
if (o == null || getClass() != o.getClass()) return false;
73+
Author author = (Author) o;
74+
return Objects.equals(name, author.name) &&
75+
Objects.equals(lastName, author.lastName) &&
76+
Objects.equals(birthdate, author.birthdate) &&
77+
Objects.equals(country, author.country);
78+
}
79+
80+
@Override
81+
public int hashCode() {
82+
return Objects.hash(name, lastName, birthdate, country);
83+
}
84+
85+
@Override
86+
public String toString() {
87+
return "Author{" +
88+
"name='" + name + '\'' +
89+
", lastName='" + lastName + '\'' +
90+
", birthdate=" + birthdate +
91+
", country='" + country + '\'' +
92+
'}';
93+
}
2394
}

src/main/java/com/epam/izh/rd/online/entity/Book.java

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
/**
66
* Базовая сущность для книги. Содержит базовые поля.
7-
*
7+
* <p>
88
* Необходимо:
99
* 1) Создать список полей с указанными типами ровно в этом порядке:
1010
* - numberOfPages с типом int и приватным модификатором доступа
@@ -16,5 +16,52 @@
1616
* 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset)
1717
*/
1818
public abstract class Book {
19+
private int numberOfPages;
20+
private String name;
1921

22+
public Book() {
23+
}
24+
25+
public Book(int numberOfPages, String name) {
26+
this.numberOfPages = numberOfPages;
27+
this.name = name;
28+
}
29+
30+
public int getNumberOfPages() {
31+
return numberOfPages;
32+
}
33+
34+
public void setNumberOfPages(int numberOfPages) {
35+
this.numberOfPages = numberOfPages;
36+
}
37+
38+
public String getName() {
39+
return name;
40+
}
41+
42+
public void setName(String name) {
43+
this.name = name;
44+
}
45+
46+
@Override
47+
public boolean equals(Object o) {
48+
if (this == o) return true;
49+
if (o == null || getClass() != o.getClass()) return false;
50+
Book book = (Book) o;
51+
return numberOfPages == book.numberOfPages &&
52+
name.equals(book.name);
53+
}
54+
55+
@Override
56+
public int hashCode() {
57+
return Objects.hash(numberOfPages, name);
58+
}
59+
60+
@Override
61+
public String toString() {
62+
return "Book{" +
63+
"numberOfPages=" + numberOfPages +
64+
", name='" + name + '\'' +
65+
'}';
66+
}
2067
}

src/main/java/com/epam/izh/rd/online/entity/SchoolBook.java

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
/**
77
* Сущность учебника. Он должен быть унаследован от сущности Book
8-
*
8+
* <p>
99
* Необходимо:
1010
* 1) Унаследовать данный класс от класса Book
1111
* 2) Создать список полей с указанными типами ровно в этом порядке:
@@ -20,5 +20,66 @@
2020
* 6) Переопределить метод toString с выводом всех полей (не забывайте alt+inset)
2121
*/
2222
public class SchoolBook extends Book {
23+
private String authorName;
24+
private String authorLastName;
25+
private LocalDate publishDate;
2326

27+
public SchoolBook() {
28+
}
29+
30+
public SchoolBook(int numberOfPages, String name, String authorName, String authorLastName, LocalDate publishDate) {
31+
super(numberOfPages, name);
32+
this.authorName = authorName;
33+
this.authorLastName = authorLastName;
34+
this.publishDate = publishDate;
35+
}
36+
37+
public String getAuthorName() {
38+
return authorName;
39+
}
40+
41+
public void setAuthorName(String authorName) {
42+
this.authorName = authorName;
43+
}
44+
45+
public String getAuthorLastName() {
46+
return authorLastName;
47+
}
48+
49+
public void setAuthorLastName(String authorLastName) {
50+
this.authorLastName = authorLastName;
51+
}
52+
53+
public LocalDate getPublishDate() {
54+
return publishDate;
55+
}
56+
57+
public void setPublishDate(LocalDate publishDate) {
58+
this.publishDate = publishDate;
59+
}
60+
61+
@Override
62+
public boolean equals(Object o) {
63+
if (this == o) return true;
64+
if (o == null || getClass() != o.getClass()) return false;
65+
if (!super.equals(o)) return false;
66+
SchoolBook that = (SchoolBook) o;
67+
return Objects.equals(authorName, that.authorName) &&
68+
Objects.equals(authorLastName, that.authorLastName) &&
69+
Objects.equals(publishDate, that.publishDate);
70+
}
71+
72+
@Override
73+
public int hashCode() {
74+
return Objects.hash(super.hashCode(), authorName, authorLastName, publishDate);
75+
}
76+
77+
@Override
78+
public String toString() {
79+
return "SchoolBook{" +
80+
"authorName='" + authorName + '\'' +
81+
", authorLastName='" + authorLastName + '\'' +
82+
", publishDate=" + publishDate +
83+
'}';
84+
}
2485
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.epam.izh.rd.online.repository;
2+
3+
import com.epam.izh.rd.online.entity.Author;
4+
5+
public class SimpleAuthorRepository implements AuthorRepository {
6+
Author[] authors = new Author[0];
7+
8+
/**
9+
* Метод должен сохранять автора в массив authors.
10+
* Массив при каждом сохранении должен увеличиваться в размере ровно на 1.
11+
* То есть он ровно того размера, сколько сущностей мы в него сохранили.
12+
* <p>
13+
* Если на вход для сохранения приходит автор, который уже есть в массиве (сохранен), то автор не сохраняется и
14+
* метод возвращает false.
15+
* <p>
16+
* Можно сравнивать только по полному имени (имя и фамилия), считаем, что двух авторов
17+
* с одинаковыми именем и фамилией быть не может.
18+
* Подсказка - можно использовать для проверки метод findByFullName.
19+
* <p>
20+
* Если сохранение прошло успешно, метод должен вернуть true.
21+
*/
22+
@Override
23+
public boolean save(Author author) {
24+
25+
return false;
26+
}
27+
28+
/**
29+
* Метод должен находить в массиве authors автора по имени и фамилии (считаем, что двух авторов
30+
* с одинаковыми именем и фамилией быть не может.)
31+
* <p>
32+
* Если автор с таким именем и фамилией найден - возвращаем его, если же не найден, метод должен вернуть null.
33+
*/
34+
@Override
35+
public Author findByFullName(String name, String lastname) {
36+
return null;
37+
}
38+
39+
/**
40+
* Метод должен удалять автора из массива authors, если он там имеется.
41+
* Автора опять же, можно определять только по совпадению имении и фамилии.
42+
* <p>
43+
* Важно: при удалении автора из массива размер массива должен уменьшиться!
44+
* То есть, если мы сохранили 2 авторов и вызвали count() (метод ниже), то он должен вернуть 2.
45+
* Если после этого мы удалили 1 автора, метод count() должен вернуть 1.
46+
* <p>
47+
* Если автор был найден и удален, метод должен вернуть true, в противном случае, если автор не был найден, метод
48+
* должен вернуть false.
49+
*/
50+
@Override
51+
public boolean remove(Author author) {
52+
return false;
53+
}
54+
55+
/**
56+
* Метод возвращает количество сохраненных сущностей в массиве authors.
57+
*/
58+
@Override
59+
public int count() {
60+
return 0;
61+
}
62+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.epam.izh.rd.online.repository;
2+
3+
import com.epam.izh.rd.online.entity.SchoolBook;
4+
5+
public class SimpleSchoolBookRepository implements BookRepository<SchoolBook> {
6+
/**
7+
* Метод должен сохранять школьную книгу в массив schoolBooks.
8+
* Массив при каждом сохранении должен увеличиваться в размере ровно на 1.
9+
* То есть он ровно того размера, сколько сущностей мы в него сохранили.
10+
* <p>
11+
* Одну и ту же книгу МОЖНО сохранить в массиве несколько раз, проверки на то, что такая книга уже сохранена, делать не нужно.
12+
* <p>
13+
* Если сохранение прошло успешно, метод должен вернуть true.
14+
*/
15+
@Override
16+
public boolean save(SchoolBook book) {
17+
return false;
18+
}
19+
20+
/**
21+
* Метод должен находить в массиве schoolBooks все книги по имени.
22+
* <p>
23+
* Если книги найдены - метод должен их вернуть.
24+
* Если найденных по имени книг нет, должен вернуться пустой массив.
25+
*/
26+
@Override
27+
public SchoolBook[] findByName(String name) {
28+
return new SchoolBook[0];
29+
}
30+
31+
/**
32+
* Метод должен удалять книги из массива schoolBooks по названию.
33+
* Если книг с одинаковым названием в массиве несколько, метод должен удалить их все.
34+
* <p>
35+
* Важно: при удалении книги из массива размер массива должен уменьшиться!
36+
* То есть, если мы сохранили 2 разные книги и вызвали count() (метод ниже), то он должен вернуть 2.
37+
* Если после этого мы удалили 1 книгу, метод count() должен вернуть 1.
38+
* <p>
39+
* Если хотя бы одна книга была найдена и удалена, метод должен вернуть true, в противном случае,
40+
* если книга не была найдена, метод должен вернуть false.
41+
*/
42+
@Override
43+
public boolean removeByName(String name) {
44+
return false;
45+
}
46+
47+
/**
48+
* Метод возвращает количество сохраненных сущностей в массиве schoolBooks.
49+
*/
50+
@Override
51+
public int count() {
52+
return 0;
53+
}
54+
}

src/main/java/com/epam/izh/rd/online/service/BookService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ public interface BookService<T extends Book> {
2424

2525
/**
2626
* Метод должен сохранять книгу.
27-
*
27+
* <p>
2828
* Перед сохранением книги нужно проверить, сохранен ли такой автор в базе авторов.
2929
* То есть вы должен взять имя и фамилию автора из книги и обратиться к сервису авторов и узнать о наличии такого автора.
3030
* Напомню, что мы считаем, что двух авторов с одинаковыми именем и фамилией быть не может.
31-
*
31+
* <p>
3232
* Если такой автор сущесвует (сохранен) - значит можно сохранять и книгу.
3333
* Если же такого автора в базе нет, значит книгу сохранять нельзя.
34-
*
34+
* <p>
3535
* Соответственно, если книга была успешно сохранена - метод возвращает true, если же книга не была сохранена - метод возвращает false.
3636
*/
3737
boolean save(T book);
@@ -64,9 +64,9 @@ public interface BookService<T extends Book> {
6464

6565
/**
6666
* Метод должен возвращать автора книги по названию книги.
67-
*
67+
* <p>
6868
* То есть приждется сходить и в репозиторий с книгами и в сервис авторов.
69-
*
69+
* <p>
7070
* Если такой книги не найдено, метод должен вернуть null.
7171
*/
7272
Author findAuthorByBookName(String name);

0 commit comments

Comments
 (0)