Skip to content

Commit b62c08b

Browse files
committed
java sprint 5 v1.0
1 parent 320916c commit b62c08b

File tree

9 files changed

+422
-180
lines changed

9 files changed

+422
-180
lines changed

java-kanban.iml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,31 @@
77
</content>
88
<orderEntry type="inheritedJdk" />
99
<orderEntry type="sourceFolder" forTests="false" />
10+
<orderEntry type="module-library">
11+
<library name="JUnit4">
12+
<CLASSES>
13+
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.1/junit-4.13.1.jar!/" />
14+
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
15+
</CLASSES>
16+
<JAVADOC />
17+
<SOURCES />
18+
</library>
19+
</orderEntry>
20+
<orderEntry type="module-library">
21+
<library name="JUnit5.8.1">
22+
<CLASSES>
23+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar!/" />
24+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar!/" />
25+
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
26+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar!/" />
27+
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
28+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar!/" />
29+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar!/" />
30+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar!/" />
31+
</CLASSES>
32+
<JAVADOC />
33+
<SOURCES />
34+
</library>
35+
</orderEntry>
1036
</component>
1137
</module>

src/ru/yandex/javacource/golotin/schedule/Main.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@
44
import ru.yandex.javacource.golotin.schedule.model.Status;
55
import ru.yandex.javacource.golotin.schedule.model.Subtask;
66
import ru.yandex.javacource.golotin.schedule.model.Task;
7+
import ru.yandex.javacource.golotin.schedule.service.InMemoryTaskManager;
78
import ru.yandex.javacource.golotin.schedule.service.TaskManager;
89

910
public class Main {
1011
public static void main(String[] args) {
11-
TaskManager taskManager = new TaskManager();
12+
TaskManager taskManager = new InMemoryTaskManager();
1213
taskManager.createTask(new Task("Дом", Status.NEW, "Убраться в кухни и ванной"));
1314
taskManager.createTask(new Task("Работа", Status.IN_PROGRESS, "Сделать куча рутины и пойти домой:)"));
1415

15-
1616
taskManager.createEpic(new Epic("Прогулка", Status.NEW, "Прежде чем погулять нужно:"));
17-
taskManager.createSubtask(new Subtask("Уборка", Status.NEW, "Убраться в квартире"));
18-
taskManager.createSubtask(new Subtask("Одежда", Status.NEW, "Подготовить одежду к прогулке"));
17+
taskManager.createSubtask(new Subtask("Уборка", Status.NEW, "Убраться в квартире", 1));
18+
taskManager.createSubtask(new Subtask("Одежда", Status.NEW, "Подготовить одежду к прогулке", 1));
1919

2020
taskManager.createEpic(new Epic("Приготовить кофе", Status.NEW, "Пойти на кухню и:"));
21-
taskManager.createSubtask(new Subtask("Сделать кофе", Status.NEW, "Налить в кружку горячую воду и наспать кофе"));
21+
taskManager.createSubtask(new Subtask("Сделать кофе", Status.NEW, "Налить в кружку горячую воду и наспать кофе", 2));
2222

2323
taskManager.updateTask(new Task("Дом", Status.IN_PROGRESS, "Уборка в кухни и ванной"));
2424

25-
taskManager.updateEpic(new Epic("Прогулка", Status.NEW, "Не пойду гулять"));
26-
taskManager.updateSubtask(new Subtask("Уборка", Status.IN_PROGRESS, "Убираюсь)"));
27-
taskManager.updateSubtask(new Subtask("Сделать кофе", Status.DONE, "Кофе приготовлено"));
25+
// taskManager.updateEpic(new Epic("Прогулка", Status.NEW, "Не пойду гулять"));
26+
// taskManager.updateSubtask(new Subtask("Уборка", Status.IN_PROGRESS, "Убираюсь)"));
27+
// taskManager.updateSubtask(new Subtask("Сделать кофе", Status.DONE, "Кофе приготовлено"));
2828

2929

3030
System.out.println(taskManager.getTasks());

src/ru/yandex/javacource/golotin/schedule/model/Epic.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ public String toString() {
3333
"subtaskIds=" + subtaskIds +
3434
'}';
3535
}
36+
3637
}

src/ru/yandex/javacource/golotin/schedule/model/Subtask.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
public class Subtask extends Task {
44

5-
private Integer epicId = null;
5+
private Integer epicId;
6+
7+
public Subtask(String name, Status status, String description,int epicId) {
68

7-
public Subtask(String name, Status status, String description) {
89
super(name, status, description);
10+
setEpicId(epicId);
911
}
1012

1113
public Integer getEpicId() {
Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
package ru.yandex.javacource.golotin.schedule.service;
2+
3+
import ru.yandex.javacource.golotin.schedule.model.Epic;
4+
import ru.yandex.javacource.golotin.schedule.model.Status;
5+
import ru.yandex.javacource.golotin.schedule.model.Subtask;
6+
import ru.yandex.javacource.golotin.schedule.model.Task;
7+
8+
import java.util.ArrayList;
9+
import java.util.HashMap;
10+
11+
12+
public class InMemoryTaskManager implements TaskManager {
13+
private int counterId = 0;
14+
private final HashMap<Integer, Task> tasks = new HashMap<>();
15+
private final HashMap<Integer, Epic> epics = new HashMap<>();
16+
private final HashMap<Integer, Subtask> subtasks = new HashMap<>();
17+
private final ArrayList<Object> history = new ArrayList<>(10);
18+
19+
@Override
20+
public Task createTask(Task task) {
21+
final int id = ++counterId;
22+
task.setId(id);
23+
tasks.put(id, task);
24+
return task;
25+
}
26+
27+
@Override
28+
public Epic createEpic(Epic epic) {
29+
final int id = ++counterId;
30+
epic.setId(id);
31+
epics.put(id, epic);
32+
return epic;
33+
}
34+
35+
36+
@Override
37+
public Subtask createSubtask(Subtask subtask) {
38+
final int epicId = subtask.getEpicId();
39+
Epic epic = epics.get(epicId);
40+
if (epic == null) {
41+
return null;
42+
}
43+
final int id = ++counterId;
44+
subtask.setId(id);
45+
subtasks.put(id, subtask);
46+
epic.addSubtaskId(subtask.getId());
47+
updateEpicStatus(epicId);
48+
return subtask;
49+
}
50+
51+
@Override
52+
public void updateTask(Task task) {
53+
final int id = task.getId();
54+
final Task savedTask = tasks.get(id);
55+
if (savedTask == null) {
56+
return;
57+
}
58+
tasks.put(id, task);
59+
}
60+
61+
@Override
62+
public void updateEpic(Epic epic) {
63+
Epic savedEpic = epics.get(epic.getId());
64+
if (savedEpic == null) {
65+
return;
66+
}
67+
savedEpic.setName(epic.getName());
68+
savedEpic.setDescription(epic.getDescription());
69+
}
70+
71+
@Override
72+
public void updateSubtask(Subtask subtask) {
73+
final int id = subtask.getId();
74+
final int epicId = subtask.getEpicId();
75+
final Subtask savedSubtask = subtasks.get(id);
76+
if (savedSubtask == null) {
77+
return;
78+
}
79+
final Epic epic = epics.get(epicId);
80+
if (epic == null) {
81+
return;
82+
}
83+
subtasks.put(id, subtask);
84+
updateEpicStatus(epicId);
85+
}
86+
87+
@Override
88+
public void cleanTasks() {
89+
tasks.clear();
90+
}
91+
92+
public void cleanSubtasks() {
93+
for (Epic epic : epics.values()) {
94+
epic.cleanSubtask();
95+
updateEpicStatus(epic.getId());
96+
}
97+
subtasks.clear();
98+
}
99+
100+
@Override
101+
public void cleanEpics() {
102+
epics.clear();
103+
subtasks.clear();
104+
105+
}
106+
107+
@Override
108+
public void deleteTask(int id) {
109+
tasks.remove(id);
110+
}
111+
112+
@Override
113+
public void deleteSubtask(int id) {
114+
Subtask subtask = subtasks.remove(id);
115+
if (subtask == null) {
116+
return;
117+
}
118+
Epic epic = epics.get(subtask.getEpicId());
119+
epic.removeSubtask(id);
120+
updateEpicStatus(epic.getId());
121+
}
122+
123+
@Override
124+
public void deleteEpic(int id) {
125+
Epic epic = epics.remove(id);
126+
if (epic == null) {
127+
return;
128+
}
129+
for (Integer subtaskId : epic.getSubtaskIds()) {
130+
subtasks.remove(subtaskId);
131+
}
132+
}
133+
134+
@Override
135+
public ArrayList<Task> getTasks() {
136+
return new ArrayList<>(tasks.values());
137+
}
138+
139+
@Override
140+
public ArrayList<Epic> getEpics() {
141+
return new ArrayList<>(epics.values());
142+
}
143+
144+
@Override
145+
public ArrayList<Subtask> getEpicSubtasks(int epicId) {
146+
Epic epic = epics.get(epicId);
147+
ArrayList<Subtask> getSubtasks = null;
148+
for (Integer subtaskId : epic.getSubtaskIds()) {
149+
if (this.subtasks.containsKey(subtaskId)) {
150+
getSubtasks.add(this.subtasks.get(subtaskId));
151+
}
152+
}
153+
return getSubtasks;
154+
}
155+
156+
@Override
157+
public Task getTask(int id) {
158+
checkArray(tasks.get(id));
159+
return tasks.get(id);
160+
161+
}
162+
163+
@Override
164+
public Epic getEpic(int id) {
165+
checkArray(epics.get(id));
166+
return epics.get(id);
167+
}
168+
169+
@Override
170+
public Subtask getSubtask(int id) {
171+
checkArray(subtasks.get(id));
172+
return subtasks.get(id);
173+
}
174+
175+
@Override
176+
public <T> ArrayList<T> getHistory() {
177+
System.out.println(history.size());
178+
return (ArrayList<T>) history;
179+
}
180+
181+
public HashMap<Integer, Task> getTask() {
182+
return tasks;
183+
}
184+
185+
public HashMap<Integer, Epic> getEpic() {
186+
return epics;
187+
}
188+
189+
public HashMap<Integer, Subtask> getSubtask() {
190+
return subtasks;
191+
}
192+
193+
private void updateEpicStatus(int epicId) {
194+
Epic epic = epics.get(epicId);
195+
ArrayList<Subtask> subtasks = new ArrayList<>();
196+
for (Integer subtaskId : epic.getSubtaskIds()) {
197+
if (this.subtasks.containsKey(subtaskId)) {
198+
subtasks.add(this.subtasks.get(subtaskId));
199+
}
200+
}
201+
for (Subtask statusSubtask : subtasks) {
202+
short subtaskNew = 0;
203+
short subtaskDone = 0;
204+
if (statusSubtask.getStatus() == Status.IN_PROGRESS) {
205+
epic.setStatus(Status.IN_PROGRESS);
206+
break;
207+
} else if (statusSubtask.getStatus() == Status.NEW) {
208+
subtaskNew++;
209+
} else if (statusSubtask.getStatus() == Status.DONE) {
210+
subtaskDone++;
211+
}
212+
if (subtaskDone == subtasks.size()) {
213+
epic.setStatus(Status.DONE);
214+
break;
215+
}
216+
if (subtaskNew == subtasks.size()) {
217+
epic.setStatus(Status.NEW);
218+
} else {
219+
epic.setStatus(Status.IN_PROGRESS);
220+
}
221+
break;
222+
}
223+
}
224+
225+
private <T> void checkArray(T t) {
226+
if (history.size() < 10) {
227+
228+
history.add(t);
229+
} else {
230+
history.remove(0);
231+
history.add(t);
232+
}
233+
}
234+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ru.yandex.javacource.golotin.schedule.service;
2+
3+
public class Manager {
4+
public static TaskManager getDefaults(){
5+
return new InMemoryTaskManager();
6+
}
7+
}

0 commit comments

Comments
 (0)