Skip to content

Commit 114c10c

Browse files
author
ilia_isakhin
committed
reworked
1 parent 149891f commit 114c10c

17 files changed

Lines changed: 315 additions & 160 deletions

pom.xml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,39 @@
88
<artifactId>oop-homework-template</artifactId>
99
<version>1.0-SNAPSHOT</version>
1010

11+
<properties>
12+
<java.version>1.8</java.version>
13+
<junit.jupiter.version>5.5.2</junit.jupiter.version>
14+
</properties>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.junit.jupiter</groupId>
19+
<artifactId>junit-jupiter</artifactId>
20+
<version>${junit.jupiter.version}</version>
21+
<scope>test</scope>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.projectlombok</groupId>
25+
<artifactId>lombok</artifactId>
26+
<version>1.18.10</version>
27+
<scope>provided</scope>
28+
</dependency>
29+
</dependencies>
30+
1131
<build>
1232
<plugins>
33+
<plugin>
34+
<groupId>org.apache.maven.plugins</groupId>
35+
<artifactId>maven-surefire-plugin</artifactId>
36+
<version>3.0.0-M3</version>
37+
</plugin>
1338
<plugin>
1439
<groupId>org.apache.maven.plugins</groupId>
1540
<artifactId>maven-compiler-plugin</artifactId>
16-
<version>3.8.1</version>
1741
<configuration>
18-
<source>1.8</source>
19-
<target>1.8</target>
42+
<source>${java.version}</source>
43+
<target>${java.version}</target>
2044
</configuration>
2145
</plugin>
2246
</plugins>

src/main/java/ru/izh/online/course/Main.java renamed to src/main/java/com/epam/izh/rd/online/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ru.izh.online.course;
1+
package com.epam.izh.rd.online;
22

33
public class Main {
44

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.epam.izh.rd.online.entity;
2+
3+
import java.util.Date;
4+
5+
/**
6+
* Класс автор. Имеет id и имя
7+
*/
8+
public class Author {
9+
10+
private long id;
11+
private String name;
12+
private String lastname;
13+
private Date birthdate;
14+
private String country;
15+
16+
17+
public Author(long id, String name, String lastname, Date birthdate, String country) {
18+
this.id = id;
19+
this.name = name;
20+
this.lastname = lastname;
21+
this.birthdate = birthdate;
22+
this.country = country;
23+
}
24+
25+
public long getId() {
26+
return id;
27+
}
28+
29+
public void setId(long id) {
30+
this.id = id;
31+
}
32+
33+
public String getName() {
34+
return name;
35+
}
36+
37+
public void setName(String name) {
38+
this.name = name;
39+
}
40+
41+
public String getLastname() {
42+
return lastname;
43+
}
44+
45+
public void setLastname(String lastname) {
46+
this.lastname = lastname;
47+
}
48+
49+
public Date getBirthdate() {
50+
return birthdate;
51+
}
52+
53+
public void setBirthdate(Date birthdate) {
54+
this.birthdate = birthdate;
55+
}
56+
57+
public String getCountry() {
58+
return country;
59+
}
60+
61+
public void setCountry(String country) {
62+
this.country = country;
63+
}
64+
}

src/main/java/ru/izh/online/course/entity/Book.java renamed to src/main/java/com/epam/izh/rd/online/entity/Book.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ru.izh.online.course.entity;
1+
package com.epam.izh.rd.online.entity;
22

33
/**
44
* Базовая сущность для кинг, журналов и тп.

src/main/java/ru/izh/online/course/entity/Schoolbook.java renamed to src/main/java/com/epam/izh/rd/online/entity/Schoolbook.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
package ru.izh.online.course.entity;
1+
package com.epam.izh.rd.online.entity;
22

3-
import java.time.LocalDate;
3+
import java.util.Date;
44

55
/**
66
* Учебник. Кроме id, количества страниц и названия имеет автора и дату публикации
77
*/
88
public class Schoolbook extends Book {
99

1010
private Author author;
11-
private LocalDate publishDate;
11+
private Date publishDate;
1212

13-
public Schoolbook(long id, String name, int pages, Author author, LocalDate publishDate) {
13+
public Schoolbook(long id, String name, int pages, Author author, Date publishDate) {
1414
this.id = id;
1515
this.name = name;
1616
this.pages = pages;
@@ -26,11 +26,11 @@ public void setAuthor(Author author) {
2626
this.author = author;
2727
}
2828

29-
public LocalDate getPublishDate() {
29+
public Date getPublishDate() {
3030
return publishDate;
3131
}
3232

33-
public void setPublishDate(LocalDate publishDate) {
33+
public void setPublishDate(Date publishDate) {
3434
this.publishDate = publishDate;
3535
}
3636
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.epam.izh.rd.online.repository;
2+
3+
import com.epam.izh.rd.online.entity.Author;
4+
5+
public interface AuthorRepository {
6+
7+
boolean save(Author author);
8+
9+
Author getByName(String name);
10+
11+
boolean remove(Author author);
12+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.epam.izh.rd.online.repository;
2+
3+
import com.epam.izh.rd.online.entity.Book;
4+
5+
/**
6+
* Базовый инерфейс для сущностей, который наследуют Book. Имеет стандартные операции поиска, вставки и удаления
7+
* @param <T>
8+
*/
9+
public interface BookRepository<T extends Book> {
10+
11+
T get(long id);
12+
13+
boolean add(T book);
14+
15+
boolean remove(String name);
16+
17+
boolean isContains(T book);
18+
19+
T[] getAll(String name);
20+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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+
7+
private long bookIdHolder;
8+
9+
public long getNextId() {
10+
return bookIdHolder++;
11+
}
12+
13+
private Author[] authors = {};
14+
15+
/**
16+
* @param author
17+
* @return true, если автора удалось сохранить, false если такой автор существует
18+
*/
19+
@Override
20+
public boolean save(Author author) {
21+
return false;
22+
}
23+
24+
/**
25+
* @param name имя автора
26+
* @return Автора по его имени. Если такого автора нет, выводит в консоль ошибку
27+
*/
28+
@Override
29+
public Author getByName(String name) {
30+
return null;
31+
}
32+
33+
/**
34+
* Удаляет автора из списка авторов. Такое происходит, когда его книг не остается в репозитории
35+
* @param author
36+
* @return true если автор был удален
37+
*/
38+
@Override
39+
public boolean remove(Author author) {
40+
return false;
41+
}
42+
}

src/main/java/ru/izh/online/course/repository/SimpleSchoolBookRepository.java renamed to src/main/java/com/epam/izh/rd/online/repository/SimpleSchoolBookRepository.java

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,19 @@
1-
package ru.izh.online.course.repository;
1+
package com.epam.izh.rd.online.repository;
22

3-
import ru.izh.online.course.entity.Author;
4-
import ru.izh.online.course.entity.Schoolbook;
5-
6-
import java.time.LocalDate;
7-
8-
import static java.time.LocalDate.of;
3+
import com.epam.izh.rd.online.entity.Schoolbook;
94

105
/**
116
* Репозиторий книг. Имеет внутри себя массив книг и методы для работы с ним. ID генерируется методом getNextId
127
*/
13-
public class SimpleSchoolBookRepository implements BookRepository<Schoolbook>, SchoolBookRepository {
8+
public class SimpleSchoolBookRepository implements BookRepository<Schoolbook> {
149

15-
private static long bookIdHolder;
10+
private long bookIdHolder;
1611

17-
public static long getNextId() {
12+
public long getNextId() {
1813
return bookIdHolder++;
1914
}
2015

21-
private static final Author[] AUTHORS = {
22-
new Author(1, "Joshua Bloch"),
23-
new Author(2, "Doug Lea"),
24-
new Author(3, "Thomas H. Cormen"),
25-
26-
};
27-
28-
private Schoolbook[] schoolbooks = {
29-
new Schoolbook(getNextId(), "Effective Java Programming", 412, AUTHORS[0], of(2018, 1 ,6)),
30-
new Schoolbook(getNextId(), "Java Concurrency in Practice", 432 , AUTHORS[1], of(2006, 5, 19)),
31-
new Schoolbook(getNextId(), "Concurrent Programming in Java: Design Principles and Patterns", 339 , AUTHORS[1], of(1997, 10, 25)),
32-
new Schoolbook(getNextId(), "Introduction to Algorithms", 1292 , AUTHORS[2], of(2009, 7, 31))
33-
};
16+
private Schoolbook[] schoolbooks;
3417

3518
/**
3619
* Должен возвращать сущность типа книга по его id, если такой книги нет, то возвратить null.
@@ -62,6 +45,15 @@ public boolean remove(String name) {
6245
return false; //TODO
6346
}
6447

48+
/**
49+
* @param book книга
50+
* @return есть ли такая книга в библиотеке
51+
*/
52+
@Override
53+
public boolean isContains(Schoolbook book) {
54+
return false; //TODO
55+
}
56+
6557
/**
6658
* Должен возвращать из массива книг все книги с автором authorName
6759
* @param name
@@ -71,14 +63,4 @@ public boolean remove(String name) {
7163
public Schoolbook[] getAll(String name) {
7264
return new Schoolbook[0]; //TODO
7365
}
74-
75-
@Override
76-
public Schoolbook[] getAuthorBools(Author author) {
77-
return new Schoolbook[0]; //TODO
78-
}
79-
80-
@Override
81-
public Schoolbook[] getBooksByPublishDate(LocalDate publishDate) {
82-
return new Schoolbook[0]; //TODO
83-
}
8466
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.epam.izh.rd.online.service;
2+
3+
import com.epam.izh.rd.online.entity.Author;
4+
import com.epam.izh.rd.online.entity.Book;
5+
6+
public interface BasicBookService<T extends Book> {
7+
8+
Author[] getAllAuthors();
9+
10+
T getBiggestBook();
11+
12+
T getBookForReading(String name);
13+
14+
T[] getBookWithAuthor(Author author);
15+
16+
T[] getBooksFromLastCentury();
17+
18+
boolean putBook(T book);
19+
}

0 commit comments

Comments
 (0)