You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2018/06/03 04:57:17 UTC

[fineract-cn-mobile] branch development updated (014e03d -> 5b5ad3a)

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

rajanmaurya154 pushed a change to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git.


    from 014e03d  refractor: Convert java models to kotlin data models
     new 88899c9  feat : fake database layer
     new 5b5ad3a  feat : integrated fake database layer

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 app/build.gradle                                   |  3 +
 .../java/org/apache/fineract/FakeJsonName.java     | 11 ++++
 .../org/apache/fineract/FakeRemoteDataSource.java  | 70 ++++++++++++++++++++++
 .../fineract/data/datamanager/DataManagerAuth.java | 13 +++-
 .../data/datamanager/DataManagerCustomer.java      | 55 +++++++++++++++--
 .../data/datamanager/DataManagerDeposit.java       | 27 ++++++++-
 .../datamanager/DataManagerIndividualLending.java  | 15 ++++-
 .../data/datamanager/DataManagerLoans.java         | 23 ++++++-
 .../data/datamanager/DataManagerRoles.java         | 13 +++-
 app/src/main/resources/authentication.json         |  7 +++
 app/src/main/resources/command.json                |  8 +++
 app/src/main/resources/customer.json               | 46 ++++++++++++++
 app/src/main/resources/customerPage.json           | 52 ++++++++++++++++
 app/src/main/resources/depositAccount.json         | 13 ++++
 app/src/main/resources/identification.json         | 16 +++++
 app/src/main/resources/loanAccount.json            | 55 +++++++++++++++++
 app/src/main/resources/loanAccountPage.json        | 60 +++++++++++++++++++
 app/src/main/resources/plannedPaymentPage.json     | 23 +++++++
 app/src/main/resources/role.json                   | 28 +++++++++
 app/src/main/resources/scanCard.json               |  6 ++
 20 files changed, 532 insertions(+), 12 deletions(-)
 create mode 100644 app/src/main/resources/authentication.json
 create mode 100644 app/src/main/resources/command.json
 create mode 100644 app/src/main/resources/customer.json
 create mode 100644 app/src/main/resources/customerPage.json
 create mode 100644 app/src/main/resources/depositAccount.json
 create mode 100644 app/src/main/resources/identification.json
 create mode 100644 app/src/main/resources/loanAccount.json
 create mode 100644 app/src/main/resources/loanAccountPage.json
 create mode 100644 app/src/main/resources/plannedPaymentPage.json
 create mode 100644 app/src/main/resources/role.json
 create mode 100644 app/src/main/resources/scanCard.json

-- 
To stop receiving notification emails like this one, please contact
rajanmaurya154@apache.org.

[fineract-cn-mobile] 01/02: feat : fake database layer

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git

commit 88899c9efed66c5a1fea7c30bc0c72bc6f00bb0c
Author: Mohak <mo...@gmail.com>
AuthorDate: Sun May 6 14:48:56 2018 +0530

    feat : fake database layer
---
 app/build.gradle                                                    | 3 +++
 app/src/commonTest/java/org/apache/fineract/FakeJsonName.java       | 2 ++
 .../commonTest/java/org/apache/fineract/FakeRemoteDataSource.java   | 6 ++++++
 app/src/main/resources/customer.json                                | 3 +++
 4 files changed, 14 insertions(+)

diff --git a/app/build.gradle b/app/build.gradle
index 8c5b410..884ac3a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -39,6 +39,9 @@ android {
         test {
             java.srcDir commonTestDir
         }
+        main {
+            java.srcDir commonTestDir
+        }
     }
 
     // Always show the result of every unit test, even if it passes.
diff --git a/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java b/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
index 0c4e7b8..3b13ebe 100644
--- a/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
+++ b/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
@@ -6,4 +6,6 @@ package org.apache.fineract;
  */
 public class FakeJsonName {
 
+    public static final String CUSTOMER = "customer.json";
+
 }
diff --git a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
index 4f92f80..87c3451 100644
--- a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
+++ b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
@@ -1,5 +1,7 @@
 package org.apache.fineract;
 
+import org.apache.fineract.data.models.customer.Customer;
+
 /**
  * FakeRemoteDataSource is reading the local json files into the java object using gson.
  * Created by Rajan Maurya on 25/6/17.
@@ -8,4 +10,8 @@ public class FakeRemoteDataSource {
 
     private static TestDataFactory testDataFactory = new TestDataFactory();
 
+    public static Customer getCustomer() {
+        return testDataFactory.getObjectTypePojo(Customer.class,
+                FakeJsonName.CUSTOMER);
+    }
 }
diff --git a/app/src/main/resources/customer.json b/app/src/main/resources/customer.json
new file mode 100644
index 0000000..0e0dcd2
--- /dev/null
+++ b/app/src/main/resources/customer.json
@@ -0,0 +1,3 @@
+{
+
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
rajanmaurya154@apache.org.

[fineract-cn-mobile] 02/02: feat : integrated fake database layer

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git

commit 5b5ad3a60f3f5dd135f8447509f3f54c9fcd18d8
Author: Mohak <mo...@gmail.com>
AuthorDate: Sat May 19 17:00:27 2018 +0530

    feat : integrated fake database layer
---
 .../java/org/apache/fineract/FakeJsonName.java     | 11 +++-
 .../org/apache/fineract/FakeRemoteDataSource.java  | 64 ++++++++++++++++++++++
 .../fineract/data/datamanager/DataManagerAuth.java | 13 ++++-
 .../data/datamanager/DataManagerCustomer.java      | 55 +++++++++++++++++--
 .../data/datamanager/DataManagerDeposit.java       | 27 ++++++++-
 .../datamanager/DataManagerIndividualLending.java  | 15 ++++-
 .../data/datamanager/DataManagerLoans.java         | 23 +++++++-
 .../data/datamanager/DataManagerRoles.java         | 13 ++++-
 app/src/main/resources/authentication.json         |  7 +++
 app/src/main/resources/command.json                |  8 +++
 app/src/main/resources/customer.json               | 45 ++++++++++++++-
 app/src/main/resources/customerPage.json           | 52 ++++++++++++++++++
 app/src/main/resources/depositAccount.json         | 13 +++++
 app/src/main/resources/identification.json         | 16 ++++++
 app/src/main/resources/loanAccount.json            | 55 +++++++++++++++++++
 app/src/main/resources/loanAccountPage.json        | 60 ++++++++++++++++++++
 app/src/main/resources/plannedPaymentPage.json     | 23 ++++++++
 app/src/main/resources/role.json                   | 28 ++++++++++
 app/src/main/resources/scanCard.json               |  6 ++
 19 files changed, 520 insertions(+), 14 deletions(-)

diff --git a/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java b/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
index 3b13ebe..441ae48 100644
--- a/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
+++ b/app/src/commonTest/java/org/apache/fineract/FakeJsonName.java
@@ -7,5 +7,14 @@ package org.apache.fineract;
 public class FakeJsonName {
 
     public static final String CUSTOMER = "customer.json";
-
+    public static final String AUTHENTICATION = "authentication.json";
+    public static final String CUSTOMER_PAGE = "customerPage.json";
+    public static final String LOAN_ACCOUNT_PAGE = "loanAccountPage.json";
+    public static final String DEPOSIT_ACCOUNTS = "depositAccount.json";
+    public static final String IDENTIFICATIONS = "identification.json";
+    public static final String SCAN_CARDS = "scanCard.json";
+    public static final String CUSTOMER_COMMANDS = "command.json";
+    public static final String LOAN_ACCOUNT = "loanAccount.json";
+    public static final String PLANNED_PAYMENT_PAGE = "plannedPaymentPage.json";
+    public static final String ROLES = "role.json";
 }
diff --git a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
index 87c3451..01f6bb3 100644
--- a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
+++ b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
@@ -1,6 +1,20 @@
 package org.apache.fineract;
 
+import com.google.gson.reflect.TypeToken;
+
+import org.apache.fineract.data.models.Authentication;
+import org.apache.fineract.data.models.customer.Command;
 import org.apache.fineract.data.models.customer.Customer;
+import org.apache.fineract.data.models.customer.CustomerPage;
+import org.apache.fineract.data.models.customer.identification.Identification;
+import org.apache.fineract.data.models.customer.identification.ScanCard;
+import org.apache.fineract.data.models.deposit.DepositAccount;
+import org.apache.fineract.data.models.loan.LoanAccount;
+import org.apache.fineract.data.models.loan.LoanAccountPage;
+import org.apache.fineract.data.models.payment.PlannedPaymentPage;
+import org.apache.fineract.data.models.rolesandpermission.Role;
+
+import java.util.List;
 
 /**
  * FakeRemoteDataSource is reading the local json files into the java object using gson.
@@ -14,4 +28,54 @@ public class FakeRemoteDataSource {
         return testDataFactory.getObjectTypePojo(Customer.class,
                 FakeJsonName.CUSTOMER);
     }
+
+    public static Authentication getAuth() {
+        return testDataFactory.getObjectTypePojo(Authentication.class,
+                FakeJsonName.AUTHENTICATION);
+    }
+
+    public static CustomerPage getCustomerPage() {
+        return testDataFactory.getObjectTypePojo(CustomerPage.class,
+                FakeJsonName.CUSTOMER_PAGE);
+    }
+
+    public static List<Role> getRoles() {
+        return testDataFactory.getListTypePojo(new TypeToken<List<Role>>() {
+        }, FakeJsonName.ROLES);
+    }
+
+    public static LoanAccountPage getloanAccountPage() {
+        return testDataFactory.getObjectTypePojo(LoanAccountPage.class,
+                FakeJsonName.LOAN_ACCOUNT_PAGE);
+    }
+
+    public static List<DepositAccount> getCustomerDepositAccounts() {
+        return testDataFactory.getListTypePojo(new TypeToken<List<DepositAccount>>() {
+        }, FakeJsonName.DEPOSIT_ACCOUNTS);
+    }
+
+    public static List<Identification> getIdentifications() {
+        return testDataFactory.getListTypePojo(new TypeToken<List<Identification>>() {
+        }, FakeJsonName.IDENTIFICATIONS);
+    }
+
+    public static List<ScanCard> getScanCards() {
+        return testDataFactory.getListTypePojo(new TypeToken<List<ScanCard>>() {
+        }, FakeJsonName.SCAN_CARDS);
+    }
+
+    public static List<Command> getCustomerCommands() {
+        return testDataFactory.getListTypePojo(new TypeToken<List<Command>>() {
+        }, FakeJsonName.CUSTOMER_COMMANDS);
+    }
+
+    public static LoanAccount getloanAccount() {
+        return testDataFactory.getObjectTypePojo(LoanAccount.class,
+                FakeJsonName.LOAN_ACCOUNT);
+    }
+
+    public static PlannedPaymentPage getPlannedPaymentPage() {
+        return testDataFactory.getObjectTypePojo(PlannedPaymentPage.class,
+                FakeJsonName.PLANNED_PAYMENT_PAGE);
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerAuth.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerAuth.java
index ddfbb88..68e43a0 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerAuth.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerAuth.java
@@ -2,6 +2,7 @@ package org.apache.fineract.data.datamanager;
 
 import android.util.Base64;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.Authentication;
 import org.apache.fineract.data.remote.BaseApiManager;
@@ -12,6 +13,8 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya On 16/03/17.
@@ -34,7 +37,15 @@ public class DataManagerAuth {
 
     public Observable<Authentication> login(String username, String password) {
         return baseApiManager.getAuthApi().login(username,
-                Base64.encodeToString(password.getBytes(Charset.forName("UTF-8")), Base64.NO_WRAP));
+                Base64.encodeToString(password.getBytes(Charset.forName("UTF-8")), Base64.NO_WRAP))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<Authentication>>() {
+                            @Override
+                            public ObservableSource<Authentication> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getAuth());
+                            }
+                        });
     }
 
     public Observable<Authentication> refreshToken() {
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
index a6ce417..c2357a2 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.customer.Command;
 import org.apache.fineract.data.models.customer.Customer;
@@ -15,6 +16,8 @@ import javax.inject.Singleton;
 
 import io.reactivex.Completable;
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 import okhttp3.MultipartBody;
 
 /**
@@ -37,12 +40,28 @@ public class DataManagerCustomer extends FineractBaseDataManager {
 
     public Observable<CustomerPage> fetchCustomers(Integer pageIndex, Integer size) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
-                .fetchCustomers(pageIndex, size));
+                .fetchCustomers(pageIndex, size))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<CustomerPage>>() {
+                            @Override
+                            public ObservableSource<CustomerPage> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getCustomerPage());
+                            }
+                        });
     }
 
     public Observable<Customer> fetchCustomer(String identifier) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
-                .fetchCustomer(identifier));
+                .fetchCustomer(identifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<Customer>>() {
+                            @Override
+                            public ObservableSource<Customer> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getCustomer());
+                            }
+                        });
     }
 
     public Completable updateCustomer(String customerIdentifier, Customer customer) {
@@ -67,12 +86,30 @@ public class DataManagerCustomer extends FineractBaseDataManager {
 
     public Observable<List<Command>> fetchCustomerCommands(String customerIdentifier) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
-                .fetchCustomerCommands(customerIdentifier));
+                .fetchCustomerCommands(customerIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<Command>>>() {
+                            @Override
+                            public ObservableSource<List<Command>> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getCustomerCommands());
+                            }
+                        });
     }
 
     public Observable<List<Identification>> fetchIdentifications(String customerIdentifier) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
-                .fetchIdentification(customerIdentifier));
+                .fetchIdentification(customerIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<Identification>>>
+                                () {
+                            @Override
+                            public ObservableSource<List<Identification>> apply(
+                                    Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getIdentifications());
+                            }
+                        });
     }
 
     public Completable createIdentificationCard(String identifier, Identification identification) {
@@ -89,7 +126,15 @@ public class DataManagerCustomer extends FineractBaseDataManager {
     public Observable<List<ScanCard>> fetchIdentificationScanCards(String customerIdentifier,
             String identificationNumber) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
-                .fetchIdentificationScanCards(customerIdentifier, identificationNumber));
+                .fetchIdentificationScanCards(customerIdentifier, identificationNumber))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<ScanCard>>>() {
+                            @Override
+                            public ObservableSource<List<ScanCard>> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getScanCards());
+                            }
+                        });
     }
 
     public Completable uploadIdentificationCardScan(String customerIdentifier,
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerDeposit.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerDeposit.java
index dcbb4cd..8e13597 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerDeposit.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerDeposit.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.deposit.DepositAccount;
 import org.apache.fineract.data.models.deposit.ProductDefinition;
@@ -12,6 +13,8 @@ import javax.inject.Singleton;
 
 import io.reactivex.Completable;
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -34,13 +37,33 @@ public class DataManagerDeposit extends FineractBaseDataManager {
     public Observable<List<DepositAccount>> getCustomerDepositAccounts(
             String customerIdentifier) {
         return authenticatedObservableApi(baseApiManager.getDepositApi()
-                .fetchCustomersDeposits(customerIdentifier));
+                .fetchCustomersDeposits(customerIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<DepositAccount>>>
+                                () {
+                            @Override
+                            public ObservableSource<List<DepositAccount>> apply(
+                                    Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(FakeRemoteDataSource
+                                        .getCustomerDepositAccounts());
+                            }
+                        });
     }
 
     public Observable<DepositAccount> getCustomerDepositAccountDetails(
             String accountIdentifier) {
         return authenticatedObservableApi(baseApiManager.getDepositApi()
-                .fetchCustomerDepositDetails(accountIdentifier));
+                .fetchCustomerDepositDetails(accountIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<DepositAccount>>() {
+                            @Override
+                            public ObservableSource<DepositAccount> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource
+                                        .getCustomerDepositAccounts().get(0));
+                            }
+                        });
     }
 
     public Observable<List<ProductDefinition>> fetchProductDefinitions() {
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
index 882b2bd..a3ba78e 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.payment.PlannedPaymentPage;
 import org.apache.fineract.data.remote.BaseApiManager;
@@ -8,6 +9,8 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -31,6 +34,16 @@ public class DataManagerIndividualLending extends FineractBaseDataManager {
             String caseIdentifier, Integer pageIndex, Integer size, String initialDisbursalDate) {
         return authenticatedObservableApi(baseApiManager
                 .getIndividualLendingService().getPaymentScheduleForCase(
-                        productIdentifier, caseIdentifier, pageIndex, size, initialDisbursalDate));
+                        productIdentifier, caseIdentifier, pageIndex, size, initialDisbursalDate))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<PlannedPaymentPage>>() {
+                            @Override
+                            public ObservableSource<PlannedPaymentPage> apply(
+                                    Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(
+                                        FakeRemoteDataSource.getPlannedPaymentPage());
+                            }
+                        });
     }
 }
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
index c699e11..e315d80 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.loan.LoanAccount;
 import org.apache.fineract.data.models.loan.LoanAccountPage;
@@ -11,6 +12,8 @@ import javax.inject.Singleton;
 
 import io.reactivex.Completable;
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -33,13 +36,29 @@ public class DataManagerLoans extends FineractBaseDataManager {
     public Observable<LoanAccountPage> fetchCustomerLoanAccounts(
             String customeridentifier, Integer pageIndex, Integer size) {
         return authenticatedObservableApi(baseApiManager.getLoanApi()
-                .fetchCustomerLoanAccounts(customeridentifier, pageIndex, size));
+                .fetchCustomerLoanAccounts(customeridentifier, pageIndex, size))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<LoanAccountPage>>() {
+                            @Override
+                            public ObservableSource<LoanAccountPage> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getloanAccountPage());
+                            }
+                        });
     }
 
     public Observable<LoanAccount> fetchCustomerLoanDetails(
             String productIdentifier, String caseIdentifier) {
         return authenticatedObservableApi(baseApiManager.getLoanApi()
-                .fetchCustomerLoanDetails(productIdentifier, caseIdentifier));
+                .fetchCustomerLoanDetails(productIdentifier, caseIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<LoanAccount>>() {
+                            @Override
+                            public ObservableSource<LoanAccount> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getloanAccount());
+                            }
+                        });
     }
 
     public Observable<ProductPage> getProducts(Integer pageIndex, Integer size) {
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
index 8de52aa..60df5c0 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.rolesandpermission.Role;
 import org.apache.fineract.data.remote.BaseApiManager;
@@ -10,6 +11,8 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -31,6 +34,14 @@ public class DataManagerRoles extends FineractBaseDataManager {
 
     public Observable<List<Role>> getRoles() {
         return authenticatedObservableApi(
-                baseApiManager.getRolesAndPermissionsService().getRoles());
+                baseApiManager.getRolesAndPermissionsService().getRoles())
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<Role>>>() {
+                            @Override
+                            public ObservableSource<List<Role>> apply(Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getRoles());
+                            }
+                        });
     }
 }
diff --git a/app/src/main/resources/authentication.json b/app/src/main/resources/authentication.json
new file mode 100644
index 0000000..9a26afb
--- /dev/null
+++ b/app/src/main/resources/authentication.json
@@ -0,0 +1,7 @@
+{
+  "tokenType": "tokenType",
+  "accessToken": "accessToken",
+  "accessTokenExpiration": "accessTokenExpiration",
+  "refreshTokenExpiration": "refreshTokenExpiration",
+  "passwordExpiration": "passwordExpiration"
+}
\ No newline at end of file
diff --git a/app/src/main/resources/command.json b/app/src/main/resources/command.json
new file mode 100644
index 0000000..079a8ad
--- /dev/null
+++ b/app/src/main/resources/command.json
@@ -0,0 +1,8 @@
+[
+  {
+    "action": "ACTIVATE",
+    "comment": "comment",
+    "createdOn": "createdOn",
+    "createdBy": "createdBy"
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/customer.json b/app/src/main/resources/customer.json
index 0e0dcd2..837a272 100644
--- a/app/src/main/resources/customer.json
+++ b/app/src/main/resources/customer.json
@@ -1,3 +1,46 @@
 {
-
+  "identifier": "identifier",
+  "type": "type",
+  "givenName": "givenName",
+  "middleName": "middleName",
+  "surname": "surname",
+  "dateOfBirth": {
+    "year": 1985,
+    "month": 11,
+    "day": 27
+  },
+  "member": false,
+  "accountBeneficiary": "accountBeneficiary",
+  "referenceCustomer": "referenceCustomer",
+  "assignedOffice": "assignedOffice",
+  "assignedEmployee": "assignedEmployee",
+  "address": {
+    "street": "street",
+    "city": "city",
+    "region": "region",
+    "postalCode": "postalCode",
+    "countryCode": "countryCode",
+    "country": "country"
+  },
+  "contactDetails": [
+    {
+      "type": "EMAIL",
+      "group": "BUSINESS",
+      "value": "value",
+      "preferenceLevel": 1,
+      "validated": false
+    },
+    {
+      "type": "EMAIL",
+      "group": "BUSINESS",
+      "value": "value",
+      "preferenceLevel": 1,
+      "validated": false
+    }
+  ],
+  "currentState": "ACTIVE",
+  "createdBy": "createdBy",
+  "createdOn": "createdOn",
+  "lastModifiedBy": "lastModifiedBy",
+  "lastModifiedOn": "lastModifiedOn"
 }
\ No newline at end of file
diff --git a/app/src/main/resources/customerPage.json b/app/src/main/resources/customerPage.json
new file mode 100644
index 0000000..ec149ea
--- /dev/null
+++ b/app/src/main/resources/customerPage.json
@@ -0,0 +1,52 @@
+{
+  "customers": [
+    {
+      "identifier": "identifier",
+      "type": "type",
+      "givenName": "givenName",
+      "middleName": "middleName",
+      "surname": "surname",
+      "dateOfBirth": {
+        "year": 1985,
+        "month": 11,
+        "day": 27
+      },
+      "member": false,
+      "accountBeneficiary": "accountBeneficiary",
+      "referenceCustomer": "referenceCustomer",
+      "assignedOffice": "assignedOffice",
+      "assignedEmployee": "assignedEmployee",
+      "address": {
+        "street": "street",
+        "city": "city",
+        "region": "region",
+        "postalCode": "postalCode",
+        "countryCode": "countryCode",
+        "country": "country"
+      },
+      "contactDetails": [
+        {
+          "type": "EMAIL",
+          "group": "BUSINESS",
+          "value": "value",
+          "preferenceLevel": 1,
+          "validated": false
+        },
+        {
+          "type": "EMAIL",
+          "group": "BUSINESS",
+          "value": "value",
+          "preferenceLevel": 1,
+          "validated": false
+        }
+      ],
+      "currentState": "ACTIVE",
+      "createdBy": "createdBy",
+      "createdOn": "createdOn",
+      "lastModifiedBy": "lastModifiedBy",
+      "lastModifiedOn": "lastModifiedOn"
+    }
+  ],
+  "totalPages": 1,
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/depositAccount.json b/app/src/main/resources/depositAccount.json
new file mode 100644
index 0000000..ed7eff5
--- /dev/null
+++ b/app/src/main/resources/depositAccount.json
@@ -0,0 +1,13 @@
+[
+  {
+    "customerIdentifier": "customerIdentifier",
+    "productIdentifier": "productIdentifier",
+    "accountIdentifier": "accountIdentifier",
+    "beneficiaries": [
+      "beneficiaries:1",
+      "beneficiaries:2"
+    ],
+    "state": "CREATED",
+    "balance": 245.50
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/identification.json b/app/src/main/resources/identification.json
new file mode 100644
index 0000000..25f163d
--- /dev/null
+++ b/app/src/main/resources/identification.json
@@ -0,0 +1,16 @@
+[
+  {
+    "type": "type",
+    "number": "number",
+    "expirationDate": {
+      "year": 1985,
+      "month": 11,
+      "day": 27
+    },
+    "issuer": "issuer",
+    "createdBy": "createdBy",
+    "createdOn": "createdOn",
+    "lastModifiedBy": "lastModifiedBy",
+    "lastModifiedOn": "lastModifiedOn"
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/loanAccount.json b/app/src/main/resources/loanAccount.json
new file mode 100644
index 0000000..c619478
--- /dev/null
+++ b/app/src/main/resources/loanAccount.json
@@ -0,0 +1,55 @@
+{
+  "identifier": "identifier",
+  "productIdentifier": "productIdentifier",
+  "parameters": "{\"customerIdentifier\":\"customerIdentifier\",\"maximumBalance\": 343.45,\"termRange\": {\"temporalUnit\": \"WEEKS\", \"maximum\": 45.45 }, \"paymentCycle\": {\"temporalUnit\": \"WEEKS\",\"period\": 1,\"alignmentDay\": 1,\"alignmentWeek\": 1,\"alignmentMonth\": 1},\"creditWorthinessSnapshots\":[{\"forCustomer\":\"forCustomer\"}]}",
+  "accountAssignments": [
+    {
+      "designator": "designator",
+      "accountIdentifier": "accountIdentifier",
+      "ledgerIdentifier": "ledgerIdentifier"
+    }
+  ],
+  "currentState": "CREATED",
+  "createdOn": "createdOn",
+  "createdBy": "createdBy",
+  "lastModifiedOn": "lastModifiedOn",
+  "lastModifiedBy": "lastModifiedBy",
+  "loanParameters": {
+    "customerIdentifier": "customerIdentifier",
+    "creditWorthinessSnapshots": [
+      {
+        "forCustomer": "forCustomer",
+        "incomeSources": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ],
+        "assets": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ],
+        "debts": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ]
+      }
+    ],
+    "maximumBalance": 4500.50,
+    "termRange": {
+      "temporalUnit": "WEEKS",
+      "maximum": 45
+    },
+    "paymentCycle": {
+      "temporalUnit": "WEEKS",
+      "period": 1,
+      "alignmentDay": 1,
+      "alignmentWeek": 1,
+      "alignmentMonth": 1
+    }
+  }
+}
\ No newline at end of file
diff --git a/app/src/main/resources/loanAccountPage.json b/app/src/main/resources/loanAccountPage.json
new file mode 100644
index 0000000..ba5d4b2
--- /dev/null
+++ b/app/src/main/resources/loanAccountPage.json
@@ -0,0 +1,60 @@
+{
+  "elements": [
+    {
+      "identifier": "identifier",
+      "productIdentifier": "productIdentifier",
+      "parameters" : "{}",
+      "accountAssignments": [
+        {
+          "designator": "designator",
+          "accountIdentifier": "accountIdentifier",
+          "ledgerIdentifier": "ledgerIdentifier"
+        }
+      ],
+      "currentState": "CREATED",
+      "createdOn": "createdOn",
+      "createdBy": "createdBy",
+      "lastModifiedOn": "lastModifiedOn",
+      "lastModifiedBy": "lastModifiedBy",
+      "loanParameters": {
+        "customerIdentifier": "customerIdentifier",
+        "creditWorthinessSnapshots": [
+          {
+            "forCustomer": "forCustomer",
+            "incomeSources": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ],
+            "assets": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ],
+            "debts": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ]
+          }
+        ],
+        "maximumBalance": 4500.50,
+        "termRange": {
+          "temporalUnit": "WEEKS",
+          "maximum": 45
+        },
+        "paymentCycle": {
+          "temporalUnit": "WEEKS",
+          "period": 1,
+          "alignmentDay": 1,
+          "alignmentWeek": 1,
+          "alignmentMonth": 1
+        }
+      }
+    }
+  ],
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/plannedPaymentPage.json b/app/src/main/resources/plannedPaymentPage.json
new file mode 100644
index 0000000..5ee08da
--- /dev/null
+++ b/app/src/main/resources/plannedPaymentPage.json
@@ -0,0 +1,23 @@
+{
+  "chargeNames": [
+    {
+      "identifier": "identifier",
+      "name": "name"
+    }
+  ],
+  "elements": [
+    {
+      "interestRate": 5.10,
+      "costComponents": [
+        {
+          "chargeIdentifier": "chargeIdentifier",
+          "amount": 4500.75
+        }
+      ],
+      "remainingPrincipal": 3400,
+      "data": "date"
+    }
+  ],
+  "totalPages": 1,
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/role.json b/app/src/main/resources/role.json
new file mode 100644
index 0000000..8ac814f
--- /dev/null
+++ b/app/src/main/resources/role.json
@@ -0,0 +1,28 @@
+[
+  {
+    "identifier": "identifier1",
+    "permissions": [
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      },
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      }
+    ]
+  },
+  {
+    "identifier": "identifier2",
+    "permissions": [
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      },
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/scanCard.json b/app/src/main/resources/scanCard.json
new file mode 100644
index 0000000..c4eab82
--- /dev/null
+++ b/app/src/main/resources/scanCard.json
@@ -0,0 +1,6 @@
+[
+  {
+    "description": "description",
+    "identifier": "identifier"
+  }
+]
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
rajanmaurya154@apache.org.