From dc3b94d1179e553442239fac4915ee6906e66884 Mon Sep 17 00:00:00 2001 From: Mohamed Magdi-Abdelmonem Date: Sat, 30 Sep 2023 15:44:30 +0300 Subject: [PATCH] FINERACT-1932: Add starter Configuration class for portfolio.savings module --- ...erestRateChartReadPlatformServiceImpl.java | 22 +- ...oldTransactionReadPlatformServiceImpl.java | 17 +- ...eMatureCalculationPlatformServiceImpl.java | 20 +- ...DepositAccountReadPlatformServiceImpl.java | 46 +- ...WritePlatformServiceJpaRepositoryImpl.java | 2 - ...WritePlatformServiceJpaRepositoryImpl.java | 50 +- ...DepositProductReadPlatformServiceImpl.java | 13 +- ...positsDropdownReadPlatformServiceImpl.java | 4 +- ...WritePlatformServiceJpaRepositoryImpl.java | 27 +- .../service/GSIMReadPlatformServiceImpl.java | 14 +- ...ualMonitoringWritePlatformServiceImpl.java | 13 +- ...WritePlatformServiceJpaRepositoryImpl.java | 27 +- ...ApplicationTransitionApiJsonValidator.java | 10 +- ...sAccountChargeReadPlatformServiceImpl.java | 4 - ...ingsAccountInterestPostingServiceImpl.java | 10 +- ...SavingsAccountReadPlatformServiceImpl.java | 4 - ...WritePlatformServiceJpaRepositoryImpl.java | 2 - ...WritePlatformServiceJpaRepositoryImpl.java | 2 - ...avingsDropdownReadPlatformServiceImpl.java | 4 +- ...SavingsProductReadPlatformServiceImpl.java | 2 - ...WritePlatformServiceJpaRepositoryImpl.java | 26 +- .../SavingsSchedularInterestPoster.java | 4 - .../SavingsSchedularInterestPosterTask.java | 4 - ...sAccountTransactionsSearchServiceImpl.java | 2 - .../savings/starter/SavingsConfiguration.java | 440 ++++++++++++++++++ 25 files changed, 488 insertions(+), 281 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java index d83b08ecd..eda6a2a04 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java @@ -26,6 +26,7 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.core.data.EnumOptionData; @@ -45,15 +46,13 @@ import org.apache.fineract.portfolio.savings.data.DepositAccountInterestIncentiv import org.apache.fineract.portfolio.savings.data.DepositAccountInterestRateChartData; import org.apache.fineract.portfolio.savings.data.DepositAccountInterestRateChartSlabData; import org.apache.fineract.portfolio.savings.exception.DepositAccountInterestRateChartNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class DepositAccountInterestRateChartReadPlatformServiceImpl implements DepositAccountInterestRateChartReadPlatformService { private final PlatformSecurityContext context; @@ -64,19 +63,6 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D private final InterestIncentiveDropdownReadPlatformService interestIncentiveDropdownReadPlatformService; private final CodeValueReadPlatformService codeValueReadPlatformService; - @Autowired - public DepositAccountInterestRateChartReadPlatformServiceImpl(PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, - InterestRateChartDropdownReadPlatformService chartDropdownReadPlatformService, - final InterestIncentiveDropdownReadPlatformService interestIncentiveDropdownReadPlatformService, - final CodeValueReadPlatformService codeValueReadPlatformService, DatabaseSpecificSQLGenerator sqlGenerator) { - this.context = context; - this.jdbcTemplate = jdbcTemplate; - this.chartDropdownReadPlatformService = chartDropdownReadPlatformService; - this.interestIncentiveDropdownReadPlatformService = interestIncentiveDropdownReadPlatformService; - this.codeValueReadPlatformService = codeValueReadPlatformService; - chartExtractor = new DepositAccountInterestRateChartExtractor(sqlGenerator); - } - @Override public DepositAccountInterestRateChartData retrieveOne(Long chartId) { try { @@ -182,7 +168,7 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D clientClassificationOptions); } - private static final class DepositAccountInterestRateChartExtractor + public static final class DepositAccountInterestRateChartExtractor implements ResultSetExtractor> { DepositAccountInterestRateChartMapper chartMapper = new DepositAccountInterestRateChartMapper(); @@ -194,7 +180,7 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D return this.schemaSql; } - private DepositAccountInterestRateChartExtractor(DatabaseSpecificSQLGenerator sqlGenerator) { + public DepositAccountInterestRateChartExtractor(DatabaseSpecificSQLGenerator sqlGenerator) { final StringBuilder sqlBuilder = new StringBuilder(400); sqlBuilder.append("irc.id as ircId, irc.name as ircName, irc.description as ircDescription,") diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformServiceImpl.java index 3ab068f2f..77eada460 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformServiceImpl.java @@ -24,6 +24,7 @@ import java.sql.SQLException; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.service.Page; @@ -32,29 +33,17 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters; import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; import org.apache.fineract.infrastructure.security.utils.ColumnValidator; import org.apache.fineract.portfolio.savings.data.DepositAccountOnHoldTransactionData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class DepositAccountOnHoldTransactionReadPlatformServiceImpl implements DepositAccountOnHoldTransactionReadPlatformService { private final JdbcTemplate jdbcTemplate; private final DatabaseSpecificSQLGenerator sqlGenerator; private final ColumnValidator columnValidator; private final PaginationHelper paginationHelper; - private final DepositAccountOnHoldTransactionsMapper mapper; - - @Autowired - public DepositAccountOnHoldTransactionReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, final ColumnValidator columnValidator, - DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper paginationHelper) { - this.jdbcTemplate = jdbcTemplate; - this.sqlGenerator = sqlGenerator; - this.mapper = new DepositAccountOnHoldTransactionsMapper(); - this.columnValidator = columnValidator; - this.paginationHelper = paginationHelper; - } + private final DepositAccountOnHoldTransactionsMapper mapper = new DepositAccountOnHoldTransactionsMapper(); @Override public Page retriveAll(Long savingsId, Long guarantorFundingId, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformServiceImpl.java index 19e0f24da..e915c1b73 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformServiceImpl.java @@ -23,6 +23,7 @@ import static org.apache.fineract.portfolio.savings.DepositsApiConstants.closedO import com.google.gson.JsonElement; import java.time.LocalDate; import java.util.Collection; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.core.api.JsonQuery; import org.apache.fineract.infrastructure.core.data.EnumOptionData; @@ -40,11 +41,9 @@ import org.apache.fineract.portfolio.savings.domain.DepositAccountAssembler; import org.apache.fineract.portfolio.savings.domain.FixedDepositAccount; import org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@RequiredArgsConstructor public class DepositAccountPreMatureCalculationPlatformServiceImpl implements DepositAccountPreMatureCalculationPlatformService { private final FromJsonHelper fromJsonHelper; @@ -54,21 +53,6 @@ public class DepositAccountPreMatureCalculationPlatformServiceImpl implements De private final ConfigurationDomainService configurationDomainService; private final PaymentTypeReadPlatformService paymentTypeReadPlatformService; - @Autowired - public DepositAccountPreMatureCalculationPlatformServiceImpl(final FromJsonHelper fromJsonHelper, - final DepositAccountTransactionDataValidator depositAccountTransactionDataValidator, - final DepositAccountAssembler depositAccountAssembler, - final SavingsAccountReadPlatformService savingsAccountReadPlatformService, - final ConfigurationDomainService configurationDomainService, PaymentTypeReadPlatformService paymentTypeReadPlatformService) { - this.fromJsonHelper = fromJsonHelper; - this.depositAccountTransactionDataValidator = depositAccountTransactionDataValidator; - this.depositAccountAssembler = depositAccountAssembler; - this.savingsAccountReadPlatformService = savingsAccountReadPlatformService; - this.configurationDomainService = configurationDomainService; - this.paymentTypeReadPlatformService = paymentTypeReadPlatformService; - - } - @Transactional @Override public DepositAccountData calculatePreMatureAmount(final Long accountId, final JsonQuery query, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java index 693560685..3389a0153 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.PaginationParameters; import org.apache.fineract.infrastructure.core.data.PaginationParametersDataValidator; @@ -92,14 +93,13 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; import org.apache.fineract.portfolio.savings.exception.DepositAccountNotFoundException; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -@Service +@RequiredArgsConstructor + public class DepositAccountReadPlatformServiceImpl implements DepositAccountReadPlatformService { private static final FixedDepositAccountMapper FIXED_DEPOSIT_ACCOUNT_MAPPER = new FixedDepositAccountMapper(); @@ -116,7 +116,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead private final PaginationParametersDataValidator paginationParametersDataValidator; private final DatabaseSpecificSQLGenerator sqlGenerator; private final PaginationHelper paginationHelper; - private final SavingsAccountTransactionsMapper transactionsMapper; + private final SavingsAccountTransactionsMapper transactionsMapper = new SavingsAccountTransactionsMapper(); private final ClientReadPlatformService clientReadPlatformService; private final GroupReadPlatformService groupReadPlatformService; private final DepositProductReadPlatformService depositProductReadPlatformService; @@ -125,47 +125,11 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead private final StaffReadPlatformService staffReadPlatformService; private final DepositsDropdownReadPlatformService depositsDropdownReadPlatformService; private final SavingsAccountReadPlatformService savingsAccountReadPlatformService; - private final RecurringAccountDepositTransactionTemplateMapper rdTransactionTemplateMapper; + private final RecurringAccountDepositTransactionTemplateMapper rdTransactionTemplateMapper = new RecurringAccountDepositTransactionTemplateMapper(); private final DropdownReadPlatformService dropdownReadPlatformService; private final CalendarReadPlatformService calendarReadPlatformService; private final PaymentTypeReadPlatformService paymentTypeReadPlatformService; - @Autowired - public DepositAccountReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, - final DepositAccountInterestRateChartReadPlatformService chartReadPlatformService, - final PaginationParametersDataValidator paginationParametersDataValidator, - final ClientReadPlatformService clientReadPlatformService, final GroupReadPlatformService groupReadPlatformService, - final DepositProductReadPlatformService depositProductReadPlatformService, - final SavingsDropdownReadPlatformService savingsDropdownReadPlatformService, - final ChargeReadPlatformService chargeReadPlatformService, final StaffReadPlatformService staffReadPlatformService, - final DepositsDropdownReadPlatformService depositsDropdownReadPlatformService, - final InterestRateChartReadPlatformService productChartReadPlatformService, - final SavingsAccountReadPlatformService savingsAccountReadPlatformService, - final DropdownReadPlatformService dropdownReadPlatformService, final CalendarReadPlatformService calendarReadPlatformService, - PaymentTypeReadPlatformService paymentTypeReadPlatformService, DatabaseSpecificSQLGenerator sqlGenerator, - PaginationHelper paginationHelper) { - this.context = context; - this.jdbcTemplate = jdbcTemplate; - this.accountChartReadPlatformService = chartReadPlatformService; - this.paginationParametersDataValidator = paginationParametersDataValidator; - this.sqlGenerator = sqlGenerator; - this.transactionsMapper = new SavingsAccountTransactionsMapper(); - this.clientReadPlatformService = clientReadPlatformService; - this.groupReadPlatformService = groupReadPlatformService; - this.depositProductReadPlatformService = depositProductReadPlatformService; - this.savingsDropdownReadPlatformService = savingsDropdownReadPlatformService; - this.chargeReadPlatformService = chargeReadPlatformService; - this.staffReadPlatformService = staffReadPlatformService; - this.depositsDropdownReadPlatformService = depositsDropdownReadPlatformService; - this.productChartReadPlatformService = productChartReadPlatformService; - this.savingsAccountReadPlatformService = savingsAccountReadPlatformService; - this.rdTransactionTemplateMapper = new RecurringAccountDepositTransactionTemplateMapper(); - this.dropdownReadPlatformService = dropdownReadPlatformService; - this.calendarReadPlatformService = calendarReadPlatformService; - this.paymentTypeReadPlatformService = paymentTypeReadPlatformService; - this.paginationHelper = paginationHelper; - } - @Override public Collection retrieveAll(final DepositAccountType depositAccountType, final PaginationParameters paginationParameters) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java index 0955355d2..aa78496c5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java @@ -109,10 +109,8 @@ import org.apache.fineract.portfolio.savings.exception.DepositAccountTransaction import org.apache.fineract.portfolio.savings.exception.SavingsAccountTransactionNotFoundException; import org.apache.fineract.portfolio.savings.exception.TransactionUpdateNotAllowedException; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service @Slf4j @Transactional @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java index af393f0ac..fd7dc9faf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java @@ -32,6 +32,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormat; @@ -92,18 +94,13 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProduct; import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.useradministration.domain.AppUser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@RequiredArgsConstructor +@Slf4j public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl implements DepositApplicationProcessWritePlatformService { - private static final Logger LOG = LoggerFactory.getLogger(DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.class); - private final PlatformSecurityContext context; private final SavingsAccountRepositoryWrapper savingAccountRepository; private final FixedDepositAccountRepository fixedDepositAccountRepository; @@ -125,43 +122,6 @@ public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl impl private final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository; private final BusinessEventNotifierService businessEventNotifierService; - @Autowired - public DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final SavingsAccountRepositoryWrapper savingAccountRepository, final DepositAccountAssembler depositAccountAssembler, - final DepositAccountDataValidator depositAccountDataValidator, final AccountNumberGenerator accountNumberGenerator, - final ClientRepositoryWrapper clientRepository, final GroupRepository groupRepository, - final SavingsProductRepository savingsProductRepository, final NoteRepository noteRepository, - final StaffRepositoryWrapper staffRepository, - final SavingsAccountApplicationTransitionApiJsonValidator savingsAccountApplicationTransitionApiJsonValidator, - final SavingsAccountChargeAssembler savingsAccountChargeAssembler, - final FixedDepositAccountRepository fixedDepositAccountRepository, - final RecurringDepositAccountRepository recurringDepositAccountRepository, - final AccountAssociationsRepository accountAssociationsRepository, final FromJsonHelper fromJsonHelper, - final CalendarInstanceRepository calendarInstanceRepository, final ConfigurationDomainService configurationDomainService, - final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, - final BusinessEventNotifierService businessEventNotifierService) { - this.context = context; - this.savingAccountRepository = savingAccountRepository; - this.depositAccountAssembler = depositAccountAssembler; - this.accountNumberGenerator = accountNumberGenerator; - this.depositAccountDataValidator = depositAccountDataValidator; - this.clientRepository = clientRepository; - this.groupRepository = groupRepository; - this.savingsProductRepository = savingsProductRepository; - this.noteRepository = noteRepository; - this.staffRepository = staffRepository; - this.savingsAccountApplicationTransitionApiJsonValidator = savingsAccountApplicationTransitionApiJsonValidator; - this.savingsAccountChargeAssembler = savingsAccountChargeAssembler; - this.fixedDepositAccountRepository = fixedDepositAccountRepository; - this.recurringDepositAccountRepository = recurringDepositAccountRepository; - this.accountAssociationsRepository = accountAssociationsRepository; - this.fromJsonHelper = fromJsonHelper; - this.calendarInstanceRepository = calendarInstanceRepository; - this.configurationDomainService = configurationDomainService; - this.accountNumberFormatRepository = accountNumberFormatRepository; - this.businessEventNotifierService = businessEventNotifierService; - } - /* * Guaranteed to throw an exception no matter what the data integrity issue is. */ @@ -184,7 +144,7 @@ public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl impl } errorCodeBuilder.append(".unknown.data.integrity.issue"); - LOG.error("Error occured.", dve); + log.error("Error occured.", dve); throw new PlatformDataIntegrityException(errorCodeBuilder.toString(), "Unknown data integrity issue with savings account."); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java index efb75399f..e51c5fdd9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java @@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; +import lombok.RequiredArgsConstructor; import org.apache.fineract.accounting.common.AccountingEnumerations; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; @@ -35,13 +36,11 @@ import org.apache.fineract.portfolio.savings.data.FixedDepositProductData; import org.apache.fineract.portfolio.savings.data.RecurringDepositProductData; import org.apache.fineract.portfolio.savings.exception.FixedDepositProductNotFoundException; import org.apache.fineract.portfolio.tax.data.TaxGroupData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class DepositProductReadPlatformServiceImpl implements DepositProductReadPlatformService { private static final FixedDepositProductMapper FIXED_DEPOSIT_PRODUCT_MAPPER = new FixedDepositProductMapper(); @@ -51,14 +50,6 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead private final JdbcTemplate jdbcTemplate; private final InterestRateChartReadPlatformService chartReadPlatformService; - @Autowired - public DepositProductReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, - final InterestRateChartReadPlatformService chartReadPlatformService) { - this.context = context; - this.jdbcTemplate = jdbcTemplate; - this.chartReadPlatformService = chartReadPlatformService; - } - @Override public Collection retrieveAll(final DepositAccountType depositAccountType) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java index c14f05d98..1e0211b2d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java @@ -20,12 +20,12 @@ package org.apache.fineract.portfolio.savings.service; import java.util.Arrays; import java.util.Collection; +import lombok.NoArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.savings.DepositAccountOnClosureType; import org.apache.fineract.portfolio.savings.PreClosurePenalInterestOnType; -import org.springframework.stereotype.Service; -@Service +@NoArgsConstructor public class DepositsDropdownReadPlatformServiceImpl implements DepositsDropdownReadPlatformService { @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java index bc7fd7e97..c7bbd1307 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -28,6 +28,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -47,17 +49,13 @@ import org.apache.fineract.portfolio.savings.domain.FixedDepositProduct; import org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; import org.apache.fineract.portfolio.savings.exception.FixedDepositProductNotFoundException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@Slf4j +@RequiredArgsConstructor public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements FixedDepositProductWritePlatformService { - private static final Logger LOG = LoggerFactory.getLogger(FixedDepositProductWritePlatformServiceJpaRepositoryImpl.class); private final PlatformSecurityContext context; private final FixedDepositProductRepository fixedDepositProductRepository; private final DepositProductDataValidator fromApiJsonDataValidator; @@ -65,21 +63,6 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; - @Autowired - public FixedDepositProductWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final FixedDepositProductRepository fixedDepositProductRepository, final DepositProductDataValidator fromApiJsonDataValidator, - final DepositProductAssembler depositProductAssembler, - final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, - final InterestRateChartAssembler chartAssembler) { - this.context = context; - this.fixedDepositProductRepository = fixedDepositProductRepository; - this.fromApiJsonDataValidator = fromApiJsonDataValidator; - this.depositProductAssembler = depositProductAssembler; - - this.accountMappingWritePlatformService = accountMappingWritePlatformService; - this.chartAssembler = chartAssembler; - } - @Transactional @Override public CommandProcessingResult create(final JsonCommand command) { @@ -206,6 +189,6 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements } private void logAsErrorUnexpectedDataIntegrityException(final Exception dae) { - LOG.error("Error occured.", dae); + log.error("Error occured.", dae); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java index 25a04341a..dbb113815 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java @@ -27,6 +27,7 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; @@ -41,27 +42,16 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountApplicationTimel import org.apache.fineract.portfolio.savings.data.SavingsAccountStatusEnumData; import org.apache.fineract.portfolio.savings.data.SavingsAccountSubStatusEnumData; import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class GSIMReadPlatformServiceImpl implements GSIMReadPlatformService { private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; private final ColumnValidator columnValidator; - @Autowired - public GSIMReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, - final ColumnValidator columnValidator) { - this.context = context; - this.jdbcTemplate = jdbcTemplate; - this.columnValidator = columnValidator; - - } - private static final class GSIMFieldsMapper implements RowMapper { public String schema() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformServiceImpl.java index a3bfd19c9..5be559bc4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformServiceImpl.java @@ -19,16 +19,15 @@ package org.apache.fineract.portfolio.savings.service; import java.math.BigDecimal; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.group.domain.Group; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; import org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@RequiredArgsConstructor @Transactional public class GroupSavingsIndividualMonitoringWritePlatformServiceImpl implements GroupSavingsIndividualMonitoringWritePlatformService { @@ -38,14 +37,6 @@ public class GroupSavingsIndividualMonitoringWritePlatformServiceImpl implements private final LoanRepository loanRepository; - @Autowired - public GroupSavingsIndividualMonitoringWritePlatformServiceImpl(final PlatformSecurityContext context, - final GSIMRepositoy gsimAccountRepository, final LoanRepository loanRepository) { - this.context = context; - this.gsimAccountRepository = gsimAccountRepository; - this.loanRepository = loanRepository; - } - @Override public GroupSavingsIndividualMonitoring addGSIMAccountInfo(String accountNumber, Group group, BigDecimal parentDeposit, Long childAccountsCount, Boolean isAcceptingChild, Integer loanStatus, BigDecimal applicationId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java index 798b20263..17474c0cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -28,6 +28,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -47,17 +49,13 @@ import org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct; import org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; import org.apache.fineract.portfolio.savings.exception.RecurringDepositProductNotFoundException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@Slf4j +@RequiredArgsConstructor public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implements RecurringDepositProductWritePlatformService { - private static final Logger LOG = LoggerFactory.getLogger(RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.class); private final PlatformSecurityContext context; private final RecurringDepositProductRepository recurringDepositProductRepository; private final DepositProductDataValidator fromApiJsonDataValidator; @@ -65,21 +63,6 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; - @Autowired - public RecurringDepositProductWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final RecurringDepositProductRepository recurringDepositProductRepository, - final DepositProductDataValidator fromApiJsonDataValidator, final DepositProductAssembler depositProductAssembler, - final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, - final InterestRateChartAssembler chartAssembler) { - this.context = context; - this.recurringDepositProductRepository = recurringDepositProductRepository; - this.fromApiJsonDataValidator = fromApiJsonDataValidator; - this.depositProductAssembler = depositProductAssembler; - - this.accountMappingWritePlatformService = accountMappingWritePlatformService; - this.chartAssembler = chartAssembler; - } - @Transactional @Override public CommandProcessingResult create(final JsonCommand command) { @@ -206,6 +189,6 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem } private void logAsErrorUnexpectedDataIntegrityException(final Exception dae) { - LOG.error("Error occured.", dae); + log.error("Error occured.", dae); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountApplicationTransitionApiJsonValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountApplicationTransitionApiJsonValidator.java index a474de636..daa0b2fd1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountApplicationTransitionApiJsonValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountApplicationTransitionApiJsonValidator.java @@ -28,25 +28,19 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.data.ApiParameterError; import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -@Component +@RequiredArgsConstructor public final class SavingsAccountApplicationTransitionApiJsonValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired - public SavingsAccountApplicationTransitionApiJsonValidator(final FromJsonHelper fromApiJsonHelper) { - this.fromApiJsonHelper = fromApiJsonHelper; - } - private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) { if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java index 7bb15e9ec..cae4b15d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java @@ -43,13 +43,10 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountAnnualFeeData; import org.apache.fineract.portfolio.savings.data.SavingsAccountChargeData; import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType; import org.apache.fineract.portfolio.tax.data.TaxGroupData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service public class SavingsAccountChargeReadPlatformServiceImpl implements SavingsAccountChargeReadPlatformService { private final JdbcTemplate jdbcTemplate; @@ -61,7 +58,6 @@ public class SavingsAccountChargeReadPlatformServiceImpl implements SavingsAccou // mappers private final SavingsAccountChargeDueMapper chargeDueMapper; - @Autowired public SavingsAccountChargeReadPlatformServiceImpl(final PlatformSecurityContext context, final ChargeDropdownReadPlatformService chargeDropdownReadPlatformService, final JdbcTemplate jdbcTemplate, final DropdownReadPlatformService dropdownReadPlatformService, DatabaseSpecificSQLGenerator sqlGenerator) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java index a4c2a939e..59d7e04da 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.domain.LocalDateInterval; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; @@ -47,19 +48,12 @@ import org.apache.fineract.portfolio.savings.domain.SavingsHelper; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; import org.apache.fineract.portfolio.tax.data.TaxComponentData; import org.apache.fineract.portfolio.tax.service.TaxUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountInterestPostingService { private final SavingsHelper savingsHelper; - @Autowired - public SavingsAccountInterestPostingServiceImpl(final SavingsHelper savingsHelper) { - this.savingsHelper = savingsHelper; - } - @Override public SavingsAccountData postInterest(final MathContext mc, final LocalDate interestPostingUpToDate, final boolean isInterestTransfer, final boolean isSavingsInterestPostingAtCurrentPeriodEnd, final Integer financialYearBeginningMonth, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index a512ad8c5..e9c270b46 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -87,16 +87,13 @@ import org.apache.fineract.portfolio.tax.data.TaxComponentData; import org.apache.fineract.portfolio.tax.data.TaxDetailsData; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -@Service public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountReadPlatformService { private final PlatformSecurityContext context; @@ -126,7 +123,6 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead private final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper; - @Autowired public SavingsAccountReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, final ClientReadPlatformService clientReadPlatformService, final GroupReadPlatformService groupReadPlatformService, final SavingsProductReadPlatformService savingProductReadPlatformService, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index f0bf3b186..2563c7547 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -131,13 +131,11 @@ import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @Slf4j @RequiredArgsConstructor -@Service public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements SavingsAccountWritePlatformService { private final PlatformSecurityContext context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java index 89d4d07e8..7e215f0f9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java @@ -87,10 +87,8 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service @Slf4j @RequiredArgsConstructor public class SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl implements SavingsApplicationProcessWritePlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformServiceImpl.java index ef141961c..aa201de80 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformServiceImpl.java @@ -21,6 +21,7 @@ package org.apache.fineract.portfolio.savings.service; import java.util.Arrays; import java.util.Collection; import java.util.List; +import lombok.NoArgsConstructor; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType; import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType; @@ -28,9 +29,8 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.SavingsWithdrawalFeesType; -import org.springframework.stereotype.Service; -@Service +@NoArgsConstructor public class SavingsDropdownReadPlatformServiceImpl implements SavingsDropdownReadPlatformService { @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java index cb96f69de..9c3e18d78 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java @@ -37,9 +37,7 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service @RequiredArgsConstructor public class SavingsProductReadPlatformServiceImpl implements SavingsProductReadPlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java index 56b429e40..ad4e27156 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java @@ -28,6 +28,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -48,17 +50,13 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductAssembler; import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service +@Slf4j +@RequiredArgsConstructor public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements SavingsProductWritePlatformService { - private static final Logger LOG = LoggerFactory.getLogger(SavingsProductWritePlatformServiceJpaRepositoryImpl.class); private final PlatformSecurityContext context; private final SavingsProductRepository savingProductRepository; private final SavingsProductDataValidator fromApiJsonDataValidator; @@ -66,20 +64,6 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final FineractEntityAccessUtil fineractEntityAccessUtil; - @Autowired - public SavingsProductWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, - final SavingsProductRepository savingProductRepository, final SavingsProductDataValidator fromApiJsonDataValidator, - final SavingsProductAssembler savingsProductAssembler, - final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, - final FineractEntityAccessUtil fineractEntityAccessUtil) { - this.context = context; - this.savingProductRepository = savingProductRepository; - this.fromApiJsonDataValidator = fromApiJsonDataValidator; - this.savingsProductAssembler = savingsProductAssembler; - this.accountMappingWritePlatformService = accountMappingWritePlatformService; - this.fineractEntityAccessUtil = fineractEntityAccessUtil; - } - /* * Guaranteed to throw an exception no matter what the data integrity issue is. */ @@ -103,7 +87,7 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi } private void logAsErrorUnexpectedDataIntegrityException(final Exception dae) { - LOG.error("Error occured.", dae); + log.error("Error occured.", dae); } @Transactional diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java index a3eda8f47..3a24de735 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java @@ -41,18 +41,14 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityConte import org.apache.fineract.portfolio.savings.data.SavingsAccountData; import org.apache.fineract.portfolio.savings.data.SavingsAccountSummaryData; import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData; -import org.springframework.context.annotation.Scope; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; @Slf4j @RequiredArgsConstructor @Setter -@Component -@Scope("prototype") public class SavingsSchedularInterestPoster { private static final String SAVINGS_TRANSACTION_IDENTIFIER = "S"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java index bf5f2c899..3ebda9bed 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java @@ -26,8 +26,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.domain.FineractContext; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.portfolio.savings.data.SavingsAccountData; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; /** * @author manoj @@ -35,8 +33,6 @@ import org.springframework.stereotype.Component; @Slf4j @RequiredArgsConstructor -@Component -@Scope("prototype") public class SavingsSchedularInterestPosterTask implements Callable { private final SavingsSchedularInterestPoster interestPoster; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java index b307fd2fd..8b17c9605 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java @@ -57,10 +57,8 @@ import org.springframework.data.domain.Sort; import org.springframework.data.support.PageableExecutionUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service @Transactional(readOnly = true) @RequiredArgsConstructor public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccountTransactionSearchService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java new file mode 100644 index 000000000..9e7b57570 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java @@ -0,0 +1,440 @@ +/** + * 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.savings.starter; + +import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService; +import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.batch.exception.ErrorHandler; +import org.apache.fineract.commands.service.CommandProcessingService; +import org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepositoryWrapper; +import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.core.data.PaginationParametersDataValidator; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.PaginationHelper; +import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; +import org.apache.fineract.infrastructure.dataqueries.data.DataTableValidator; +import org.apache.fineract.infrastructure.dataqueries.service.EntityDatatableChecksReadService; +import org.apache.fineract.infrastructure.dataqueries.service.EntityDatatableChecksWritePlatformService; +import org.apache.fineract.infrastructure.dataqueries.service.GenericDataService; +import org.apache.fineract.infrastructure.dataqueries.service.ReadWriteNonCoreDataServiceImpl; +import org.apache.fineract.infrastructure.entityaccess.service.FineractEntityAccessUtil; +import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.infrastructure.security.utils.ColumnValidator; +import org.apache.fineract.organisation.holiday.domain.HolidayRepositoryWrapper; +import org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepositoryWrapper; +import org.apache.fineract.organisation.staff.domain.StaffRepositoryWrapper; +import org.apache.fineract.organisation.staff.service.StaffReadPlatformService; +import org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepositoryWrapper; +import org.apache.fineract.portfolio.account.domain.AccountAssociationsRepository; +import org.apache.fineract.portfolio.account.domain.StandingInstructionRepository; +import org.apache.fineract.portfolio.account.service.AccountAssociationsReadPlatformService; +import org.apache.fineract.portfolio.account.service.AccountTransfersReadPlatformService; +import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; +import org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; +import org.apache.fineract.portfolio.calendar.service.CalendarReadPlatformService; +import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper; +import org.apache.fineract.portfolio.charge.service.ChargeDropdownReadPlatformService; +import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; +import org.apache.fineract.portfolio.client.domain.AccountNumberGenerator; +import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; +import org.apache.fineract.portfolio.client.service.ClientReadPlatformService; +import org.apache.fineract.portfolio.common.service.DropdownReadPlatformService; +import org.apache.fineract.portfolio.group.domain.GroupRepository; +import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; +import org.apache.fineract.portfolio.group.service.GroupReadPlatformService; +import org.apache.fineract.portfolio.interestratechart.service.InterestIncentiveDropdownReadPlatformService; +import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartAssembler; +import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartDropdownReadPlatformService; +import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartReadPlatformService; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; +import org.apache.fineract.portfolio.note.domain.NoteRepository; +import org.apache.fineract.portfolio.paymentdetail.service.PaymentDetailWritePlatformService; +import org.apache.fineract.portfolio.paymenttype.service.PaymentTypeReadPlatformService; +import org.apache.fineract.portfolio.savings.data.DepositAccountDataValidator; +import org.apache.fineract.portfolio.savings.data.DepositAccountTransactionDataValidator; +import org.apache.fineract.portfolio.savings.data.DepositProductDataValidator; +import org.apache.fineract.portfolio.savings.data.SavingsAccountChargeDataValidator; +import org.apache.fineract.portfolio.savings.data.SavingsAccountDataValidator; +import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionDataValidator; +import org.apache.fineract.portfolio.savings.data.SavingsProductDataValidator; +import org.apache.fineract.portfolio.savings.domain.DepositAccountAssembler; +import org.apache.fineract.portfolio.savings.domain.DepositAccountDomainService; +import org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransactionRepository; +import org.apache.fineract.portfolio.savings.domain.DepositProductAssembler; +import org.apache.fineract.portfolio.savings.domain.FixedDepositAccountRepository; +import org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; +import org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; +import org.apache.fineract.portfolio.savings.domain.RecurringDepositAccountRepository; +import org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeAssembler; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepositoryWrapper; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountDomainService; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; +import org.apache.fineract.portfolio.savings.domain.SavingsHelper; +import org.apache.fineract.portfolio.savings.domain.SavingsProductAssembler; +import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; +import org.apache.fineract.portfolio.savings.service.DepositAccountInterestRateChartReadPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositAccountInterestRateChartReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.DepositAccountOnHoldTransactionReadPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositAccountOnHoldTransactionReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.DepositAccountPreMatureCalculationPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositAccountPreMatureCalculationPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.DepositAccountWritePlatformService; +import org.apache.fineract.portfolio.savings.service.DepositAccountWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.DepositApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.savings.service.DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.DepositProductReadPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositProductReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.DepositsDropdownReadPlatformService; +import org.apache.fineract.portfolio.savings.service.DepositsDropdownReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.FixedDepositProductWritePlatformService; +import org.apache.fineract.portfolio.savings.service.FixedDepositProductWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.GSIMReadPlatformService; +import org.apache.fineract.portfolio.savings.service.GSIMReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.GroupSavingsIndividualMonitoringWritePlatformService; +import org.apache.fineract.portfolio.savings.service.GroupSavingsIndividualMonitoringWritePlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.RecurringDepositProductWritePlatformService; +import org.apache.fineract.portfolio.savings.service.RecurringDepositProductWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.SavingsAccountApplicationTransitionApiJsonValidator; +import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.SavingsAccountInterestPostingService; +import org.apache.fineract.portfolio.savings.service.SavingsAccountInterestPostingServiceImpl; +import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformServiceImpl; +import org.apache.fineract.portfolio.savings.service.SavingsProductWritePlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsProductWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.portfolio.savings.service.SavingsSchedularInterestPoster; +import org.apache.fineract.portfolio.savings.service.SavingsSchedularInterestPosterTask; +import org.apache.fineract.portfolio.savings.service.search.SavingsAccountTransactionSearchService; +import org.apache.fineract.portfolio.savings.service.search.SavingsAccountTransactionsSearchServiceImpl; +import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +public class SavingsConfiguration { + + @Bean + @ConditionalOnMissingBean(SavingsAccountTransactionSearchService.class) + public SavingsAccountTransactionSearchService savingsAccountTransactionSearchService(PlatformSecurityContext context, + GenericDataService genericDataService, DatabaseSpecificSQLGenerator sqlGenerator, + ReadWriteNonCoreDataServiceImpl datatableService, DataTableValidator dataTableValidator, JdbcTemplate jdbcTemplate) { + return new SavingsAccountTransactionsSearchServiceImpl(context, genericDataService, sqlGenerator, datatableService, + dataTableValidator, jdbcTemplate); + } + + @Bean + public DepositAccountInterestRateChartReadPlatformServiceImpl.DepositAccountInterestRateChartExtractor depositAccountInterestRateChartExtractor( + DatabaseSpecificSQLGenerator sqlGenerator) { + return new DepositAccountInterestRateChartReadPlatformServiceImpl.DepositAccountInterestRateChartExtractor(sqlGenerator); + } + + @Bean + @ConditionalOnMissingBean(DepositAccountInterestRateChartReadPlatformService.class) + public DepositAccountInterestRateChartReadPlatformService depositAccountInterestRateChartReadPlatformService( + PlatformSecurityContext context, JdbcTemplate jdbcTemplate, + DepositAccountInterestRateChartReadPlatformServiceImpl.DepositAccountInterestRateChartExtractor chartExtractor, + InterestRateChartDropdownReadPlatformService chartDropdownReadPlatformService, + InterestIncentiveDropdownReadPlatformService interestIncentiveDropdownReadPlatformService, + CodeValueReadPlatformService codeValueReadPlatformService) { + return new DepositAccountInterestRateChartReadPlatformServiceImpl(context, jdbcTemplate, chartExtractor, + chartDropdownReadPlatformService, interestIncentiveDropdownReadPlatformService, codeValueReadPlatformService); + } + + @Bean + @ConditionalOnMissingBean(DepositAccountOnHoldTransactionReadPlatformService.class) + public DepositAccountOnHoldTransactionReadPlatformService depositAccountOnHoldTransactionReadPlatformService(JdbcTemplate jdbcTemplate, + ColumnValidator columnValidator, DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper paginationHelper) { + return new DepositAccountOnHoldTransactionReadPlatformServiceImpl(jdbcTemplate, sqlGenerator, columnValidator, paginationHelper); + } + + @Bean + @ConditionalOnMissingBean(DepositAccountPreMatureCalculationPlatformService.class) + public DepositAccountPreMatureCalculationPlatformService depositAccountPreMatureCalculationPlatformService( + FromJsonHelper fromJsonHelper, DepositAccountTransactionDataValidator depositAccountTransactionDataValidator, + DepositAccountAssembler depositAccountAssembler, SavingsAccountReadPlatformService savingsAccountReadPlatformService, + ConfigurationDomainService configurationDomainService, PaymentTypeReadPlatformService paymentTypeReadPlatformService) { + return new DepositAccountPreMatureCalculationPlatformServiceImpl(fromJsonHelper, depositAccountTransactionDataValidator, + depositAccountAssembler, savingsAccountReadPlatformService, configurationDomainService, paymentTypeReadPlatformService); + + } + + @Bean + @ConditionalOnMissingBean(DepositAccountReadPlatformService.class) + public DepositAccountReadPlatformService depositAccountReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, + DepositAccountInterestRateChartReadPlatformService chartReadPlatformService, + InterestRateChartReadPlatformService productChartReadPlatformService, + PaginationParametersDataValidator paginationParametersDataValidator, DatabaseSpecificSQLGenerator sqlGenerator, + PaginationHelper paginationHelper, ClientReadPlatformService clientReadPlatformService, + GroupReadPlatformService groupReadPlatformService, DepositProductReadPlatformService depositProductReadPlatformService, + SavingsDropdownReadPlatformService savingsDropdownReadPlatformService, ChargeReadPlatformService chargeReadPlatformService, + StaffReadPlatformService staffReadPlatformService, DepositsDropdownReadPlatformService depositsDropdownReadPlatformService, + SavingsAccountReadPlatformService savingsAccountReadPlatformService, DropdownReadPlatformService dropdownReadPlatformService, + CalendarReadPlatformService calendarReadPlatformService, PaymentTypeReadPlatformService paymentTypeReadPlatformService) { + return new DepositAccountReadPlatformServiceImpl(context, jdbcTemplate, chartReadPlatformService, productChartReadPlatformService, + paginationParametersDataValidator, sqlGenerator, paginationHelper, clientReadPlatformService, groupReadPlatformService, + depositProductReadPlatformService, savingsDropdownReadPlatformService, chargeReadPlatformService, staffReadPlatformService, + depositsDropdownReadPlatformService, savingsAccountReadPlatformService, dropdownReadPlatformService, + calendarReadPlatformService, paymentTypeReadPlatformService); + } + + @Bean + @ConditionalOnMissingBean(DepositAccountWritePlatformService.class) + public DepositAccountWritePlatformService depositAccountWritePlatformService(PlatformSecurityContext context, + SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper, + SavingsAccountTransactionRepository savingsAccountTransactionRepository, DepositAccountAssembler depositAccountAssembler, + DepositAccountTransactionDataValidator depositAccountTransactionDataValidator, + SavingsAccountChargeDataValidator savingsAccountChargeDataValidator, + PaymentDetailWritePlatformService paymentDetailWritePlatformService, + ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper, + JournalEntryWritePlatformService journalEntryWritePlatformService, DepositAccountDomainService depositAccountDomainService, + NoteRepository noteRepository, AccountTransfersReadPlatformService accountTransfersReadPlatformService, + ChargeRepositoryWrapper chargeRepository, SavingsAccountChargeRepositoryWrapper savingsAccountChargeRepository, + AccountAssociationsReadPlatformService accountAssociationsReadPlatformService, + AccountTransfersWritePlatformService accountTransfersWritePlatformService, + DepositAccountReadPlatformService depositAccountReadPlatformService, CalendarInstanceRepository calendarInstanceRepository, + ConfigurationDomainService configurationDomainService, HolidayRepositoryWrapper holidayRepository, + WorkingDaysRepositoryWrapper workingDaysRepository, + DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository + + ) { + return new DepositAccountWritePlatformServiceJpaRepositoryImpl(context, savingAccountRepositoryWrapper, + savingsAccountTransactionRepository, depositAccountAssembler, depositAccountTransactionDataValidator, + savingsAccountChargeDataValidator, paymentDetailWritePlatformService, applicationCurrencyRepositoryWrapper, + journalEntryWritePlatformService, depositAccountDomainService, noteRepository, accountTransfersReadPlatformService, + chargeRepository, savingsAccountChargeRepository, accountAssociationsReadPlatformService, + accountTransfersWritePlatformService, depositAccountReadPlatformService, calendarInstanceRepository, + configurationDomainService, holidayRepository, workingDaysRepository, depositAccountOnHoldTransactionRepository); + } + + @Bean + @ConditionalOnMissingBean(DepositApplicationProcessWritePlatformService.class) + public DepositApplicationProcessWritePlatformService depositApplicationProcessWritePlatformService(PlatformSecurityContext context, + SavingsAccountRepositoryWrapper savingAccountRepository, FixedDepositAccountRepository fixedDepositAccountRepository, + RecurringDepositAccountRepository recurringDepositAccountRepository, DepositAccountAssembler depositAccountAssembler, + DepositAccountDataValidator depositAccountDataValidator, AccountNumberGenerator accountNumberGenerator, + ClientRepositoryWrapper clientRepository, GroupRepository groupRepository, SavingsProductRepository savingsProductRepository, + NoteRepository noteRepository, StaffRepositoryWrapper staffRepository, + SavingsAccountApplicationTransitionApiJsonValidator savingsAccountApplicationTransitionApiJsonValidator, + SavingsAccountChargeAssembler savingsAccountChargeAssembler, AccountAssociationsRepository accountAssociationsRepository, + FromJsonHelper fromJsonHelper, CalendarInstanceRepository calendarInstanceRepository, + ConfigurationDomainService configurationDomainService, AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, + BusinessEventNotifierService businessEventNotifierService) { + return new DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl(context, savingAccountRepository, + fixedDepositAccountRepository, recurringDepositAccountRepository, depositAccountAssembler, depositAccountDataValidator, + accountNumberGenerator, clientRepository, groupRepository, savingsProductRepository, noteRepository, staffRepository, + savingsAccountApplicationTransitionApiJsonValidator, savingsAccountChargeAssembler, accountAssociationsRepository, + fromJsonHelper, calendarInstanceRepository, configurationDomainService, accountNumberFormatRepository, + businessEventNotifierService); + } + + @Bean + @ConditionalOnMissingBean(DepositProductReadPlatformService.class) + public DepositProductReadPlatformService depositProductReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, + InterestRateChartReadPlatformService interestRateChartReadPlatformService) { + return new DepositProductReadPlatformServiceImpl(context, jdbcTemplate, interestRateChartReadPlatformService); + } + + @Bean + @ConditionalOnMissingBean(DepositsDropdownReadPlatformService.class) + public DepositsDropdownReadPlatformService depositsDropdownReadPlatformService() { + return new DepositsDropdownReadPlatformServiceImpl(); + } + + @Bean + @ConditionalOnMissingBean(FixedDepositProductWritePlatformService.class) + public FixedDepositProductWritePlatformService fixedDepositProductWritePlatformService(PlatformSecurityContext context, + FixedDepositProductRepository fixedDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, + DepositProductAssembler depositProductAssembler, + ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler) { + return new FixedDepositProductWritePlatformServiceJpaRepositoryImpl(context, fixedDepositProductRepository, + fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler); + } + + @Bean + @ConditionalOnMissingBean(GroupSavingsIndividualMonitoringWritePlatformService.class) + public GroupSavingsIndividualMonitoringWritePlatformService groupSavingsIndividualMonitoringWritePlatformService( + PlatformSecurityContext context, GSIMRepositoy gsimAccountRepository, LoanRepository loanRepository) { + return new GroupSavingsIndividualMonitoringWritePlatformServiceImpl(context, gsimAccountRepository, loanRepository); + } + + @Bean + @ConditionalOnMissingBean(GSIMReadPlatformService.class) + public GSIMReadPlatformService gsimReadPlatformService(JdbcTemplate jdbcTemplate, PlatformSecurityContext context, + ColumnValidator columnValidator) { + return new GSIMReadPlatformServiceImpl(jdbcTemplate, context, columnValidator); + } + + @Bean + @ConditionalOnMissingBean(RecurringDepositProductWritePlatformService.class) + public RecurringDepositProductWritePlatformService recurringDepositProductWritePlatformService(PlatformSecurityContext context, + RecurringDepositProductRepository recurringDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, + DepositProductAssembler depositProductAssembler, + ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler) { + return new RecurringDepositProductWritePlatformServiceJpaRepositoryImpl(context, recurringDepositProductRepository, + fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler); + } + + @Bean + @ConditionalOnMissingBean(SavingsAccountApplicationTransitionApiJsonValidator.class) + public SavingsAccountApplicationTransitionApiJsonValidator savingsAccountApplicationTransitionApiJsonValidator( + FromJsonHelper fromApiJsonHelper) { + return new SavingsAccountApplicationTransitionApiJsonValidator(fromApiJsonHelper); + } + + @Bean + @ConditionalOnMissingBean(SavingsAccountChargeReadPlatformService.class) + public SavingsAccountChargeReadPlatformService savingsAccountChargeReadPlatformService(PlatformSecurityContext context, + ChargeDropdownReadPlatformService chargeDropdownReadPlatformService, JdbcTemplate jdbcTemplate, + DropdownReadPlatformService dropdownReadPlatformService, DatabaseSpecificSQLGenerator sqlGenerator) { + return new SavingsAccountChargeReadPlatformServiceImpl(context, chargeDropdownReadPlatformService, jdbcTemplate, + dropdownReadPlatformService, sqlGenerator); + } + + @Bean + @ConditionalOnMissingBean(SavingsAccountInterestPostingService.class) + public SavingsAccountInterestPostingService savingsAccountInterestPostingService(SavingsHelper savingsHelper) { + return new SavingsAccountInterestPostingServiceImpl(savingsHelper); + } + + @Bean + @ConditionalOnMissingBean(SavingsAccountReadPlatformService.class) + public SavingsAccountReadPlatformService savingsAccountReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, + ClientReadPlatformService clientReadPlatformService, GroupReadPlatformService groupReadPlatformService, + SavingsProductReadPlatformService savingProductReadPlatformService, StaffReadPlatformService staffReadPlatformService, + SavingsDropdownReadPlatformService dropdownReadPlatformService, ChargeReadPlatformService chargeReadPlatformService, + EntityDatatableChecksReadService entityDatatableChecksReadService, ColumnValidator columnValidator, + SavingsAccountAssembler savingAccountAssembler, PaginationHelper paginationHelper, DatabaseSpecificSQLGenerator sqlGenerator, + SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper) { + return new SavingsAccountReadPlatformServiceImpl(context, jdbcTemplate, clientReadPlatformService, groupReadPlatformService, + savingProductReadPlatformService, staffReadPlatformService, dropdownReadPlatformService, chargeReadPlatformService, + entityDatatableChecksReadService, columnValidator, savingAccountAssembler, paginationHelper, sqlGenerator, + savingsAccountRepositoryWrapper); + } + + @Bean + @ConditionalOnMissingBean(SavingsAccountWritePlatformService.class) + public SavingsAccountWritePlatformService savingsAccountWritePlatformService(PlatformSecurityContext context, + SavingsAccountDataValidator fromApiJsonDeserializer, SavingsAccountRepositoryWrapper savingAccountRepositoryWrapper, + StaffRepositoryWrapper staffRepository, SavingsAccountTransactionRepository savingsAccountTransactionRepository, + SavingsAccountAssembler savingAccountAssembler, SavingsAccountTransactionDataValidator savingsAccountTransactionDataValidator, + SavingsAccountChargeDataValidator savingsAccountChargeDataValidator, + PaymentDetailWritePlatformService paymentDetailWritePlatformService, + JournalEntryWritePlatformService journalEntryWritePlatformService, SavingsAccountDomainService savingsAccountDomainService, + NoteRepository noteRepository, AccountTransfersReadPlatformService accountTransfersReadPlatformService, + AccountAssociationsReadPlatformService accountAssociationsReadPlatformService, ChargeRepositoryWrapper chargeRepository, + SavingsAccountChargeRepositoryWrapper savingsAccountChargeRepository, HolidayRepositoryWrapper holidayRepository, + WorkingDaysRepositoryWrapper workingDaysRepository, ConfigurationDomainService configurationDomainService, + DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository, + EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService, AppUserRepositoryWrapper appuserRepository, + StandingInstructionRepository standingInstructionRepository, BusinessEventNotifierService businessEventNotifierService, + GSIMRepositoy gsimRepository, SavingsAccountInterestPostingService savingsAccountInterestPostingService, + ErrorHandler errorHandler) { + return new SavingsAccountWritePlatformServiceJpaRepositoryImpl(context, fromApiJsonDeserializer, savingAccountRepositoryWrapper, + staffRepository, savingsAccountTransactionRepository, savingAccountAssembler, savingsAccountTransactionDataValidator, + savingsAccountChargeDataValidator, paymentDetailWritePlatformService, journalEntryWritePlatformService, + savingsAccountDomainService, noteRepository, accountTransfersReadPlatformService, accountAssociationsReadPlatformService, + chargeRepository, savingsAccountChargeRepository, holidayRepository, workingDaysRepository, configurationDomainService, + depositAccountOnHoldTransactionRepository, entityDatatableChecksWritePlatformService, appuserRepository, + standingInstructionRepository, businessEventNotifierService, gsimRepository, savingsAccountInterestPostingService, + errorHandler); + } + + @Bean + @ConditionalOnMissingBean(SavingsApplicationProcessWritePlatformService.class) + public SavingsApplicationProcessWritePlatformService savingsApplicationProcessWritePlatformService(PlatformSecurityContext context, + SavingsAccountRepositoryWrapper savingAccountRepository, SavingsAccountAssembler savingAccountAssembler, + SavingsAccountDataValidator savingsAccountDataValidator, AccountNumberGenerator accountNumberGenerator, + ClientRepositoryWrapper clientRepository, GroupRepository groupRepository, SavingsProductRepository savingsProductRepository, + NoteRepository noteRepository, StaffRepositoryWrapper staffRepository, + SavingsAccountApplicationTransitionApiJsonValidator savingsAccountApplicationTransitionApiJsonValidator, + SavingsAccountChargeAssembler savingsAccountChargeAssembler, CommandProcessingService commandProcessingService, + SavingsAccountDomainService savingsAccountDomainService, SavingsAccountWritePlatformService savingsAccountWritePlatformService, + AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, BusinessEventNotifierService businessEventNotifierService, + EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService, GSIMRepositoy gsimRepository, + GroupRepositoryWrapper groupRepositoryWrapper, GroupSavingsIndividualMonitoringWritePlatformService gsimWritePlatformService) { + return new SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl(context, savingAccountRepository, savingAccountAssembler, + savingsAccountDataValidator, accountNumberGenerator, clientRepository, groupRepository, savingsProductRepository, + noteRepository, staffRepository, savingsAccountApplicationTransitionApiJsonValidator, savingsAccountChargeAssembler, + commandProcessingService, savingsAccountDomainService, savingsAccountWritePlatformService, accountNumberFormatRepository, + businessEventNotifierService, entityDatatableChecksWritePlatformService, gsimRepository, groupRepositoryWrapper, + gsimWritePlatformService); + } + + @Bean + @ConditionalOnMissingBean(SavingsDropdownReadPlatformService.class) + public SavingsDropdownReadPlatformService savingsDropdownReadPlatformService() { + return new SavingsDropdownReadPlatformServiceImpl(); + } + + @Bean + @ConditionalOnMissingBean(SavingsProductReadPlatformService.class) + public SavingsProductReadPlatformService savingsProductReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, + FineractEntityAccessUtil fineractEntityAccessUtil) { + return new SavingsProductReadPlatformServiceImpl(context, jdbcTemplate, fineractEntityAccessUtil); + } + + @Bean + @ConditionalOnMissingBean(SavingsProductWritePlatformService.class) + public SavingsProductWritePlatformService savingsProductWritePlatformService(PlatformSecurityContext context, + SavingsProductRepository savingProductRepository, SavingsProductDataValidator fromApiJsonDataValidator, + SavingsProductAssembler savingsProductAssembler, + ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, + FineractEntityAccessUtil fineractEntityAccessUtil) { + return new SavingsProductWritePlatformServiceJpaRepositoryImpl(context, savingProductRepository, fromApiJsonDataValidator, + savingsProductAssembler, accountMappingWritePlatformService, fineractEntityAccessUtil); + } + + @Bean + @Scope("prototype") + @ConditionalOnMissingBean(SavingsSchedularInterestPoster.class) + public SavingsSchedularInterestPoster savingsSchedularInterestPoster( + SavingsAccountWritePlatformService savingsAccountWritePlatformService, JdbcTemplate jdbcTemplate, + SavingsAccountReadPlatformService savingsAccountReadPlatformService, PlatformSecurityContext platformSecurityContext + + ) { + return new SavingsSchedularInterestPoster(savingsAccountWritePlatformService, jdbcTemplate, savingsAccountReadPlatformService, + platformSecurityContext); + } + + @Bean + @Scope("prototype") + @ConditionalOnMissingBean(SavingsSchedularInterestPosterTask.class) + public SavingsSchedularInterestPosterTask savingsSchedularInterestPosterTask(SavingsSchedularInterestPoster interestPoster) { + return new SavingsSchedularInterestPosterTask(interestPoster); + } +}