diff --git a/blibli-backend-framework-job/pom.xml b/blibli-backend-framework-job/pom.xml new file mode 100644 index 0000000..f86430d --- /dev/null +++ b/blibli-backend-framework-job/pom.xml @@ -0,0 +1,42 @@ + + + + blibli-backend-framework + com.blibli.oss + 0.0.6-SNAPSHOT + + 4.0.0 + + blibli-backend-framework-job + + + + io.projectreactor + reactor-test + test + + + org.projectlombok + lombok + true + + + com.blibli.oss + blibli-backend-framework-reactor + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + \ No newline at end of file diff --git a/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/Job.java b/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/Job.java new file mode 100644 index 0000000..bfae4d5 --- /dev/null +++ b/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/Job.java @@ -0,0 +1,9 @@ +package com.blibli.oss.backend.job; + +import reactor.core.publisher.Mono; + +public interface Job { + + Mono execute(T request); + +} diff --git a/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/JobManager.java b/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/JobManager.java new file mode 100644 index 0000000..b4b28b8 --- /dev/null +++ b/blibli-backend-framework-job/src/main/java/com/blibli/oss/backend/job/JobManager.java @@ -0,0 +1,9 @@ +package com.blibli.oss.backend.job; + +import reactor.core.publisher.Mono; + +public interface JobManager { + + Mono execute(String command); + +} diff --git a/blibli-backend-framework-job/src/test/java/com/blibli/oss/backend/job/JobTest.java b/blibli-backend-framework-job/src/test/java/com/blibli/oss/backend/job/JobTest.java new file mode 100644 index 0000000..d6c39f8 --- /dev/null +++ b/blibli-backend-framework-job/src/test/java/com/blibli/oss/backend/job/JobTest.java @@ -0,0 +1,57 @@ +package com.blibli.oss.backend.job; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.cli.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +@Slf4j +class JobTest { + + private ObjectMapper objectMapper; + + @BeforeEach + void setUp() { + objectMapper = new ObjectMapper(); + } + + @Test + void testFirst() { + String[] arguments = "reindex --start=100 --from=200".split("\\s+"); + + String command = arguments[0]; + Map map = new HashMap<>(); + + for (int i = 1; i < arguments.length; i++) { + String[] split = arguments[i].split("="); + if (split.length == 2 && split[0].startsWith("--")) { + map.put(split[0].substring(2), split[1]); + } + } + + Request request = objectMapper.convertValue(map, Request.class); + log.info(request.toString()); + } + + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class Request { + + private Integer start; + + private Integer from; + + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 830daa3..6f58208 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ blibli-backend-framework-validation blibli-backend-framework-sleuth blibli-backend-framework-external-api + blibli-backend-framework-job @@ -114,6 +115,11 @@ blibli-backend-framework-version ${blibli-framework.version} + + com.blibli.oss + blibli-backend-framework-job + ${blibli-framework.version} + com.blibli.oss blibli-backend-framework-json