Compare commits
No commits in common. "dd1ec57cd321f8aa28f8b2dd5d4168e2b5f5ce9e" and "f25725476b027f6ecedce1d7ecca3a77c8eec3a2" have entirely different histories.
dd1ec57cd3
...
f25725476b
@ -1,16 +1,26 @@
|
|||||||
package ru.kamask.pet.todo;
|
package ru.kamask.pet.todo;
|
||||||
|
|
||||||
import java.io.IOException;
|
import ru.kamask.pet.todo.model.SimpleTask;
|
||||||
|
|
||||||
import ru.kamask.pet.todo.cli.CliEngine;
|
|
||||||
import ru.kamask.pet.todo.repo.InMemoryTaskRepository;
|
import ru.kamask.pet.todo.repo.InMemoryTaskRepository;
|
||||||
import ru.kamask.pet.todo.service.TaskService;
|
import ru.kamask.pet.todo.service.TaskService;
|
||||||
|
|
||||||
public class TodoApp {
|
public class TodoApp {
|
||||||
public static void main(String[] args) throws IOException {
|
|
||||||
|
public static void main(String[] args) {
|
||||||
var service = new TaskService(new InMemoryTaskRepository());
|
var service = new TaskService(new InMemoryTaskRepository());
|
||||||
var cli = new CliEngine(service);
|
|
||||||
cli.start();
|
service.create("Задача номер один");
|
||||||
|
service.create("Задача номер два");
|
||||||
|
service.create("Задача номер три");
|
||||||
|
service.create("Задача номер четыре");
|
||||||
|
|
||||||
|
System.out.println(service.list());
|
||||||
|
|
||||||
|
service.complete(2);
|
||||||
|
service.getById(2).ifPresent(task -> System.out.println(((SimpleTask) task).data()));
|
||||||
|
|
||||||
|
service.remove(3);
|
||||||
|
System.out.println(service.list());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,71 +0,0 @@
|
|||||||
package ru.kamask.pet.todo.cli;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import ru.kamask.pet.todo.service.TaskService;
|
|
||||||
|
|
||||||
public class CliEngine {
|
|
||||||
private HashMap<String, Command> registry = new HashMap<>();
|
|
||||||
private TaskService service;
|
|
||||||
private BufferedReader reader;
|
|
||||||
|
|
||||||
public CliEngine(TaskService service) {
|
|
||||||
this.service = service;
|
|
||||||
reader = new BufferedReader(new InputStreamReader(System.in));
|
|
||||||
initializeCommands();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start() throws IOException {
|
|
||||||
System.out.println("\nДобро пожаловать в Список задач 2.0!");
|
|
||||||
System.out.println("Введите help для просмтора доступных команд или exit для выхода.");
|
|
||||||
while (true) {
|
|
||||||
System.out.print("\ntodo> ");
|
|
||||||
var input = reader.readLine().trim();
|
|
||||||
System.out.println();
|
|
||||||
switch (input) {
|
|
||||||
case "help" -> handleHelp();
|
|
||||||
case "exit" -> System.exit(0);
|
|
||||||
default -> handleCommand(input).ifPresentOrElse(System.out::println, () -> {
|
|
||||||
System.out.println("Не известная команда. Повторите ввод.\n");
|
|
||||||
handleHelp();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void registerCommand(Command command) {
|
|
||||||
registry.put(command.name(), command);
|
|
||||||
}
|
|
||||||
|
|
||||||
void initializeCommands() {
|
|
||||||
registerCommand(new CreateCommand());
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleHelp() {
|
|
||||||
var template = " %-30s // %s";
|
|
||||||
System.out.println("Доступные команды:\n");
|
|
||||||
registry.values().stream()
|
|
||||||
.map(handler -> String.format(template, handler.example(), handler.description()))
|
|
||||||
.forEach(System.out::println);
|
|
||||||
System.out.println();
|
|
||||||
System.out.printf(template, "help", "Вот этот список команд\n");
|
|
||||||
System.out.printf(template, "exit", "Выход, но лучше не надо)\n");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Optional<String> handleCommand(String input) {
|
|
||||||
var parts = input.split("\\s+");
|
|
||||||
var command = parts[0];
|
|
||||||
var args = Arrays.copyOfRange(parts, 1, parts.length);
|
|
||||||
|
|
||||||
var handlerOpt = Optional.ofNullable(registry.get(command));
|
|
||||||
if (handlerOpt.isPresent())
|
|
||||||
return handlerOpt.get().handle(args, service);
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
package ru.kamask.pet.todo.cli;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import ru.kamask.pet.todo.service.TaskService;
|
|
||||||
|
|
||||||
public interface Command {
|
|
||||||
Optional<String> handle(String[] args, TaskService service);
|
|
||||||
|
|
||||||
String name();
|
|
||||||
|
|
||||||
String example();
|
|
||||||
|
|
||||||
String description();
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
package ru.kamask.pet.todo.cli;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import ru.kamask.pet.todo.service.TaskService;
|
|
||||||
|
|
||||||
public class CreateCommand implements Command {
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "create";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Optional<String> handle(String[] args, TaskService service) {
|
|
||||||
// TODO create new todo
|
|
||||||
return Optional.of("Добавление новой задачи");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String example() {
|
|
||||||
return name() + " <title>";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String description() {
|
|
||||||
return "Добавление новой задачи";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user