Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ Π·Π°Π΄Π°ΡΠΈ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ/ΡΠΏΠΈΠΊΠΈ. ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΈΠΌΠ΅Π΅Ρ:
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅;
- ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅;
- Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ;
- Π‘ΡΠ°ΡΡΡ (New, In_progress, Done);
- ΠΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΏΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ;
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;
- ΠΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π·Π°Π΄Π°ΡΡ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΡ/ΡΠΏΠΈΠΊ;
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π°ΡΡ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΡ/ΡΠΏΠΈΠΊ;
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π·Π°Π΄Π°Ρ/ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ/ΡΠΏΠΈΠΊΠΎΠ²;
- ΠΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΡ/ΡΠΏΠΈΠΊ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ;
- Π£Π΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ/ΡΠΏΠΈΠΊΠΈ;
- Π£Π΄Π°Π»ΠΈΡΡ Π·Π°Π΄Π°ΡΡ/ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΡ/ΡΠΏΠΈΠΊ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ;
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ ΡΠΏΠΈΠΊΠ°;
- ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π·Π°Π΄Π°Ρ;
- ΠΠ°ΠΏΠΈΡΡ (ΡΡΠ΅Π½ΠΈΠ΅) Π·Π°Π΄Π°Ρ/ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ/ΡΠΏΠΈΠΊΠΎΠ² Π² (ΠΈΠ·) ΡΠ°ΠΉΠ»(Π°);
- Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ;
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ² Π·Π°Π΄Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π(1). ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π²ΡΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ HashMap.
ΠΠΎΡΡΡΠΏ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Ρ ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ UNIT-ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Java. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
public class InMemoryTaskManager implements TaskManager {
protected long generateId = 0;
protected Map<Long, Task> singleTask = new HashMap<>();
protected Map<Long, Sub> subTask = new HashMap<>();
protected Map<Long, Epic> epicTask = new HashMap<>();
protected static HistoryManager historyManager = Managers.getHistoryDefault();
protected Map<LocalDateTime, Task> sortedPrioritization = new TreeMap<>();
//Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ
public Map<LocalDateTime, Task> getSortedPrioritization() {
return sortedPrioritization;
}
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
Π·Π°Π΄Π°Ρ.
@Override
public List<Task> getTasks() {
return new ArrayList<>(singleTask.values());
}
@Override
public List<Epic> getEpics() {
return new ArrayList<>(epicTask.values());
}
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ID
@Override
public Task getTask(long id) {
Task task = singleTask.get(id);
if (task != null) {
historyManager.add(task);
}
return task;
}
// ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ°
@Override
public void updateEpicStatus(Epic epic) {
int statusNew = 0;
int statusDone = 0;
List<Sub> sublist = new ArrayList<>(epic.getSubTaskIds());
if (sublist.size() == 0) {
epic.setStatus(TaskStatus.NEW);
} else {
for (Sub value : sublist) {
TaskStatus status = value.getStatus();
if (status.equals(TaskStatus.NEW)) {
statusNew++;
} else if (status.equals(TaskStatus.DONE)) {
statusDone++;
}
}
if (statusNew == sublist.size()) {
epic.setStatus(TaskStatus.NEW);
} else if (statusDone == sublist.size()) {
epic.setStatus(TaskStatus.DONE);
} else {
epic.setStatus(TaskStatus.IN_PROGRESS);
}
}
}
@Test
void getHistoryTest() throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
URI url = URI.create("http://localhost:8080/tasks/history");
HttpRequest request = HttpRequest.newBuilder().uri(url).GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
assertEquals(200, response.statusCode());
}
}