dev #62

Merged
KamaSK merged 20 commits from dev into main 2025-06-08 11:57:27 +03:00
7 changed files with 35 additions and 18 deletions
Showing only changes of commit 8254f5292b - Show all commits

View File

@ -7,14 +7,15 @@ import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
public class CliEngine { public class CliEngine {
private HashMap<String, Command> registry = new HashMap<>(); private HashMap<String, Command> registry = new HashMap<>();
private TaskService service; private EntityService<? extends Identifiable> service;
private BufferedReader reader; private BufferedReader reader;
public CliEngine(TaskService service) { public CliEngine(EntityService<? extends Identifiable> service) {
this.service = service; this.service = service;
reader = new BufferedReader(new InputStreamReader(System.in)); reader = new BufferedReader(new InputStreamReader(System.in));
initializeCommands(); initializeCommands();

View File

@ -2,13 +2,14 @@ package ru.kamask.pet.todo.cli;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
public interface Command { public interface Command {
String templateUsage = " %-30s // %s"; String templateUsage = " %-30s // %s";
String errorMessage = "Не корректно введена команда. Введите help для спарвки."; String errorMessage = "Не корректно введена команда. Введите help для спарвки.";
Optional<String> handle(String[] args, TaskService service); Optional<String> handle(String[] args, EntityService<? extends Identifiable> service);
String name(); String name();

View File

@ -2,6 +2,8 @@ package ru.kamask.pet.todo.cli;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.service.TaskService;
public class CompleteCommand implements Command { public class CompleteCommand implements Command {
@ -16,14 +18,16 @@ public class CompleteCommand implements Command {
} }
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, EntityService<? extends Identifiable> service) {
if (args.length != 1) if (args.length != 1)
return Optional.of(Command.errorMessage); return Optional.of(Command.errorMessage);
TaskService taskService = (TaskService) service;
try { try {
int id = Integer.parseInt(args[0]); int id = Integer.parseInt(args[0]);
return Optional.of(service.complete(id) return Optional.of(taskService.complete(id)
? "Задача ID-%d выполнена.".formatted(id) ? "Задача ID-%d выполнена.".formatted(id)
: "Задача ID-%d не найдена.".formatted(id)); : "Задача ID-%d не найдена.".formatted(id));

View File

@ -2,21 +2,24 @@ package ru.kamask.pet.todo.cli;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.service.TaskService;
public class CreateCommand implements Command { public class CreateCommand implements Command{
@Override @Override
public String name() { public String name() {
return "create"; return "create";
} }
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, EntityService<? extends Identifiable> service) {
if (args.length > 0) { if (args.length > 0) {
var title = String.join(" ", args); var title = String.join(" ", args);
if (title.length() > 30) if (title.length() > 30)
return Optional.of("Ошибка: максимальная длинна названия задачи 30 символов."); return Optional.of("Ошибка: максимальная длинна названия задачи 30 символов.");
service.create(title); TaskService taskService = (TaskService) service;
taskService.create(title);
return Optional.of(String.format("Задача \"%s\" успешно добавлена!", title)); return Optional.of(String.format("Задача \"%s\" успешно добавлена!", title));
} }
return Optional.of(Command.errorMessage); return Optional.of(Command.errorMessage);

View File

@ -2,9 +2,10 @@ package ru.kamask.pet.todo.cli;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
public class DeleteCommand implements Command { public class DeleteCommand implements Command{
@Override @Override
public String name() { public String name() {
return "delete"; return "delete";
@ -16,7 +17,7 @@ public class DeleteCommand implements Command {
} }
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, EntityService<? extends Identifiable> service) {
if (args.length != 1) if (args.length != 1)
return Optional.of(Command.errorMessage); return Optional.of(Command.errorMessage);

View File

@ -3,7 +3,9 @@ package ru.kamask.pet.todo.cli;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.model.SimpleTask; import ru.kamask.pet.todo.model.SimpleTask;
import ru.kamask.pet.todo.service.EntityService;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.service.TaskService;
public class ListCommand implements Command { public class ListCommand implements Command {
@ -13,11 +15,12 @@ public class ListCommand implements Command {
} }
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, EntityService<? extends Identifiable> service) {
if (args.length > 0) if (args.length > 0)
return Optional.of(Command.errorMessage); return Optional.of(Command.errorMessage);
TaskService taskService = (TaskService) service;
var res = formatWithTable(service.getAll(), "Список задач пуст."); List<SimpleTask> allTasks = taskService.getAll();
var res = formatWithTable(allTasks, "Список задач пуст.");
return Optional.of(res); return Optional.of(res);
} }

View File

@ -2,6 +2,8 @@ package ru.kamask.pet.todo.cli;
import java.util.Optional; import java.util.Optional;
import ru.kamask.pet.todo.model.Identifiable;
import ru.kamask.pet.todo.service.EntityService;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.service.TaskService;
public class SearchCommand implements Command { public class SearchCommand implements Command {
@ -16,13 +18,15 @@ public class SearchCommand implements Command {
} }
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, EntityService<? extends Identifiable> service) {
if (args.length != 1) if (args.length != 1)
return Optional.of(Command.errorMessage); return Optional.of(Command.errorMessage);
if (args[0].length() < 3) if (args[0].length() < 3)
return Optional.of("Длина запроса должна быть не менее 3 символов."); return Optional.of("Длина запроса должна быть не менее 3 символов.");
var matchTask = service.search(args[0]); TaskService taskService = (TaskService) service;
var matchTask = taskService.search(args[0]);
var res = new ListCommand().formatWithTable(matchTask, "Не найдено задач, соответствующих запросу."); var res = new ListCommand().formatWithTable(matchTask, "Не найдено задач, соответствующих запросу.");
return Optional.of(res); return Optional.of(res);