You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by aw...@apache.org on 2019/09/02 20:43:53 UTC

[fineract-cn-reporting] 08/47: saving list skeleton

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

awasum pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-reporting.git

commit c843bc0b94ab588290809ec72b1ac8ed3539294c
Author: Awasum Yannick <aw...@skylabase.com>
AuthorDate: Fri Aug 18 05:38:13 2017 +0100

    saving list skeleton
---
 .../SavingListReportSpecification.java             | 109 +++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/service/src/main/java/io/mifos/reporting/service/internal/specification/SavingListReportSpecification.java b/service/src/main/java/io/mifos/reporting/service/internal/specification/SavingListReportSpecification.java
new file mode 100644
index 0000000..1c6fdf0
--- /dev/null
+++ b/service/src/main/java/io/mifos/reporting/service/internal/specification/SavingListReportSpecification.java
@@ -0,0 +1,109 @@
+package io.mifos.reporting.service.internal.specification;
+
+import io.mifos.reporting.api.v1.domain.*;
+import io.mifos.reporting.service.ServiceConstants;
+import io.mifos.reporting.service.spi.Report;
+import io.mifos.reporting.service.spi.ReportSpecification;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+
+import javax.persistence.EntityManager;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Report(category = "Saving", identifier = "Listing")
+public class SavingListReportSpecification implements ReportSpecification{
+    private static final String SAVING_ACCOUNT = "Saving account";
+    private static final String CUSTOMER = "Customer";
+    private static final String EMPLOYEE = "Employee";
+    //private static final String OFFICE = "Office";
+    private static final String DATE_RANGE = "Date range";
+
+    private final EntityManager entityManager;
+
+    private final Logger logger;
+
+    private final HashMap<String, String> customerColumnMapping = new HashMap<>();
+    private final HashMap<String, String> savingAccountColumnMapping = new HashMap<>();
+    // private final HashMap<String, String> officeColumnMapping = new HashMap<>();
+    private final HashMap<String, String> employeeColumnMapping = new HashMap<>();
+    private final HashMap<String, String> allColumnMapping = new HashMap<>();
+
+
+    @Autowired
+    public SavingListReportSpecification(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger, final EntityManager entityManager){
+        this.entityManager = entityManager;
+        this.logger = logger;
+    }
+
+
+    @Override
+    public ReportDefinition getReportDefinition() {
+
+        final ReportDefinition reportDefinition = new ReportDefinition();
+        reportDefinition.setIdentifier("Listing");
+        reportDefinition.setName("Saving Listing");
+        reportDefinition.setDescription("List of all savings.");
+        reportDefinition.setQueryParameters(this.buildQueryParameters());
+        reportDefinition.setDisplayableFields(this.buildDisplayableFields());
+        return reportDefinition;
+    }
+
+    @Override
+    public ReportPage generateReport(ReportRequest reportRequest, int pageIndex, int size) {
+        return null;
+    }
+
+    @Override
+    public void validate(ReportRequest reportRequest) throws IllegalArgumentException {
+
+    }
+
+    public String buildSavingAccountQuery(){
+
+        return "SELECT ... FROM shed_product_instances pi";
+
+    }
+
+    public String buildCustomerQuery(){
+
+        return null;
+    }
+
+    private void initializeMapping(){
+        this.customerColumnMapping.put(CUSTOMER, "cst.identifier, cst.given_name, cst.middle_name, " +
+                "cst.surname, cst.assigned_office");
+        this.employeeColumnMapping.put(EMPLOYEE, "pi.created_by");
+        this.savingAccountColumnMapping.put(SAVING_ACCOUNT, "pi.customer_identifier, pi.product_definition_id, pi.account_identifier, pi.a_state");
+        this.savingAccountColumnMapping.put(DATE_RANGE, "pi.created_on");
+
+        this.allColumnMapping.putAll(customerColumnMapping);
+        this.allColumnMapping.putAll(employeeColumnMapping);
+        this.allColumnMapping.putAll(savingAccountColumnMapping);
+    }
+
+    private Header createHeader(final List<DisplayableField> displayableFields) {
+        final Header header = new Header();
+        header.setColumnNames(
+                displayableFields
+                        .stream()
+                        .map(DisplayableField::getName)
+                        .collect(Collectors.toList())
+        );
+        return header;
+    }
+
+
+    private List<DisplayableField> buildDisplayableFields() {
+
+        return null;
+    }
+
+    private List<QueryParameter> buildQueryParameters(){
+
+        return null;
+    }
+
+}