FINERACT-2169: Refactor job api controller;
This commit is contained in:
committed by
Adam Saghy
parent
3aa011b32e
commit
8462c67f3c
+4
-4
@@ -25,8 +25,8 @@ import java.util.stream.Collectors;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.fineract.client.models.BusinessStep;
|
import org.apache.fineract.client.models.BusinessStep;
|
||||||
import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
|
import org.apache.fineract.client.models.BusinessStepRequest;
|
||||||
import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
|
import org.apache.fineract.client.models.JobBusinessStepConfigData;
|
||||||
import org.apache.fineract.client.services.BusinessStepConfigurationApi;
|
import org.apache.fineract.client.services.BusinessStepConfigurationApi;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
@@ -52,7 +52,7 @@ public class WorkFlowJobHelper {
|
|||||||
new BusinessStep().stepName("LOAN_INTEREST_RECALCULATION").order(9L), //
|
new BusinessStep().stepName("LOAN_INTEREST_RECALCULATION").order(9L), //
|
||||||
new BusinessStep().stepName("EXTERNAL_ASSET_OWNER_TRANSFER").order(10L)//
|
new BusinessStep().stepName("EXTERNAL_ASSET_OWNER_TRANSFER").order(10L)//
|
||||||
);
|
);
|
||||||
UpdateBusinessStepConfigRequest request = new UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
|
BusinessStepRequest request = new BusinessStepRequest().businessSteps(businessSteps);
|
||||||
Response<Void> response = businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS, request)
|
Response<Void> response = businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS, request)
|
||||||
.execute();
|
.execute();
|
||||||
ErrorHelper.checkSuccessfulApiCall(response);
|
ErrorHelper.checkSuccessfulApiCall(response);
|
||||||
@@ -62,7 +62,7 @@ public class WorkFlowJobHelper {
|
|||||||
|
|
||||||
private void logChanges() throws IOException {
|
private void logChanges() throws IOException {
|
||||||
// --- log changes ---
|
// --- log changes ---
|
||||||
Response<GetBusinessStepConfigResponse> changesResponse = businessStepConfigurationApi
|
Response<JobBusinessStepConfigData> changesResponse = businessStepConfigurationApi
|
||||||
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
|
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
|
||||||
List<BusinessStep> businessStepsChanged = changesResponse.body().getBusinessSteps();
|
List<BusinessStep> businessStepsChanged = changesResponse.body().getBusinessSteps();
|
||||||
List<String> changes = businessStepsChanged//
|
List<String> changes = businessStepsChanged//
|
||||||
|
|||||||
+13
-45
@@ -32,24 +32,18 @@ import jakarta.ws.rs.PUT;
|
|||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.PathParam;
|
import jakarta.ws.rs.PathParam;
|
||||||
import jakarta.ws.rs.Produces;
|
import jakarta.ws.rs.Produces;
|
||||||
import jakarta.ws.rs.core.Context;
|
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
import jakarta.ws.rs.core.UriInfo;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.cob.data.ConfiguredJobNamesDTO;
|
import org.apache.fineract.cob.data.ConfiguredJobNamesDTO;
|
||||||
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.cob.data.request.BusinessStepRequest;
|
||||||
import org.apache.fineract.cob.service.ConfigJobParameterService;
|
import org.apache.fineract.cob.service.ConfigJobParameterService;
|
||||||
import org.apache.fineract.commands.domain.CommandWrapper;
|
import org.apache.fineract.commands.domain.CommandWrapper;
|
||||||
import org.apache.fineract.commands.service.CommandWrapperBuilder;
|
import org.apache.fineract.commands.service.CommandWrapperBuilder;
|
||||||
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||||
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
|
|
||||||
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
|
||||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -59,15 +53,7 @@ import org.springframework.stereotype.Component;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ConfigureBusinessStepApiResource {
|
public class ConfigureBusinessStepApiResource {
|
||||||
|
|
||||||
private static final Set<String> BUSINESS_STEP_CONFIG_RESPONSE_DATA_PARAMETERS = new HashSet<>(
|
private final DefaultToApiJsonSerializer<String> toApiJsonSerializer;
|
||||||
Arrays.asList("jobName", "businessSteps"));
|
|
||||||
private static final Set<String> BUSINESS_STEP_DETAIL_RESPONSE_DATA_PARAMETERS = new HashSet<>(
|
|
||||||
Arrays.asList("jobName", "availableBusinessSteps"));
|
|
||||||
|
|
||||||
private final DefaultToApiJsonSerializer<JobBusinessStepConfigData> businessStepConfigSerializeService;
|
|
||||||
private final DefaultToApiJsonSerializer<JobBusinessStepDetail> businessStepDetailSerializeService;
|
|
||||||
private final DefaultToApiJsonSerializer<ConfiguredJobNamesDTO> configuredJobNamesSerializer;
|
|
||||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
|
||||||
private final ConfigJobParameterService configJobParameterService;
|
private final ConfigJobParameterService configJobParameterService;
|
||||||
private final PortfolioCommandSourceWritePlatformService commandWritePlatformService;
|
private final PortfolioCommandSourceWritePlatformService commandWritePlatformService;
|
||||||
|
|
||||||
@@ -75,14 +61,9 @@ public class ConfigureBusinessStepApiResource {
|
|||||||
@Path("/names")
|
@Path("/names")
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
@Operation(summary = "List Business Jobs", description = "Returns the configured Business Jobs")
|
@Operation(summary = "List Business Jobs", description = "Returns the configured Business Jobs")
|
||||||
@ApiResponses({
|
public ConfiguredJobNamesDTO retrieveAllConfiguredBusinessJobs() {
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessJobConfigResponse.class))) })
|
|
||||||
public String retrieveAllConfiguredBusinessJobs(@Context final UriInfo uriInfo) {
|
|
||||||
|
|
||||||
List<String> businessJobNames = configJobParameterService.getAllConfiguredJobNames();
|
List<String> businessJobNames = configJobParameterService.getAllConfiguredJobNames();
|
||||||
ConfiguredJobNamesDTO result = new ConfiguredJobNamesDTO(businessJobNames);
|
return new ConfiguredJobNamesDTO(businessJobNames);
|
||||||
|
|
||||||
return configuredJobNamesSerializer.serialize(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@@ -90,16 +71,9 @@ public class ConfigureBusinessStepApiResource {
|
|||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the configured Business Steps for a job")
|
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the configured Business Steps for a job")
|
||||||
@ApiResponses({
|
public JobBusinessStepConfigData retrieveAllConfiguredBusinessStep(
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessStepConfigResponse.class))) })
|
|
||||||
public String retrieveAllConfiguredBusinessStep(@Context final UriInfo uriInfo,
|
|
||||||
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
||||||
|
return configJobParameterService.getBusinessStepConfigByJobName(jobName);
|
||||||
JobBusinessStepConfigData jobBusinessStepConfigData = configJobParameterService.getBusinessStepConfigByJobName(jobName);
|
|
||||||
|
|
||||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
|
||||||
return businessStepConfigSerializeService.serialize(settings, jobBusinessStepConfigData,
|
|
||||||
BUSINESS_STEP_CONFIG_RESPONSE_DATA_PARAMETERS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@@ -107,13 +81,14 @@ public class ConfigureBusinessStepApiResource {
|
|||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Updates the Business steps execution order for a job")
|
@Operation(summary = "List Business Step Configurations for a Job", description = "Updates the Business steps execution order for a job")
|
||||||
@RequestBody(content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.UpdateBusinessStepConfigRequest.class)))
|
@RequestBody(content = @Content(schema = @Schema(implementation = BusinessStepRequest.class)))
|
||||||
@ApiResponses({ @ApiResponse(responseCode = "204", description = "NO_CONTENT") })
|
@ApiResponses({ @ApiResponse(responseCode = "204", description = "NO_CONTENT") })
|
||||||
public Response updateJobBusinessStepConfig(@PathParam("jobName") @Parameter(description = "jobName") final String jobName,
|
public Response updateJobBusinessStepConfig(@PathParam("jobName") @Parameter(description = "jobName") final String jobName,
|
||||||
@Parameter(hidden = true) final String jsonRequestBody) {
|
@Parameter(hidden = true) BusinessStepRequest businessStepRequest) {
|
||||||
|
|
||||||
|
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessStepConfig(jobName)
|
||||||
|
.withJson(toApiJsonSerializer.serialize(businessStepRequest)).build();
|
||||||
|
|
||||||
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessStepConfig(jobName).withJson(jsonRequestBody)
|
|
||||||
.build();
|
|
||||||
commandWritePlatformService.logCommandSource(commandRequest);
|
commandWritePlatformService.logCommandSource(commandRequest);
|
||||||
return Response.status(Response.Status.NO_CONTENT).build();
|
return Response.status(Response.Status.NO_CONTENT).build();
|
||||||
}
|
}
|
||||||
@@ -123,15 +98,8 @@ public class ConfigureBusinessStepApiResource {
|
|||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the available Business Steps for a job")
|
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the available Business Steps for a job")
|
||||||
@ApiResponses({
|
public JobBusinessStepDetail retrieveAllAvailableBusinessStep(
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessStepConfigResponse.class))) })
|
|
||||||
public String retrieveAllAvailableBusinessStep(@Context final UriInfo uriInfo,
|
|
||||||
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
||||||
|
return configJobParameterService.getAvailableBusinessStepsByJobName(jobName);
|
||||||
JobBusinessStepDetail availableBusinessStepsByJobName = configJobParameterService.getAvailableBusinessStepsByJobName(jobName);
|
|
||||||
|
|
||||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
|
||||||
return businessStepDetailSerializeService.serialize(settings, availableBusinessStepsByJobName,
|
|
||||||
BUSINESS_STEP_DETAIL_RESPONSE_DATA_PARAMETERS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-70
@@ -1,70 +0,0 @@
|
|||||||
/**
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
* or more contributor license agreements. See the NOTICE file
|
|
||||||
* distributed with this work for additional information
|
|
||||||
* regarding copyright ownership. The ASF licenses this file
|
|
||||||
* to you under the Apache License, Version 2.0 (the
|
|
||||||
* "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package org.apache.fineract.cob.api;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
final class ConfigureBusinessStepResourceSwagger {
|
|
||||||
|
|
||||||
private ConfigureBusinessStepResourceSwagger() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "GetBusinessJobConfigResponse")
|
|
||||||
public static final class GetBusinessJobConfigResponse {
|
|
||||||
|
|
||||||
private GetBusinessJobConfigResponse() {}
|
|
||||||
|
|
||||||
public List<String> businessJobs;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "GetBusinessStepConfigResponse")
|
|
||||||
public static final class GetBusinessStepConfigResponse {
|
|
||||||
|
|
||||||
private GetBusinessStepConfigResponse() {}
|
|
||||||
|
|
||||||
@Schema(example = "CLOSE_OF_BUSINESS")
|
|
||||||
public String jobName;
|
|
||||||
public List<BusinessStep> businessSteps;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "BusinessStep")
|
|
||||||
public static final class BusinessStep {
|
|
||||||
|
|
||||||
private BusinessStep() {}
|
|
||||||
|
|
||||||
@Schema(example = "APPLY_PENALTY_FOR_OVERDUE_LOANS")
|
|
||||||
public String stepName;
|
|
||||||
@Schema(example = "1")
|
|
||||||
public Long order;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "UpdateBusinessStepConfigRequest")
|
|
||||||
public static final class UpdateBusinessStepConfigRequest {
|
|
||||||
|
|
||||||
private UpdateBusinessStepConfigRequest() {}
|
|
||||||
|
|
||||||
public List<BusinessStep> businessSteps;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.fineract.cob.data.request;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.fineract.cob.data.BusinessStep;
|
||||||
|
|
||||||
|
public record BusinessStepRequest(List<BusinessStep> businessSteps) implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
+2
-2
@@ -21,7 +21,7 @@ package org.apache.fineract.integrationtests.common;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.fineract.client.models.BusinessStep;
|
import org.apache.fineract.client.models.BusinessStep;
|
||||||
import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
|
import org.apache.fineract.client.models.BusinessStepRequest;
|
||||||
import org.apache.fineract.client.util.Calls;
|
import org.apache.fineract.client.util.Calls;
|
||||||
|
|
||||||
public class BusinessStepHelper {
|
public class BusinessStepHelper {
|
||||||
@@ -39,6 +39,6 @@ public class BusinessStepHelper {
|
|||||||
stepList.add(businessStep);
|
stepList.add(businessStep);
|
||||||
}
|
}
|
||||||
Calls.ok(FineractClientHelper.getFineractClient().businessStepConfiguration.updateJobBusinessStepConfig(jobName,
|
Calls.ok(FineractClientHelper.getFineractClient().businessStepConfiguration.updateJobBusinessStepConfig(jobName,
|
||||||
new UpdateBusinessStepConfigRequest().businessSteps(stepList)));
|
new BusinessStepRequest().businessSteps(stepList)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user