diff --git a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java index 1b024ac68be91fc3b1568e916b60a56f58933530..89a6d6f314e5d78c34beeb76613489be7fe92d5e 100644 --- a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java +++ b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java @@ -21,8 +21,12 @@ import biz.nynja.account.grpc.AccountResponse; import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; import biz.nynja.account.grpc.CreatePendingAccountRequest; import biz.nynja.account.grpc.CreatePendingAccountResponse; +import biz.nynja.account.grpc.ErrorResponse; +import biz.nynja.account.grpc.ErrorResponse.Cause; import biz.nynja.account.repositories.AccountRepository; import biz.nynja.account.services.decomposition.AccountCreator; +import biz.nynja.account.validation.Validation; +import biz.nynja.account.validation.ValidationError; import io.grpc.stub.StreamObserver; /** @@ -51,6 +55,14 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic logger.info("Getting accounts ..."); logger.debug("Getting accounts: {} ...", request); + Validation validation = validateRowInput(request.getStartRow(), request.getEndRow()); + if (validation.hasErrors()) { + responseObserver.onNext(AccountsAdminResponse.newBuilder().setError(ErrorResponse.newBuilder() + .setCause(validation.getCause().get()).setMessage(validation.getErrorMessage())).build()); + responseObserver.onCompleted(); + return; + } + List accounts = agGridService.getData(request.getEndRow(), request.getStartRow(), request.getFilterModelList()); @@ -59,6 +71,20 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic responseObserver.onCompleted(); } + private Validation validateRowInput(int startRow, int endRow) { + Validation validation = new Validation(); + if (startRow < 1) { + validation.addError(new ValidationError( + "startRow parameter (" + startRow + + ") should be more than 1 and less or equal to endRow parameter (" + endRow + ").", + Cause.ADMIN_INVALID_START_ROW)); + } else if (endRow < startRow || endRow > 100) { + validation.addError(new ValidationError("endRow parameter (" + endRow + ") should be more than start row (" + + startRow + ") and less than current max of 100.", Cause.ADMIN_INVALID_END_ROW)); + } + return validation; + } + @Override public void getCountOfAllAccounts(EmptyRequest request, StreamObserver responseObserver) { logger.info("Getting count of all accounts ...");