This commit is contained in:
2021-11-22 10:11:33 +01:00
parent 43036b4312
commit 3c35f84913
21 changed files with 215 additions and 105 deletions

View File

@@ -15,18 +15,23 @@ public class MongoTaskDocument {
public String taskType;
public String originalTaskUri;
public String taskStatus;
public String inputData;
public String outputData;
public String taskListName;
public MongoTaskDocument(String taskId, String taskName, String taskType,
String originalTaskUri,
String taskStatus, String taskListName) {
String taskStatus, String inputData, String outputData,
String taskListName) {
this.taskId = taskId;
this.taskName = taskName;
this.taskType = taskType;
this.originalTaskUri = originalTaskUri;
this.taskStatus = taskStatus;
this.inputData = inputData;
this.outputData = outputData;
this.taskListName = taskListName;
}
}

View File

@@ -2,18 +2,23 @@ package ch.unisg.tapastasks.tasks.adapter.out.persistence.mongodb;
import ch.unisg.tapastasks.tasks.domain.Task;
import ch.unisg.tapastasks.tasks.domain.TaskList;
import java.util.Objects;
import org.springframework.stereotype.Component;
@Component
class TaskMapper {
Task mapToDomainEntity(MongoTaskDocument task) {
return Task.withIdNameTypeOriginaluriStatus(
return Task.createTaskWithIdNameTypeOriginaluriStatusInputAndOutputData(
new Task.TaskId(task.taskId),
new Task.TaskName(task.taskName),
new Task.TaskType(task.taskType),
new Task.OriginalTaskUri(task.originalTaskUri),
new Task.TaskStatus(Task.Status.valueOf(task.taskStatus))
new Task.TaskStatus(Task.Status.valueOf(task.taskStatus)),
new Task.InputData(task.inputData),
new Task.OutputData(task.outputData)
);
}
@@ -22,8 +27,10 @@ class TaskMapper {
task.getTaskId().getValue(),
task.getTaskName().getValue(),
task.getTaskType().getValue(),
task.getOriginalTaskUri().getValue(),
Objects.isNull(task.getOriginalTaskUri()) ? null : task.getOriginalTaskUri().getValue(),
task.getTaskStatus().getValue().toString(),
Objects.isNull(task.getInputData()) ? null : task.getInputData().getValue(),
Objects.isNull(task.getOutputData()) ? null : task.getOutputData().getValue(),
TaskList.getTapasTaskList().getTaskListName().getValue()
);
}

View File

@@ -13,6 +13,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.Objects;
import javax.transaction.Transactional;
@RequiredArgsConstructor
@@ -29,7 +31,7 @@ public class AddNewTaskToTaskListService implements AddNewTaskToTaskListUseCase
public Task addNewTaskToTaskList(AddNewTaskToTaskListCommand command) {
TaskList taskList = TaskList.getTapasTaskList();
taskListLock.lockTaskList(taskList.getTaskListName());
// taskListLock.lockTaskList(taskList.getTaskListName());
Task newTask;
@@ -47,7 +49,7 @@ public class AddNewTaskToTaskListService implements AddNewTaskToTaskListUseCase
}
addTaskToRepositoryPort.addTask(newTask);
taskListLock.releaseTaskList(taskList.getTaskListName());
// taskListLock.releaseTaskList(taskList.getTaskListName());
//Here we are using the application service to emit the domain event to the outside of the bounded context.
//This event should be considered as a light-weight "integration event" to communicate with other services.
@@ -60,7 +62,7 @@ public class AddNewTaskToTaskListService implements AddNewTaskToTaskListUseCase
taskList.getTaskListName().getValue(),
newTask.getTaskId().getValue(),
newTask.getTaskType().getValue(),
newTask.getInputData().getValue()
Objects.isNull(newTask.getInputData()) ? null : newTask.getInputData().getValue()
);
newTaskAddedEventPort.publishNewTaskAddedEvent(newTaskAdded);
}

View File

@@ -81,18 +81,18 @@ public class Task {
}
public Task(TaskId taskId, TaskName taskName, TaskType taskType, OriginalTaskUri taskUri,
TaskStatus taskStatus) {
this.taskId = taskId;
this.taskName = taskName;
this.taskType = taskType;
this.originalTaskUri = taskUri;
this.taskStatus = taskStatus;
this.inputData = null;
this.outputData = null;
}
TaskStatus taskStatus, InputData inputData, OutputData outputData) {
this.taskId = taskId;
this.taskName = taskName;
this.taskType = taskType;
this.originalTaskUri = taskUri;
this.taskStatus = taskStatus;
this.inputData = inputData;
this.outputData = outputData;
}
protected static Task createTaskWithNameAndType(TaskName name, TaskType type) {
return new Task(name, type);
}
public static Task createTaskWithNameAndTypeAndOriginalTaskUri(TaskName name, TaskType type,
@@ -110,11 +110,10 @@ this.outputData = null;
return new Task(name, type, originalTaskUri, inputData);
}
public static Task withIdNameTypeOriginaluriStatus(TaskId taskId, TaskName taskName,
TaskType taskType,
OriginalTaskUri originalTaskUri,
TaskStatus taskStatus) {
return new Task(taskId, taskName, taskType, originalTaskUri, taskStatus);
public static Task createTaskWithIdNameTypeOriginaluriStatusInputAndOutputData(TaskId taskId,
TaskName taskName, TaskType taskType, OriginalTaskUri originalTaskUri, TaskStatus taskStatus,
InputData inputData, OutputData outputData) {
return new Task(taskId, taskName, taskType, originalTaskUri, taskStatus, inputData, outputData);
}
@Value

View File

@@ -74,9 +74,12 @@ public class TaskList {
//However, we skip this here as it makes the core even more complex (e.g., we have to implement a light-weight
//domain event publisher and subscribers (see "Implementing Domain-Driven Design by V. Vernon, pp. 296ff).
listOfTasks.value.add(newTask);
logger.log(Level.INFO, "New task created! Id: " + newTask.getTaskId().getValue() +
" | Name: " + newTask.getTaskName().getValue() +
" | InputData: " + newTask.getInputData().getValue());
String message = "New task created! Id: " + newTask.getTaskId().getValue() +
" | Name: " + newTask.getTaskName().getValue();
if (newTask.getInputData() != null) {
message += " | Input data: " + newTask.getInputData().getValue();
}
logger.log(Level.INFO, message);
logger.log(Level.INFO, "Number of tasks: {0}", listOfTasks.value.size());
}

View File

@@ -1,6 +1,5 @@
server.port=8081
spring.data.mongodb.uri=mongodb://127.0.0.1:27017
#spring.data.mongodb.uri=mongodb://root:8nP7s0a@mongodb:27017/
spring.data.mongodb.uri=mongodb://root:password@localhost:27017/
spring.data.mongodb.database=tapas-tasks
baseuri=https://tapas-tasks.86-119-34-23.nip.io/