This is an automated email from the ASF dual-hosted git repository.

aleks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new f11808eba FINERACT-1932: Add custom Configuration class for 
shareaccounts services
f11808eba is described below

commit f11808eba751ef3895a5c3eba76d60e044dbc6c6
Author: Mohamed Magdi-Abdelmonem <[email protected]>
AuthorDate: Sun Aug 27 16:43:26 2023 +0300

    FINERACT-1932: Add custom Configuration class for shareaccounts services
---
 .../PurchasedSharesReadPlatformServiceImpl.java    |  10 +-
 .../ShareAccountChargeReadPlatformServiceImpl.java |  10 +-
 .../service/ShareAccountCommandsServiceImpl.java   |  12 +-
 ...hareAccountDividendReadPlatformServiceImpl.java |  14 +--
 .../ShareAccountReadPlatformServiceImpl.java       |  27 +----
 .../service/ShareAccountSchedularServiceImpl.java  |  13 +--
 ...countWritePlatformServiceJpaRepositoryImpl.java |  21 +---
 .../start/ShareAccountsConfiguration.java          | 123 +++++++++++++++++++++
 8 files changed, 137 insertions(+), 93 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
index 404ab00a2..e9c961ebf 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
@@ -23,24 +23,18 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.time.LocalDate;
 import java.util.Collection;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
 import 
org.apache.fineract.portfolio.shareaccounts.data.ShareAccountTransactionData;
-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 PurchasedSharesReadPlatformServiceImpl implements 
PurchasedSharesReadPlatformService {
 
     private final JdbcTemplate jdbcTemplate;
 
-    @Autowired
-    public PurchasedSharesReadPlatformServiceImpl(final JdbcTemplate 
jdbcTemplate) {
-        this.jdbcTemplate = jdbcTemplate;
-    }
-
     @Override
     public Collection<ShareAccountTransactionData> 
retrievePurchasedShares(Long accountId) {
         PurchasedSharesDataRowMapper mapper = new 
PurchasedSharesDataRowMapper();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
index ad6e39597..8c43a211a 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
@@ -22,27 +22,21 @@ import java.math.BigDecimal;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Collection;
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
 import org.apache.fineract.organisation.monetary.data.CurrencyData;
 import org.apache.fineract.portfolio.charge.data.ChargeData;
 import org.apache.fineract.portfolio.charge.service.ChargeEnumerations;
 import org.apache.fineract.portfolio.shareaccounts.data.ShareAccountChargeData;
-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 ShareAccountChargeReadPlatformServiceImpl implements 
ShareAccountChargeReadPlatformService {
 
     private final JdbcTemplate jdbcTemplate;
 
-    @Autowired
-    public ShareAccountChargeReadPlatformServiceImpl(final JdbcTemplate 
jdbcTemplate) {
-        this.jdbcTemplate = jdbcTemplate;
-    }
-
     @Override
     public Collection<ShareAccountChargeData> retrieveAccountCharges(Long 
accountId, String status) {
         final ShareAccountChargeMapper rm = new ShareAccountChargeMapper();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java
index 04fdadb3f..24b52b410 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java
@@ -19,29 +19,21 @@
 package org.apache.fineract.portfolio.shareaccounts.service;
 
 import com.google.gson.JsonElement;
+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.serialization.FromJsonHelper;
 import 
org.apache.fineract.portfolio.accounts.constants.ShareAccountApiConstants;
 import org.apache.fineract.portfolio.accounts.service.AccountsCommandsService;
 import 
org.apache.fineract.portfolio.shareaccounts.serialization.ShareAccountDataSerializer;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-@Service(value = "SHAREACCOUNT_COMMANDSERVICE")
+@RequiredArgsConstructor
 public class ShareAccountCommandsServiceImpl implements 
AccountsCommandsService {
 
     private final FromJsonHelper fromApiJsonHelper;
 
     private final ShareAccountDataSerializer shareAccountDataSerializer;
 
-    @Autowired
-    public ShareAccountCommandsServiceImpl(final FromJsonHelper 
fromApiJsonHelper,
-            final ShareAccountDataSerializer shareAccountDataSerializer) {
-        this.fromApiJsonHelper = fromApiJsonHelper;
-        this.shareAccountDataSerializer = shareAccountDataSerializer;
-    }
-
     @Override
     public Object handleCommand(Long accountId, String command, String 
jsonBody) {
         final JsonElement parsedCommand = 
this.fromApiJsonHelper.parse(jsonBody);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java
index 6f03922db..25a36c17f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java
@@ -24,6 +24,7 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+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;
@@ -35,12 +36,10 @@ import 
org.apache.fineract.portfolio.shareaccounts.data.ShareAccountData;
 import 
org.apache.fineract.portfolio.shareaccounts.data.ShareAccountDividendData;
 import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendStatusType;
 import 
org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividendStatusType;
-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 ShareAccountDividendReadPlatformServiceImpl implements 
ShareAccountDividendReadPlatformService {
 
     private final JdbcTemplate jdbcTemplate;
@@ -48,15 +47,6 @@ public class ShareAccountDividendReadPlatformServiceImpl 
implements ShareAccount
     private final PaginationHelper paginationHelper;
     private final DatabaseSpecificSQLGenerator sqlGenerator;
 
-    @Autowired
-    public ShareAccountDividendReadPlatformServiceImpl(final JdbcTemplate 
jdbcTemplate, final ColumnValidator columnValidator,
-            DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper 
paginationHelper) {
-        this.jdbcTemplate = jdbcTemplate;
-        this.columnValidator = columnValidator;
-        this.paginationHelper = paginationHelper;
-        this.sqlGenerator = sqlGenerator;
-    }
-
     @Override
     public List<Map<String, Object>> retriveDividendDetailsForPostDividents() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
index efca2075b..7124ff789 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
+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.DateUtils;
@@ -36,7 +37,6 @@ import 
org.apache.fineract.infrastructure.core.service.PaginationHelper;
 import 
org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator;
 import org.apache.fineract.organisation.monetary.data.CurrencyData;
 import 
org.apache.fineract.portfolio.accountdetails.data.ShareAccountSummaryData;
-import org.apache.fineract.portfolio.accounts.constants.AccountsApiConstants;
 import 
org.apache.fineract.portfolio.accounts.constants.ShareAccountApiConstants;
 import org.apache.fineract.portfolio.accounts.data.AccountData;
 import 
org.apache.fineract.portfolio.accounts.exceptions.ShareAccountNotFoundException;
@@ -62,14 +62,12 @@ import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountStatusType
 import org.apache.fineract.portfolio.shareproducts.data.ShareProductData;
 import 
org.apache.fineract.portfolio.shareproducts.data.ShareProductMarketPriceData;
 import 
org.apache.fineract.portfolio.shareproducts.service.ShareProductDropdownReadPlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Service;
 
-@Service(value = "share" + AccountsApiConstants.READPLATFORM_NAME)
+@RequiredArgsConstructor
 public class ShareAccountReadPlatformServiceImpl implements 
ShareAccountReadPlatformService {
 
     private final ApplicationContext applicationContext;
@@ -84,27 +82,6 @@ public class ShareAccountReadPlatformServiceImpl implements 
ShareAccountReadPlat
     private final PaginationHelper shareAccountDataPaginationHelper;
     private final DatabaseSpecificSQLGenerator sqlGenerator;
 
-    @Autowired
-    public ShareAccountReadPlatformServiceImpl(final JdbcTemplate 
jdbcTemplate, final ApplicationContext applicationContext,
-            final ChargeReadPlatformService chargeReadPlatformService,
-            final ShareProductDropdownReadPlatformService 
shareProductDropdownReadPlatformService,
-            final SavingsAccountReadPlatformService 
savingsAccountReadPlatformService,
-            final ClientReadPlatformService clientReadPlatformService,
-            final ShareAccountChargeReadPlatformService 
shareAccountChargeReadPlatformService,
-            final PurchasedSharesReadPlatformService 
purchasedSharesReadPlatformService, DatabaseSpecificSQLGenerator sqlGenerator,
-            PaginationHelper paginationHelper) {
-        this.jdbcTemplate = jdbcTemplate;
-        this.applicationContext = applicationContext;
-        this.chargeReadPlatformService = chargeReadPlatformService;
-        this.shareProductDropdownReadPlatformService = 
shareProductDropdownReadPlatformService;
-        this.savingsAccountReadPlatformService = 
savingsAccountReadPlatformService;
-        this.clientReadPlatformService = clientReadPlatformService;
-        this.shareAccountChargeReadPlatformService = 
shareAccountChargeReadPlatformService;
-        this.purchasedSharesReadPlatformService = 
purchasedSharesReadPlatformService;
-        this.shareAccountDataPaginationHelper = paginationHelper;
-        this.sqlGenerator = sqlGenerator;
-    }
-
     @Override
     public ShareAccountData retrieveTemplate(Long clientId, Long productId) {
         ShareAccountData toReturn = null;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularServiceImpl.java
index 9460cc3bc..70d2c88e9 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularServiceImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.fineract.portfolio.shareaccounts.service;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.infrastructure.core.service.DateUtils;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler;
@@ -26,25 +27,15 @@ import 
org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction;
 import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendDetails;
 import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository;
 import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendStatusType;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-@Service
+@RequiredArgsConstructor
 public class ShareAccountSchedularServiceImpl implements 
ShareAccountSchedularService {
 
     private final ShareAccountDividendRepository 
shareAccountDividendRepository;
     private final SavingsAccountDomainService savingsAccountDomainService;
     private final SavingsAccountAssembler savingsAccountAssembler;
 
-    @Autowired
-    public ShareAccountSchedularServiceImpl(final 
ShareAccountDividendRepository shareAccountDividendRepository,
-            final SavingsAccountDomainService savingsAccountDomainService, 
final SavingsAccountAssembler savingsAccountAssembler) {
-        this.shareAccountDividendRepository = shareAccountDividendRepository;
-        this.savingsAccountDomainService = savingsAccountDomainService;
-        this.savingsAccountAssembler = savingsAccountAssembler;
-    }
-
     @Override
     @Transactional
     public void postDividend(final Long dividendDetailId, final Long 
savingsId) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java
index 76c757039..a3aee3881 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java
@@ -27,6 +27,7 @@ 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.commons.lang3.exception.ExceptionUtils;
 import 
org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService;
@@ -53,12 +54,10 @@ import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountTransactio
 import 
org.apache.fineract.portfolio.shareaccounts.serialization.ShareAccountDataSerializer;
 import org.apache.fineract.portfolio.shareproducts.domain.ShareProduct;
 import 
org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepositoryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.orm.jpa.JpaSystemException;
-import org.springframework.stereotype.Service;
 
-@Service
+@RequiredArgsConstructor
 public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements 
ShareAccountWritePlatformService {
 
     private final ShareAccountDataSerializer accountDataSerializer;
@@ -77,22 +76,6 @@ public class 
ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA
 
     private final BusinessEventNotifierService businessEventNotifierService;
 
-    @Autowired
-    public ShareAccountWritePlatformServiceJpaRepositoryImpl(final 
ShareAccountDataSerializer accountDataSerializer,
-            final ShareAccountRepositoryWrapper shareAccountRepository, final 
ShareProductRepositoryWrapper shareProductRepository,
-            final AccountNumberGenerator accountNumberGenerator, final 
AccountNumberFormatRepositoryWrapper accountNumberFormatRepository,
-            final JournalEntryWritePlatformService 
journalEntryWritePlatformService, final NoteRepository noteRepository,
-            final BusinessEventNotifierService businessEventNotifierService) {
-        this.accountDataSerializer = accountDataSerializer;
-        this.shareAccountRepository = shareAccountRepository;
-        this.shareProductRepository = shareProductRepository;
-        this.accountNumberGenerator = accountNumberGenerator;
-        this.accountNumberFormatRepository = accountNumberFormatRepository;
-        this.journalEntryWritePlatformService = 
journalEntryWritePlatformService;
-        this.noteRepository = noteRepository;
-        this.businessEventNotifierService = businessEventNotifierService;
-    }
-
     @Override
     public CommandProcessingResult createShareAccount(JsonCommand jsonCommand) 
{
         try {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/start/ShareAccountsConfiguration.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/start/ShareAccountsConfiguration.java
new file mode 100644
index 000000000..cc5d2b38a
--- /dev/null
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/start/ShareAccountsConfiguration.java
@@ -0,0 +1,123 @@
+/**
+ * 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.shareaccounts.start;
+
+import 
org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService;
+import 
org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepositoryWrapper;
+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.event.business.service.BusinessEventNotifierService;
+import org.apache.fineract.infrastructure.security.utils.ColumnValidator;
+import org.apache.fineract.portfolio.accounts.constants.AccountsApiConstants;
+import org.apache.fineract.portfolio.accounts.service.AccountsCommandsService;
+import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService;
+import org.apache.fineract.portfolio.client.domain.AccountNumberGenerator;
+import org.apache.fineract.portfolio.client.service.ClientReadPlatformService;
+import org.apache.fineract.portfolio.note.domain.NoteRepository;
+import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler;
+import 
org.apache.fineract.portfolio.savings.domain.SavingsAccountDomainService;
+import 
org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository;
+import 
org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountRepositoryWrapper;
+import 
org.apache.fineract.portfolio.shareaccounts.serialization.ShareAccountDataSerializer;
+import 
org.apache.fineract.portfolio.shareaccounts.service.PurchasedSharesReadPlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.PurchasedSharesReadPlatformServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountChargeReadPlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountChargeReadPlatformServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountCommandsServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountDividendReadPlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountDividendReadPlatformServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountReadPlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountReadPlatformServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountSchedularService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountSchedularServiceImpl;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountWritePlatformService;
+import 
org.apache.fineract.portfolio.shareaccounts.service.ShareAccountWritePlatformServiceJpaRepositoryImpl;
+import 
org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepositoryWrapper;
+import 
org.apache.fineract.portfolio.shareproducts.service.ShareProductDropdownReadPlatformService;
+import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+@Configuration
+public class ShareAccountsConfiguration {
+
+    @Bean
+    @ConditionalOnMissingBean(PurchasedSharesReadPlatformService.class)
+    public PurchasedSharesReadPlatformService 
purchasedSharesReadPlatformService(JdbcTemplate jdbcTemplate) {
+        return new PurchasedSharesReadPlatformServiceImpl(jdbcTemplate);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(ShareAccountChargeReadPlatformService.class)
+    public ShareAccountChargeReadPlatformService 
shareAccountChargeReadPlatformService(JdbcTemplate jdbcTemplate) {
+        return new ShareAccountChargeReadPlatformServiceImpl(jdbcTemplate);
+    }
+
+    @Bean(value = "SHAREACCOUNT_COMMANDSERVICE")
+    @ConditionalOnMissingBean(AccountsCommandsService.class)
+    public AccountsCommandsService accountsCommandsService(FromJsonHelper 
fromApiJsonHelper,
+            ShareAccountDataSerializer shareAccountDataSerializer) {
+        return new ShareAccountCommandsServiceImpl(fromApiJsonHelper, 
shareAccountDataSerializer);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(ShareAccountDividendReadPlatformService.class)
+    public ShareAccountDividendReadPlatformService 
shareAccountDividendReadPlatformService(JdbcTemplate jdbcTemplate,
+            ColumnValidator columnValidator, PaginationHelper 
paginationHelper, DatabaseSpecificSQLGenerator sqlGenerator) {
+        return new ShareAccountDividendReadPlatformServiceImpl(jdbcTemplate, 
columnValidator, paginationHelper, sqlGenerator);
+
+    }
+
+    @Bean(value = "share" + AccountsApiConstants.READPLATFORM_NAME)
+    @ConditionalOnMissingBean(ShareAccountReadPlatformService.class)
+    public ShareAccountReadPlatformService 
shareAccountReadPlatformService(ApplicationContext applicationContext,
+            ChargeReadPlatformService chargeReadPlatformService,
+            ShareProductDropdownReadPlatformService 
shareProductDropdownReadPlatformService,
+            SavingsAccountReadPlatformService 
savingsAccountReadPlatformService, ClientReadPlatformService 
clientReadPlatformService,
+            ShareAccountChargeReadPlatformService 
shareAccountChargeReadPlatformService,
+            PurchasedSharesReadPlatformService 
purchasedSharesReadPlatformService, JdbcTemplate jdbcTemplate,
+            PaginationHelper paginationHelper, DatabaseSpecificSQLGenerator 
sqlGenerator) {
+        return new ShareAccountReadPlatformServiceImpl(applicationContext, 
chargeReadPlatformService,
+                shareProductDropdownReadPlatformService, 
savingsAccountReadPlatformService, clientReadPlatformService,
+                shareAccountChargeReadPlatformService, 
purchasedSharesReadPlatformService, jdbcTemplate, paginationHelper, 
sqlGenerator);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(ShareAccountSchedularService.class)
+    public ShareAccountSchedularService 
shareAccountSchedularService(ShareAccountDividendRepository 
shareAccountDividendRepository,
+            SavingsAccountDomainService savingsAccountDomainService, 
SavingsAccountAssembler savingsAccountAssembler) {
+        return new 
ShareAccountSchedularServiceImpl(shareAccountDividendRepository, 
savingsAccountDomainService, savingsAccountAssembler);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(ShareAccountWritePlatformService.class)
+    public ShareAccountWritePlatformService 
shareAccountWritePlatformService(ShareAccountDataSerializer 
accountDataSerializer,
+            ShareAccountRepositoryWrapper shareAccountRepository, 
ShareProductRepositoryWrapper shareProductRepository,
+            AccountNumberGenerator accountNumberGenerator, 
AccountNumberFormatRepositoryWrapper accountNumberFormatRepository,
+            JournalEntryWritePlatformService journalEntryWritePlatformService, 
NoteRepository noteRepository,
+            BusinessEventNotifierService businessEventNotifierService) {
+        return new 
ShareAccountWritePlatformServiceJpaRepositoryImpl(accountDataSerializer, 
shareAccountRepository, shareProductRepository,
+                accountNumberGenerator, accountNumberFormatRepository, 
journalEntryWritePlatformService, noteRepository,
+                businessEventNotifierService);
+    }
+}

Reply via email to