3 Commits

2 changed files with 85 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
plugins {
id 'java'
id 'jacoco'
id 'application'
}
group = 'hhn.temp.project'
@@ -52,3 +53,9 @@ jacocoTestReport {
html.outputLocation.set(layout.buildDirectory.dir('jacocoHtml'))
}
}
jacocoTestCoverageVerification {
dependsOn test
}
application {
mainClass = "hhn.temp.project.Main"
}

View File

@@ -1,9 +1,9 @@
package hhn.temp.project;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import hhn.temp.project.provider.SimpleDatabaseManager;
import java.sql.SQLException;
import java.util.*;
public class AssignmentManager {
private Map<Integer, Worker> workerMap;
@@ -11,22 +11,66 @@ public class AssignmentManager {
private int workerIdCounter;
private int taskIdCounter;
private UserCommands userInterface;
private SimpleDatabaseManager database;
public AssignmentManager() {
database = new SimpleDatabaseManager();
connect();
workerMap = new HashMap<>();
taskMap = new HashMap<>();
workerIdCounter = 1000;
taskIdCounter = 0;
sync();
userInterface = new UserCommands(this);
}
private void connect() {
try {
database.connect();
} catch (SQLException e) {
System.err.println("Failed to connect to database");
}
}
private void sync() {
workerMap.clear();
taskMap.clear();
try {
Collection<Worker> workers = database.getWorkers();
if (workers != null) {
for (Worker worker : workers) {
workerMap.put(worker.getId(),worker);
if (worker.getId() > workerIdCounter) {
workerIdCounter = worker.getId();
}
}
}
Collection<Task> tasks = database.getTasks();
if (tasks != null) {
for (Task task : tasks) {
taskMap.put(task.getTaskId(),task);
if (task.getTaskId() > taskIdCounter) {
taskIdCounter = task.getTaskId();
}
}
}
} catch (SQLException e) {
System.err.println("Failed to sync");
}
}
public Map<Integer, Task> getTaskMap() {
return taskMap;
}
public Map<Integer, Worker> getWorkerMap() {return workerMap;}
public int createWorker(String name) {
sync();
Worker worker = new Worker(name, ++workerIdCounter);
workerMap.put(workerIdCounter, worker);
try {
database.saveWorker(worker);
} catch (SQLException e) {
System.err.println("Failed to save worker");
}
return workerIdCounter;
}
public void removeWorker(int workerId) {
@@ -34,6 +78,11 @@ public class AssignmentManager {
throw new IllegalArgumentException("WorkerId must exist in order to remove it");
}
workerMap.remove(workerId);
try {
database.deleteWorker(workerId);
} catch (SQLException e) {
System.err.println("Failed to delete worker");
}
}
public int addTask(int workerId, String name, String description) {
if (!workerMap.containsKey(workerId) || name == null || description == null) {
@@ -41,6 +90,11 @@ public class AssignmentManager {
}
Task task = new Task(++taskIdCounter, workerId, name, description);
taskMap.put(taskIdCounter, task);
try {
database.saveTask(task);
} catch (SQLException e) {
System.err.println("Failed to save task");
}
return taskIdCounter;
}
public Task getTask(int taskId) {
@@ -62,12 +116,22 @@ public class AssignmentManager {
Task task = taskMap.get(taskId);
task.setName(name);
task.setDescription(description);
try {
database.updateTask(task.getTaskId(),task);
} catch (SQLException e) {
System.err.println("Failed to update Task");
}
}
public void removeTask(int taskId) {
if (!taskMap.containsKey(taskId)) {
throw new IllegalArgumentException("Task Id does not exist");
}
taskMap.remove(taskId);
try {
database.deleteTask(taskId);
} catch (SQLException e) {
System.err.println("Failed to remove task");
}
}
public void finishTask(int workerId, int taskId) {
if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) {
@@ -75,6 +139,11 @@ public class AssignmentManager {
}
Task task = taskMap.get(taskId);
task.setTaskState(TaskState.FINISHED);
try {
database.updateTask(taskId,task);
} catch (SQLException e) {
System.err.println("Failed to finish task");
}
}
public void unfinishTask(int workerId, int taskId) {
if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) {
@@ -82,6 +151,11 @@ public class AssignmentManager {
}
Task task = taskMap.get(taskId);
task.setTaskState(TaskState.IN_PROGRESS);
try {
database.updateTask(taskId,task);
} catch (SQLException e) {
System.err.println("Failed to finish task");
}
}
public UserCommands getUserCommands() {
return userInterface;