You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by "galovics (via GitHub)" <gi...@apache.org> on 2023/05/26 08:11:05 UTC

[GitHub] [fineract] galovics commented on a diff in pull request #3202: FINERACT-1926: Fineract Asset Externalization - GET Pagination

galovics commented on code in PR #3202:
URL: https://github.com/apache/fineract/pull/3202#discussion_r1206384084


##########
fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/Page.java:
##########
@@ -38,4 +38,8 @@ public int getTotalFilteredRecords() {
     public List<E> getPageItems() {
         return this.pageItems;
     }
+
+    public static <E> Page<E> convertFromSpringPage(final org.springframework.data.domain.Page<E> springPage) {

Review Comment:
   Let's remove this.



##########
fineract-investor/src/main/java/org/apache/fineract/investor/service/ExternalAssetOwnersReadServiceImpl.java:
##########
@@ -37,15 +37,27 @@ public class ExternalAssetOwnersReadServiceImpl implements ExternalAssetOwnersRe
     private final ExternalAssetOwnersTransferMapper mapper;
 
     @Override
-    public List<ExternalTransferData> retrieveTransferData(Long loanId, String externalLoanId, String transferExternalId) {
-        List<ExternalAssetOwnerTransfer> result = new ArrayList<>();
+    public Page<ExternalTransferData> retrieveTransferData(Long loanId, String externalLoanId, String transferExternalId, Integer offset,
+            Integer limit) {
+        org.springframework.data.domain.Page<ExternalAssetOwnerTransfer> result;

Review Comment:
   No need for qualified name.



##########
integration-tests/src/test/java/org/apache/fineract/integrationtests/investor/externalassetowner/InitiateExternalAssetOwnerTransferTest.java:
##########
@@ -114,17 +115,16 @@ public void saleActiveLoanToExternalAssetOwner() {
             assertEquals(responseMap.get("resourceExternalId"), transferExternalId);
 
             String retrieveResponse = externalAssetOwnerHelper.retrieveTransferByLoanId(loanID.longValue());
-            Type retrieveType = new TypeToken<List<Map<String, Object>>>() {}.getType();
-            List<Map<String, Object>> retrieveResponseMap = new Gson().fromJson(retrieveResponse, retrieveType);
-            assertEquals(1, retrieveResponseMap.size());
-            assertEquals(retrieveResponseMap.get(0).get("transferExternalId"), transferExternalId);
-            assertEquals(retrieveResponseMap.get(0).get("status"), "PENDING");
+            Type retrieveType = new TypeToken<Page<Map<String, Object>>>() {}.getType();
+            Page<Map<String, Object>> retrieveResponseMap = new Gson().fromJson(retrieveResponse, retrieveType);

Review Comment:
   I think we need an additional test case to verify that paging is working. Don't you think?



##########
fineract-investor/src/main/java/org/apache/fineract/investor/service/ExternalAssetOwnersReadServiceImpl.java:
##########
@@ -37,15 +37,27 @@ public class ExternalAssetOwnersReadServiceImpl implements ExternalAssetOwnersRe
     private final ExternalAssetOwnersTransferMapper mapper;
 
     @Override
-    public List<ExternalTransferData> retrieveTransferData(Long loanId, String externalLoanId, String transferExternalId) {
-        List<ExternalAssetOwnerTransfer> result = new ArrayList<>();
+    public Page<ExternalTransferData> retrieveTransferData(Long loanId, String externalLoanId, String transferExternalId, Integer offset,
+            Integer limit) {
+        org.springframework.data.domain.Page<ExternalAssetOwnerTransfer> result;
+        if (offset == null) {
+            offset = 0;
+        }
+        if (limit == null) {
+            limit = 100;
+        }
+        PageRequest pageRequest = PageRequest.of(offset, limit);
         if (loanId != null) {
-            result.addAll(externalAssetOwnerTransferRepository.findAllByLoanId(loanId));
+            result = externalAssetOwnerTransferRepository.findAllByLoanId(loanId, pageRequest);

Review Comment:
   I think for all these repository calls where we use pageable we are missing a crucial thing, a consistent ordering of the result. Let's do an ID based ordering at least for the query to produce consistent results between runs.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@fineract.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org