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;
// }
}