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());

  }
}