From c87a732e2af370e48fdee72fd478c62fe36ac78e Mon Sep 17 00:00:00 2001 From: "julius.lautz" Date: Sat, 11 Dec 2021 18:36:23 +0100 Subject: [PATCH] added executor-humidity --- .../service/NotifyExecutorPoolService.java | 2 +- .../executor/domain/ExecutorType.java | 4 +- executor-humidity/pom.xml | 36 ++++++++++++++++++ .../ExecutorhumidityApplication.java | 16 ++++++++ .../in/web/TaskAvailableController.java | 38 +++++++++++++++++++ .../adapter/out/GetHumidityAdapter.java | 17 +++++++++ .../application/port/out/GetHumidityPort.java | 5 +++ .../service/TaskAvailableService.java | 27 +++++++++++++ .../executor/domain/Executor.java | 22 +++++++++++ 9 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 executor-humidity/pom.xml create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/ExecutorhumidityApplication.java create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/in/web/TaskAvailableController.java create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/out/GetHumidityAdapter.java create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/port/out/GetHumidityPort.java create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/service/TaskAvailableService.java create mode 100644 executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/domain/Executor.java diff --git a/executor-base/src/main/java/ch/unisg/executorBase/executor/application/service/NotifyExecutorPoolService.java b/executor-base/src/main/java/ch/unisg/executorBase/executor/application/service/NotifyExecutorPoolService.java index aee3142..64b6d23 100644 --- a/executor-base/src/main/java/ch/unisg/executorBase/executor/application/service/NotifyExecutorPoolService.java +++ b/executor-base/src/main/java/ch/unisg/executorBase/executor/application/service/NotifyExecutorPoolService.java @@ -1,4 +1,4 @@ -package ch.unisg.executorbase.executor.application.service; +package ch.unisg.executorBase.executor.application.service; import ch.unisg.common.valueobject.ExecutorURI; import ch.unisg.executorbase.executor.application.port.out.NotifyExecutorPoolPort; diff --git a/executor-base/src/main/java/ch/unisg/executorBase/executor/domain/ExecutorType.java b/executor-base/src/main/java/ch/unisg/executorBase/executor/domain/ExecutorType.java index ca9533a..8905baa 100644 --- a/executor-base/src/main/java/ch/unisg/executorBase/executor/domain/ExecutorType.java +++ b/executor-base/src/main/java/ch/unisg/executorBase/executor/domain/ExecutorType.java @@ -1,11 +1,11 @@ package ch.unisg.executorbase.executor.domain; public enum ExecutorType { - ADDITION, ROBOT; + ADDITION, ROBOT, HUMIDITY; /** * Checks if the give executor type exists. - * @return Wheter the given executor type exists + * @return Whether the given executor type exists **/ public static boolean contains(String test) { diff --git a/executor-humidity/pom.xml b/executor-humidity/pom.xml new file mode 100644 index 0000000..3c07d0c --- /dev/null +++ b/executor-humidity/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + org.example + executor-miro + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-autoconfigure + 2.5.5 + compile + + + org.springframework.boot + spring-boot-autoconfigure + 2.5.5 + compile + + + ch.unisg + executor-base + 0.0.1-SNAPSHOT + compile + + + + + 16 + 16 + + + diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/ExecutorhumidityApplication.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/ExecutorhumidityApplication.java new file mode 100644 index 0000000..181cfeb --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/ExecutorhumidityApplication.java @@ -0,0 +1,16 @@ +package ch.unisg.executorhumidity; + + +import ch.unisg.executorhumidity.executor.domain.Executor; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ExecutorhumidityApplication { + + public static void main(String[] args) { + SpringApplication.run(ExecutorhumidityApplication.class, args); + Executor.getExecutor(); + } + +} diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/in/web/TaskAvailableController.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/in/web/TaskAvailableController.java new file mode 100644 index 0000000..be85ab8 --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/in/web/TaskAvailableController.java @@ -0,0 +1,38 @@ +package ch.unisg.executorhumidity.executor.adapter.in.web; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import ch.unisg.executorbase.executor.application.port.in.TaskAvailableCommand; +import ch.unisg.executorbase.executor.application.port.in.TaskAvailableUseCase; +import ch.unisg.executorbase.executor.domain.ExecutorType; + +import java.util.concurrent.CompletableFuture; + +@RestController +public class TaskAvailableController { + private final TaskAvailableUseCase taskAvailableUseCase; + + public TaskAvailableController(TaskAvailableUseCase taskAvailableUseCase) { + this.taskAvailableUseCase = taskAvailableUseCase; + } + + @GetMapping(path="/newtask/{taskType}") + public ResponseEntity retrieveTaskfromTaskList(@PathVariable("taskType") String taskType) { + + if (ExecutorType.contains(taskType.toUpperCase())) { + TaskAvailableCommand command = new TaskAvailableCommand( + ExecutorType.valueOf(taskType.toUpperCase())); + CompletableFuture.runAsync(() -> taskAvailableUseCase.newTaskAvailable(command); + } + + // Add the content type as a response header + HttpHeaders responseHeaders = new HttpHeaders(); + + return new ResponseEntity<>("OK", responseHeaders, HttpStatus.OK); + } +} diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/out/GetHumidityAdapter.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/out/GetHumidityAdapter.java new file mode 100644 index 0000000..88f440d --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/adapter/out/GetHumidityAdapter.java @@ -0,0 +1,17 @@ +package ch.unisg.executorhumidity.executor.adapter.out; + +import ch.unisg.executorhumidity.executor.application.port.out.GetHumidityPort; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +@Component +@Primary +public class GetHumidityAdapter implements GetHumidityPort { + + @Override + public boolean getHumidity(String key) { + + CoapClient client1 = new CoapClient("coap://130.82.171.10:5683/humidity") + + } +} diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/port/out/GetHumidityPort.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/port/out/GetHumidityPort.java new file mode 100644 index 0000000..b865cfd --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/port/out/GetHumidityPort.java @@ -0,0 +1,5 @@ +package ch.unisg.executorhumidity.executor.application.port.out; + +public interface GetHumidityPort { + boolean getHumidity(String key); +} diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/service/TaskAvailableService.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/service/TaskAvailableService.java new file mode 100644 index 0000000..0e467c4 --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/application/service/TaskAvailableService.java @@ -0,0 +1,27 @@ +package ch.unisg.executorhumidity.executor.application.service; + +import ch.unisg.executorbase.executor.domain.ExecutorStatus; +import ch.unisg.executorhumidity.executor.domain.Executor; +import org.springframework.stereotype.Component; +import ch.unisg.executorbase.executor.application.port.in.TaskAvailableCommand; +import ch.unisg.executorbase.executor.application.port.in.TaskAvailableUseCase; +import lombok.RequiredArgsConstructor; + +import javax.transaction.Transactional; + +@RequiredArgsConstructor +@Component +@Transactional +public class TaskAvailableService implements TaskAvailableUseCase { + + @Override + public void newTaskAvailable(TaskAvailableCommand command) { + + Executor executor = Executor.getExecutor(); + + if(executor.getExecutorType() == command.getTaskType() && + executor.getStatus() == ExecutorStatus.IDLING) { + executor.getAssignment(); + } + } +} diff --git a/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/domain/Executor.java b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/domain/Executor.java new file mode 100644 index 0000000..2a8cd3c --- /dev/null +++ b/executor-humidity/src/main/java/ch/unisg/executorhumidity/executor/domain/Executor.java @@ -0,0 +1,22 @@ +package ch.unisg.executorhumidity.executor.domain; + +import ch.unisg.executorbase.executor.domain.ExecutorBase; +import ch.unisg.executorbase.executor.domain.ExecutorType; + +public class Executor extends ExecutorBase{ + + private static final Executor executor = new Exec(ExecutorType.HUMIDITY); + // TODO: Add the necessary ports + + + private Executor(ExecutorType executorType) {super(executorType);} + + public static Executor getExecutor() {return executor;} + + + @Override + protected + String execution(String input) { + //TODO: Fill + } +}