Manage scheduler and cob jobs

This commit is contained in:
Jose Alberto Hernandez
2022-09-16 17:26:19 +02:00
committed by Arnold Gálovics
parent 6bd21e71be
commit 744d38c588
5 changed files with 40 additions and 0 deletions
@@ -18,6 +18,7 @@
*/ */
package org.apache.fineract.cob.api; package org.apache.fineract.cob.api;
import com.google.gson.Gson;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.ArraySchema;
@@ -29,6 +30,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.GET; import javax.ws.rs.GET;
@@ -69,6 +71,20 @@ public class ConfigureBusinessStepResource {
private final ConfigJobParameterService configJobParameterService; private final ConfigJobParameterService configJobParameterService;
private final PortfolioCommandSourceWritePlatformService commandWritePlatformService; private final PortfolioCommandSourceWritePlatformService commandWritePlatformService;
@GET
@Path("/names")
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "List Business Jobs", description = "Returns the configured Business Jobs")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessJobConfigResponse.class)))) })
public String retrieveAllConfiguredBusinessJobs(@Context final UriInfo uriInfo) {
List<String> businessJobNames = configJobParameterService.getAllConfiguredJobNames();
final Gson gson = new Gson();
return gson.toJson(businessJobNames);
}
@GET @GET
@Path("{jobName}/steps") @Path("{jobName}/steps")
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@@ -27,6 +27,15 @@ final class ConfigureBusinessStepResourceSwagger {
} }
@Schema(description = "GetBusinessJobConfigResponse")
public static final class GetBusinessJobConfigResponse {
private GetBusinessJobConfigResponse() {}
public List<String> businessJobs;
}
@Schema(description = "GetBusinessStepConfigResponse") @Schema(description = "GetBusinessStepConfigResponse")
public static final class GetBusinessStepConfigResponse { public static final class GetBusinessStepConfigResponse {
@@ -21,8 +21,13 @@ package org.apache.fineract.cob.domain;
import java.util.List; import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
public interface BatchBusinessStepRepository extends JpaRepository<BatchBusinessStep, Long>, JpaSpecificationExecutor<BatchBusinessStep> { public interface BatchBusinessStepRepository extends JpaRepository<BatchBusinessStep, Long>, JpaSpecificationExecutor<BatchBusinessStep> {
List<BatchBusinessStep> findAllByJobName(String jobName); List<BatchBusinessStep> findAllByJobName(String jobName);
@Query("SELECT DISTINCT bbs.jobName FROM BatchBusinessStep bbs")
List<String> findConfiguredJobNames();
} }
@@ -18,6 +18,7 @@
*/ */
package org.apache.fineract.cob.service; package org.apache.fineract.cob.service;
import java.util.List;
import org.apache.fineract.cob.data.JobBusinessStepConfigData; import org.apache.fineract.cob.data.JobBusinessStepConfigData;
import org.apache.fineract.cob.data.JobBusinessStepDetail; import org.apache.fineract.cob.data.JobBusinessStepDetail;
import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.api.JsonCommand;
@@ -30,4 +31,7 @@ public interface ConfigJobParameterService {
CommandProcessingResult updateStepConfigByJobName(JsonCommand command, String jobName); CommandProcessingResult updateStepConfigByJobName(JsonCommand command, String jobName);
JobBusinessStepDetail getAvailableBusinessStepsByJobName(String jobName); JobBusinessStepDetail getAvailableBusinessStepsByJobName(String jobName);
List<String> getAllConfiguredJobNames();
} }
@@ -91,4 +91,10 @@ public class ConfigJobParameterServiceImpl implements ConfigJobParameterService
jobBusinessStepDetail.setAvailableBusinessSteps(availableBusinessSteps); jobBusinessStepDetail.setAvailableBusinessSteps(availableBusinessSteps);
return jobBusinessStepDetail; return jobBusinessStepDetail;
} }
@Override
public List<String> getAllConfiguredJobNames() {
return batchBusinessStepRepository.findConfiguredJobNames();
}
} }