TaskManager.java
package hhn.temp.project;
import hhn.temp.project.expections.TaskAlreadyExistsException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TaskManager {
private Map<Integer, Task> taskMap;
public TaskManager() {
taskMap = new HashMap<>();
}
public Task createTask(String name, String description) {
boolean taskExited = this.taskMap.values().stream().anyMatch(task -> task.getName().equals(name));
if(taskExited) {
throw new TaskAlreadyExistsException("Task already exits, with the name: " + name);
}
Task task = new Task(name, description);
taskMap.put(task.getTaskID(), task);
return task;
}
public List<Task> getTaskList() {
return new ArrayList<>(this.taskMap.values());
}
public Task getTask(String name) {
return taskMap.values().stream().filter(t -> t.getName().equals(name)).findFirst()
.orElseThrow(() -> new IllegalArgumentException("Wrong name"));
}
public Task getTask(int taskID) {
if(!this.taskMap.containsKey(taskID)) {
throw new IllegalArgumentException("Wrong id");
}
return this.taskMap.get(taskID);
}
public void deleteTask(String name) {
if (name == null ) {
throw new IllegalArgumentException("Name is null!");
}
if(name.isEmpty() || this.taskMap.values().stream().noneMatch(t -> t.getName().equals(name))) {
throw new IllegalArgumentException("Wrong name!");
}
this.taskMap.remove(this.taskMap.values().stream().filter(t -> t.getName().equals(name)).findFirst()
.orElseThrow().getTaskID());
}
}