From 2e752407842f43c9bb874e738df7297dda835d1c Mon Sep 17 00:00:00 2001 From: Sander van der Heyden Date: Tue, 2 Jul 2013 20:51:06 +0200 Subject: [PATCH 1/2] Add datatables functionality to loan product and savings product entities --- .../service/ReadWriteNonCoreDataServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java index 81856dcc4..1b0a08345 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java @@ -759,8 +759,12 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ final Long id) { final String appTable = queryForApplicationTableName(dataTableName); - checkMainResourceExistsWithinScope(appTable, appTableId); - + if(!appTable.equalsIgnoreCase("m_product_loan") && !appTable.equalsIgnoreCase("m_savings_product")) + { + checkMainResourceExistsWithinScope(appTable, appTableId); + } + + final List columnHeaders = this.genericDataService.fillResultsetColumnHeaders(dataTableName); String sql = ""; @@ -907,6 +911,8 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ if (appTable.equalsIgnoreCase("m_client")) return; if (appTable.equalsIgnoreCase("m_group")) return; if (appTable.equalsIgnoreCase("m_office")) return; + if (appTable.equalsIgnoreCase("m_product_loan")) return; + if (appTable.equalsIgnoreCase("m_savings_product")) return; throw new PlatformDataIntegrityException("error.msg.invalid.application.table", "Invalid Application Table: " + appTable); } From c869abcaab3e3c81a11868f0d762630170365718 Mon Sep 17 00:00:00 2001 From: Sander van der Heyden Date: Wed, 3 Jul 2013 21:54:41 +0200 Subject: [PATCH 2/2] Enable datatable functionality for savings products and loan products --- api-docs/apiLive.htm | 2 ++ ...tatableCommandFromApiJsonDeserializer.java | 2 +- .../ReadWriteNonCoreDataServiceImpl.java | 32 +++++++++++-------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index db216eae6..b1f508895 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -11703,6 +11703,8 @@ No Request Body:
  • m_loan
  • m_office
  • m_saving_account
  • +
  • m_product_loan
  • +
  • m_savings_product
  • diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java index b67d61e1f..2ac566f84 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java @@ -47,7 +47,7 @@ public class DatatableCommandFromApiJsonDeserializer { private final Set supportedParametersForDropColumns = new HashSet(Arrays.asList( "name")); private final Object[] supportedColumnTypes = { "String", "Number", "Decimal", "Date", "Text", "Dropdown" }; - private final Object[] supportedApptableNames = { "m_loan", "m_savings_account", "m_client", "m_group", "m_office" }; + private final Object[] supportedApptableNames = { "m_loan", "m_savings_account", "m_client", "m_group", "m_office", "m_savings_product", "m_product_loan" }; private final FromJsonHelper fromApiJsonHelper; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java index 1b0a08345..7175e0dd8 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java @@ -261,7 +261,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ final String sql = getAddSql(columnHeaders, dataTableName, getFKField(appTable), appTableId, dataParams); - this.jdbcTemplate.update(sql); + this.jdbcTemplate.update(sql); return commandProcessingResult; // @@ -759,10 +759,9 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ final Long id) { final String appTable = queryForApplicationTableName(dataTableName); - if(!appTable.equalsIgnoreCase("m_product_loan") && !appTable.equalsIgnoreCase("m_savings_product")) - { - checkMainResourceExistsWithinScope(appTable, appTableId); - } + + checkMainResourceExistsWithinScope(appTable, appTableId); + final List columnHeaders = this.genericDataService.fillResultsetColumnHeaders(dataTableName); @@ -819,6 +818,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ Long clientId = getLongSqlRowSet(rs, "clientId"); Long savingsId = getLongSqlRowSet(rs, "savingsId"); Long LoanId = getLongSqlRowSet(rs, "loanId"); + Long entityId = getLongSqlRowSet(rs, "entityId"); if (rs.next()) { throw new DatatableSystemErrorException("System Error: More than one row returned from data scoping query"); } @@ -827,7 +827,8 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ .withGroupId(groupId) // .withClientId(clientId) // .withSavingsId(savingsId) // - .withLoanId(LoanId) // + .withLoanId(LoanId) + .withEntityId(entityId)// .build(); } @@ -854,7 +855,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ */ if (appTable.equalsIgnoreCase("m_loan")) { scopedSQL = "select distinctrow x.* from (" - + " (select o.id as officeId, l.group_id as groupId, l.client_id as clientId, null as savingsId, l.id as loanId from m_loan l " + + " (select o.id as officeId, l.group_id as groupId, l.client_id as clientId, null as savingsId, l.id as loanId, null as entityId from m_loan l " + " join m_client c on c.id = l.client_id " + " join m_office o on o.id = c.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() @@ -863,13 +864,13 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ + appTableId + ")" + " union all " - + " (select o.id as officeId, l.group_id as groupId, l.client_id as clientId, null as savingsId, l.id as loanId from m_loan l " + + " (select o.id as officeId, l.group_id as groupId, l.client_id as clientId, null as savingsId, l.id as loanId, null as entityId from m_loan l " + " join m_group g on g.id = l.group_id " + " join m_office o on o.id = g.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() + "%'" + " where l.id = " + appTableId + ")" + " ) x"; } if (appTable.equalsIgnoreCase("m_savings_account")) { scopedSQL = "select distinctrow x.* from (" - + " (select o.id as officeId, s.group_id as groupId, s.client_id as clientId, s.id as savingsId, null as loanId from m_savings_account s " + + " (select o.id as officeId, s.group_id as groupId, s.client_id as clientId, s.id as savingsId, null as loanId, null as entityId from m_savings_account s " + " join m_client c on c.id = s.client_id " + " join m_office o on o.id = c.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() @@ -878,24 +879,29 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ + appTableId + ")" + " union all " - + " (select o.id as officeId, s.group_id as groupId, s.client_id as clientId, s.id as savingsId, null as loanId from m_savings_account s " + + " (select o.id as officeId, s.group_id as groupId, s.client_id as clientId, s.id as savingsId, null as loanId, null as entityId from m_savings_account s " + " join m_group g on g.id = s.group_id " + " join m_office o on o.id = g.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() + "%'" + " where s.id = " + appTableId + ")" + " ) x"; } if (appTable.equalsIgnoreCase("m_client")) { - scopedSQL = "select o.id as officeId, null as groupId, c.id as clientId, null as savingsId, null as loanId from m_client c " + scopedSQL = "select o.id as officeId, null as groupId, c.id as clientId, null as savingsId, null as loanId, null as entityId from m_client c " + " join m_office o on o.id = c.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() + "%'" + " where c.id = " + appTableId; } if (appTable.equalsIgnoreCase("m_group")) { - scopedSQL = "select o.id as officeId, g.id as groupId, null as clientId, null as savingsId, null as loanId from m_group g " + scopedSQL = "select o.id as officeId, g.id as groupId, null as clientId, null as savingsId, null as loanId, null as entityId from m_group g " + " join m_office o on o.id = g.office_id and o.hierarchy like '" + currentUser.getOffice().getHierarchy() + "%'" + " where g.id = " + appTableId; } if (appTable.equalsIgnoreCase("m_office")) { - scopedSQL = "select o.id as officeId, null as groupId, null as clientId, null as savingsId, null as loanId from m_office o " + scopedSQL = "select o.id as officeId, null as groupId, null as clientId, null as savingsId, null as loanId from, null as entityId m_office o " + " where o.hierarchy like '" + currentUser.getOffice().getHierarchy() + "%'" + " and o.id = " + appTableId; } + + if (appTable.equalsIgnoreCase("m_product_loan") || appTable.equalsIgnoreCase("m_savings_product")) { + scopedSQL = "select null as officeId, null as groupId, null as clientId, null as savingsId, null as loanId, p.id as entityId from " + appTable + + " as p WHERE p.id = " + appTableId; + } if (scopedSQL == null) { throw new PlatformDataIntegrityException("error.msg.invalid.dataScopeCriteria", "Application Table: " + appTable + " not catered for in data Scoping"); }