From ad63024b4f9b8ff18215217c89e8ea0dfb50cd93 Mon Sep 17 00:00:00 2001 From: Mohamed Magdy <14momagdi@gmail.com> Date: Sat, 12 Aug 2023 12:09:23 +0300 Subject: [PATCH] Add custom AutoConfiguration class for transfer service (FINERACT-1932) --- ...WritePlatformServiceJpaRepositoryImpl.java | 30 +--------- .../starter/TransferConfiguration.java | 58 +++++++++++++++++++ 2 files changed, 60 insertions(+), 28 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/starter/TransferConfiguration.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java index 8e98cf8ae..aea94a2a0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java @@ -23,6 +23,7 @@ import com.google.gson.JsonObject; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder; @@ -62,11 +63,9 @@ import org.apache.fineract.portfolio.transfer.exception.ClientNotAwaitingTransfe import org.apache.fineract.portfolio.transfer.exception.ClientNotAwaitingTransferApprovalOrOnHoldException; import org.apache.fineract.portfolio.transfer.exception.TransferNotSupportedException; import org.apache.fineract.portfolio.transfer.exception.TransferNotSupportedException.TransferNotSupportedReason; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@RequiredArgsConstructor public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWritePlatformService { private final ClientRepositoryWrapper clientRepositoryWrapper; @@ -83,31 +82,6 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr private final ClientTransferDetailsRepositoryWrapper clientTransferDetailsRepositoryWrapper; private final PlatformSecurityContext context; - @Autowired - public TransferWritePlatformServiceJpaRepositoryImpl(final ClientRepositoryWrapper clientRepositoryWrapper, - final OfficeRepositoryWrapper officeRepository, final CalendarInstanceRepository calendarInstanceRepository, - final LoanWritePlatformService loanWritePlatformService, final GroupRepositoryWrapper groupRepository, - final LoanRepositoryWrapper loanRepositoryWrapper, final TransfersDataValidator transfersDataValidator, - final NoteWritePlatformService noteWritePlatformService, final StaffRepositoryWrapper staffRepositoryWrapper, - final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, - final SavingsAccountWritePlatformService savingsAccountWritePlatformService, - final ClientTransferDetailsRepositoryWrapper clientTransferDetailsRepositoryWrapper, final PlatformSecurityContext context) { - this.clientRepositoryWrapper = clientRepositoryWrapper; - this.officeRepository = officeRepository; - this.calendarInstanceRepository = calendarInstanceRepository; - this.loanWritePlatformService = loanWritePlatformService; - this.groupRepository = groupRepository; - this.loanRepositoryWrapper = loanRepositoryWrapper; - this.transfersDataValidator = transfersDataValidator; - this.noteWritePlatformService = noteWritePlatformService; - this.staffRepositoryWrapper = staffRepositoryWrapper; - this.savingsAccountRepositoryWrapper = savingsAccountRepositoryWrapper; - this.savingsAccountWritePlatformService = savingsAccountWritePlatformService; - this.clientTransferDetailsRepositoryWrapper = clientTransferDetailsRepositoryWrapper; - this.context = context; - - } - @Override @Transactional public CommandProcessingResult transferClientsBetweenGroups(final Long sourceGroupId, final JsonCommand jsonCommand) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/starter/TransferConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/starter/TransferConfiguration.java new file mode 100644 index 000000000..d83e630b5 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/starter/TransferConfiguration.java @@ -0,0 +1,58 @@ +/** + * 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.portfolio.transfer.starter; + +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.organisation.office.domain.OfficeRepositoryWrapper; +import org.apache.fineract.organisation.staff.domain.StaffRepositoryWrapper; +import org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; +import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; +import org.apache.fineract.portfolio.client.domain.ClientTransferDetailsRepositoryWrapper; +import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper; +import org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService; +import org.apache.fineract.portfolio.note.service.NoteWritePlatformService; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.apache.fineract.portfolio.transfer.data.TransfersDataValidator; +import org.apache.fineract.portfolio.transfer.service.TransferWritePlatformService; +import org.apache.fineract.portfolio.transfer.service.TransferWritePlatformServiceJpaRepositoryImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class TransferConfiguration { + + @Bean + @ConditionalOnMissingBean(TransferWritePlatformService.class) + public TransferWritePlatformService transferWritePlatformService(ClientRepositoryWrapper clientRepositoryWrapper, + OfficeRepositoryWrapper officeRepository, CalendarInstanceRepository calendarInstanceRepository, + LoanWritePlatformService loanWritePlatformService, GroupRepositoryWrapper groupRepository, + LoanRepositoryWrapper loanRepositoryWrapper, TransfersDataValidator transfersDataValidator, + NoteWritePlatformService noteWritePlatformService, StaffRepositoryWrapper staffRepositoryWrapper, + SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, + SavingsAccountWritePlatformService savingsAccountWritePlatformService, + ClientTransferDetailsRepositoryWrapper clientTransferDetailsRepositoryWrapper, PlatformSecurityContext context) { + return new TransferWritePlatformServiceJpaRepositoryImpl(clientRepositoryWrapper, officeRepository, calendarInstanceRepository, + groupRepository, loanWritePlatformService, savingsAccountWritePlatformService, loanRepositoryWrapper, + savingsAccountRepositoryWrapper, transfersDataValidator, noteWritePlatformService, staffRepositoryWrapper, + clientTransferDetailsRepositoryWrapper, context); + } +}