TaskManager.java

package hhn.temp.project;

import hhn.temp.project.expections.TaskAlreadyExistsException;
import hhn.temp.project.provider.MySql;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TaskManager {

  private Map<Integer, Task> taskMap;
  private MySql mysql;

  public TaskManager(String user, String password, String db, String host, String port) {

    if(user == null || password == null || db == null || host == null || port == null) {
      throw new NullPointerException("A argument is null");
    }

    taskMap = new HashMap<>();
    this.mysql = new MySql(user, password, db, host, port);
    this.mysql.connect();
  }
  /**
    * only for Testing
    */
  public void resetTest() {
    this.mysql.reset();
  }

  public Task createTask(String name, String description) {
    if (name == null || description == null ) {

      throw new IllegalArgumentException("Name/Description is null!");
    }
    if(name.isEmpty()) {
      throw new IllegalArgumentException("Name is empty!");
    }

    if(!checkOnlyLetterOrDigit(name)) {
      throw new IllegalArgumentException("Only Letters or Digit are allowed in the name: " + name);
    }

    boolean taskExited = this.mysql.existTask(name);
    if(taskExited) {
      throw new TaskAlreadyExistsException("Task already exits, with the name: " + name);
    }

    int taskId = this.mysql.createTask(name, description);
    Task task = this.mysql.getTask(taskId);

    //taskMap.put(task.getTaskID(), task);
    return task;
  }

  public List<Task> getTaskList() {

    return this.mysql.getTaskList();
  }

  public Task getTask(String name) {
    if(!this.mysql.existTask(name)) {
      throw new IllegalArgumentException("Wrong name");
    }

    return this.mysql.getTask(name);
  }
  public Task getTask(int taskID) {
    if(!this.mysql.existTask(taskID)) {
      throw new IllegalArgumentException("Wrong id");
    }
    return this.mysql.getTask(taskID);
  }

  public void deleteTask(String name) {
    if (name == null ) {

      throw new IllegalArgumentException("Name is null!");
    }
    if(name.isEmpty() || !this.mysql.existTask(name)) {
      throw new IllegalArgumentException("Wrong name!");
    }

    this.mysql.deleteTask(name);

  }

  private boolean checkOnlyLetterOrDigit(String text) {
    boolean result = true;

    for(int i = 0; i < text.length(); i++) {
      char c = text.charAt(i);
      if(!Character.isLetterOrDigit(c)) {
        result = false;
        break;
      }
    }
    return result;
  }
//  private boolean checkOnlyLetter(String text) {
//    boolean result = true;
//
//    for(int i = 0; i < text.length(); i++) {
//      char c = text.charAt(i);
//      if(!Character.isLetter(c)) {
//        result = false;
//        break;
//      }
//    }
//    return result;
//  }
}