Skip to content

Commit 248758c

Browse files
authored
Merge pull request #3 from 1EVILGUN1/develop
Java sprint 8 v1.0
2 parents 7af24ef + 400a3cd commit 248758c

File tree

10 files changed

+261
-87
lines changed

10 files changed

+261
-87
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/task.csv

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,2 @@
11
id,type,name,status,description,epic
2-
1,TASK,Дом,NEW,Убраться в кухни и ванной,
3-
2,TASK,Работа,IN_PROGRESS,Сделать куча рутины и пойти домой:),
4-
3,EPIC,Прогулка,NEW,Прежде чем погулять нужно:,
5-
4,EPIC,Приготовить кофе,NEW,Пойти на кухню и:,
62

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
public class Main {
1212
public static void main(String[] args) {
1313
TaskManager taskManager = Manager.getDefault();
14-
taskManager.createTask(new Task("Дом", Status.NEW, "Убраться в кухни и ванной"));
15-
taskManager.createTask(new Task("Работа", Status.IN_PROGRESS, "Сделать куча рутины и пойти домой:)"));
16-
17-
taskManager.createEpic(new Epic("Прогулка", Status.NEW, "Прежде чем погулять нужно:"));
18-
taskManager.createSubtask(new Subtask("Уборка", Status.NEW, "Убраться в квартире", 1));
19-
taskManager.createSubtask(new Subtask("Одежда", Status.NEW, "Подготовить одежду к прогулке", 1));
20-
21-
taskManager.createEpic(new Epic("Приготовить кофе", Status.NEW, "Пойти на кухню и:"));
22-
taskManager.createSubtask(new Subtask("Сделать кофе", Status.NEW, "Налить в кружку горячую воду и наспать кофе", 2));
23-
24-
taskManager.updateTask(new Task("Дом", Status.IN_PROGRESS, "Уборка в кухни и ванной"));
25-
26-
taskManager.updateEpic(new Epic("Прогулка", Status.NEW, "Не пойду гулять"));
27-
taskManager.updateSubtask(new Subtask("Уборка", Status.IN_PROGRESS, "Убираюсь)", 1));
28-
taskManager.updateSubtask(new Subtask("Сделать кофе", Status.DONE, "Кофе приготовлено", 1));
14+
// taskManager.createTask(new Task("Дом", Status.NEW, "Убраться в кухни и ванной"));
15+
// taskManager.createTask(new Task("Работа", Status.IN_PROGRESS, "Сделать куча рутины и пойти домой:)"));
16+
//
17+
// taskManager.createEpic(new Epic("Прогулка", Status.NEW, "Прежде чем погулять нужно:"));
18+
// taskManager.createSubtask(new Subtask("Уборка", Status.NEW, "Убраться в квартире", 1));
19+
// taskManager.createSubtask(new Subtask("Одежда", Status.NEW, "Подготовить одежду к прогулке", 1));
20+
//
21+
// taskManager.createEpic(new Epic("Приготовить кофе", Status.NEW, "Пойти на кухню и:"));
22+
// taskManager.createSubtask(new Subtask("Сделать кофе", Status.NEW, "Налить в кружку горячую воду и наспать кофе", 2));
23+
//
24+
// taskManager.updateTask(new Task("Дом", Status.IN_PROGRESS, "Уборка в кухни и ванной"));
25+
//
26+
// taskManager.updateEpic(new Epic("Прогулка", Status.NEW, "Не пойду гулять"));
27+
// taskManager.updateSubtask(new Subtask("Уборка", Status.IN_PROGRESS, "Убираюсь)", 1));
28+
// taskManager.updateSubtask(new Subtask("Сделать кофе", Status.DONE, "Кофе приготовлено", 1));
2929

3030

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

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package ru.yandex.javacource.golotin.schedule.model;
22

3+
import java.time.Duration;
4+
import java.time.Instant;
5+
import java.time.LocalDateTime;
36
import java.util.ArrayList;
47
import java.util.List;
58

69
public class Epic extends Task {
710

811
private final List<Integer> subtaskIds = new ArrayList<>();
12+
private LocalDateTime endTime;
913

10-
public Epic(String name, Status status, String description) {
11-
super(name, status, description);
14+
public Epic(String name, Status status, String description, LocalDateTime startTime, long duration) {
15+
super(name, status, description, startTime, duration);
1216
}
1317

14-
public Epic(int id, String name, String description, Status status) {
15-
super(name, status, description);
18+
public Epic(int id, String name, String description, Status status, LocalDateTime startTime, long duration) {
19+
super(name, status, description, startTime, duration);
1620
setId(id);
1721
}
1822

@@ -36,11 +40,15 @@ public TaskType getType() {
3640
return TaskType.EPIC;
3741
}
3842

43+
public void setEndTime(LocalDateTime endTime) {
44+
this.endTime = endTime;
45+
}
46+
3947
@Override
4048
public String toString() {
4149
return "Epic{" +
4250
"subtaskIds=" + subtaskIds +
51+
", endTime=" + endTime +
4352
'}';
4453
}
45-
4654
}

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package ru.yandex.javacource.golotin.schedule.model;
22

3+
import java.time.Instant;
4+
import java.time.LocalDateTime;
5+
36
public class Subtask extends Task {
47

58
private Integer epicId;
69

7-
public Subtask(String name, Status status, String description, int epicId) {
10+
public Subtask(String name, Status status, String description, LocalDateTime startTime, long duration, int epicId) {
811

9-
super(name, status, description);
12+
super(name, status, description, startTime, duration);
1013
setEpicId(epicId);
1114
}
1215

13-
public Subtask(int id, String name, String description, Status status, Integer epicId) {
14-
super(name, status, description);
16+
public Subtask(int id, String name, String description, Status status, LocalDateTime startTime, long duration, Integer epicId) {
17+
super(name, status, description, startTime, duration);
1518
setId(id);
1619
setEpicId(epicId);
1720
}

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

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
package ru.yandex.javacource.golotin.schedule.model;
22

3+
import java.time.Duration;
4+
import java.time.LocalDateTime;
35
import java.util.Objects;
6+
import java.time.Instant;
47

58
public class Task {
69
private int id;
710
private String name;
811
private String description;
912
private Status status;
1013

11-
public Task(String name, Status status, String description) {
14+
private LocalDateTime startTime; // LocalDateTime
15+
private Duration duration; // минуты или Duration
16+
17+
public Task(String name, Status status, String description, LocalDateTime startTime, long duration) {
1218
this.name = name;
1319
this.status = status;
1420
this.description = description;
21+
this.startTime = LocalDateTime.from(startTime);
22+
this.duration = Duration.ofMinutes(duration);
1523
}
1624

17-
public Task(int id, String name, String description, Status status) {
25+
public Task(int id, String name, String description, Status status, LocalDateTime startTime, long duration) {
1826
setId(id);
1927
this.name = name;
2028
this.status = status;
2129
this.description = description;
30+
this.startTime = startTime;
31+
this.duration = Duration.ofMinutes(duration);
2232
}
2333

2434
public int getId() {
@@ -61,26 +71,49 @@ public void setStatus(Status status) {
6171
this.status = status;
6272
}
6373

64-
@Override
65-
public boolean equals(Object o) {
66-
if (this == o) return true;
67-
if (o == null || getClass() != o.getClass()) return false;
68-
Task task = (Task) o;
69-
return id == task.id;
74+
public LocalDateTime getStartTime() {
75+
return startTime;
7076
}
7177

72-
@Override
73-
public int hashCode() {
74-
return Objects.hash(id);
78+
public void setStartTime(LocalDateTime startTime) {
79+
this.startTime = startTime;
80+
}
81+
82+
public long getDuration() {
83+
return duration.toMinutesPart();
84+
}
85+
86+
public void setDuration(long duration) {
87+
this.duration = Duration.ofMinutes(duration);
88+
}
89+
90+
public LocalDateTime getEndTime() {
91+
return startTime.plus(duration);
7592
}
7693

94+
7795
@Override
7896
public String toString() {
7997
return "Task{" +
8098
"id=" + id +
8199
", name='" + name + '\'' +
82100
", description='" + description + '\'' +
83101
", status=" + status +
102+
", startTime=" + startTime +
103+
", endTime=" + getEndTime() +
84104
'}';
85105
}
106+
107+
@Override
108+
public boolean equals(Object o) {
109+
if (this == o) return true;
110+
if (o == null || getClass() != o.getClass()) return false;
111+
Task task = (Task) o;
112+
return id == task.id && Objects.equals(name, task.name) && Objects.equals(description, task.description) && status == task.status && Objects.equals(startTime, task.startTime) && Objects.equals(duration, task.duration);
113+
}
114+
115+
@Override
116+
public int hashCode() {
117+
return Objects.hash(id, name, description, status, startTime, duration);
118+
}
86119
}

src/ru/yandex/javacource/golotin/schedule/service/FileBackedTaskManager.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
import java.nio.file.Files;
88

9+
import java.time.Duration;
10+
import java.time.Instant;
11+
import java.time.LocalDateTime;
912
import java.util.Map;
1013

1114
import ru.yandex.javacource.golotin.schedule.exception.ManagerSaveException;
@@ -41,10 +44,10 @@ public static FileBackedTaskManager loadFromFile(File file) {
4144
taskManager.createTask(task);
4245
} else if (task.getType() == TaskType.SUBTASK) {
4346
taskManager.createSubtask(new Subtask(task.getId(), task.getName(), task.getDescription(),
44-
task.getStatus(), task.getEpicId()));
47+
task.getStatus(), task.getStartTime(), task.getDuration(), task.getEpicId()));
4548
} else if (task.getType() == TaskType.EPIC) {
4649
taskManager.createEpic(new Epic(task.getId(), task.getName(), task.getDescription(),
47-
task.getStatus()));
50+
task.getStatus(), task.getStartTime(), task.getDuration()));
4851
for (Subtask subtask : taskManager.subtasks.values()) {// Поиск подзадач эпика
4952
if (subtask.getEpicId() == task.getId()) {
5053
Epic epic = taskManager.epics.get(task.getId());
@@ -124,7 +127,7 @@ public void deleteSubtask(int id) {
124127

125128
public static String toString(Task task) {
126129
return task.getId() + "," + task.getType() + "," + task.getName() + "," + task.getStatus() + "," +
127-
task.getDescription() + "," + (task.getType().equals(TaskType.SUBTASK) ? task.getEpicId() : "");
130+
task.getDescription() + "," + (task.getType().equals(TaskType.SUBTASK) ? task.getEpicId() : ""+task.getStartTime()+","+task.getEndTime());
128131
}
129132

130133

@@ -135,15 +138,17 @@ public static Task taskFromString(String value) {
135138
final String name = values[2];
136139
final Status status = Status.valueOf(values[3]);
137140
final String description = values[4];
141+
final LocalDateTime startTime = LocalDateTime.parse(values[5]);
142+
final Duration duration = Duration.between(LocalDateTime.parse(values[5]), LocalDateTime.parse(values[6]));
138143
if (type == TaskType.TASK) {
139-
return new Task(id, name, description, status);
144+
return new Task(id, name, description, status, startTime, duration.toMinutesPart());
140145
}
141146
if (type == TaskType.SUBTASK) {
142147
final int epicId = Integer.parseInt(values[5]);
143-
return new Subtask(id, name, description, status, epicId);
148+
return new Subtask(id, name, description, status, startTime, duration.toMinutesPart(), epicId);
144149
}
145150

146-
return new Epic(id, name, description, status);
151+
return new Epic(id, name, description, status, startTime, duration.toMinutesPart());
147152
}
148153

149154
protected void saveToFile() {

0 commit comments

Comments
 (0)