Handle exception for retrieving non existed resource for deposit product

This commit is contained in:
Madhukar
2013-02-27 12:16:12 +05:30
parent 998c9bb3b2
commit d322e70649
4 changed files with 101 additions and 30 deletions
+88 -10
View File
@@ -1041,16 +1041,26 @@
<td><a href="#audit_searchtemplate">Retrieve Audit
Search Data</a></td>
</tr>
<tr class="alt">
<tr>
<td>depositproducts/template</td>
<td><a href="#depositproducts_template">Retrieve Deposit
Product Details Template</a></td>
</tr>
<tr class="alt">
<td>loanproducts/template</td>
<td>savingproducts/template</td>
<td><a href="#savingproducts_template">Retrieve Saving
Product Details Template</a></td>
</tr>
<tr>
<td>depositaccounts/template</td>
<td><a href="#fixeddeposits_template">Retrieve Deposit
Account Details Template</a></td>
</tr>
<tr class="alt">
<td>savingaccounts/template</td>
<td><a href="#savingaccounts_template">Retrieve Saving
Account Details Template</a></td>
</tr>
</table>
</div>
</div>
@@ -1102,14 +1112,6 @@
</tr>
</table></td>
</tr>
<tr class="alt">
<td>Work in Progress</a></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="alt">
<td><a href="#fixeddeposits">FIXED DEPOSITS</a></td>
<td>depositaccounts</td>
@@ -11291,6 +11293,82 @@ Content-Type: application/json
<td></td>
<td></td>
</tr>
<tr class="alt">
<td><a href="#depositproducts">DEPOSIT PRODUCT</a></td>
<td>depositproducts</td>
<td><a href="#depositproducts_create">Create a Deposit product</a></td>
<td><a href="#depositproducts_list">List Deposit products</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>depositproducts/{prodcutId}</td>
<td></td>
<td><a href="#depositproducts_retrieve">Retrieve a Deposit product</a></td>
<td><a href="#depositproducts_update">Update a Deposit product</a></td>
<td><a href="#depositproducts_delete">Delete a Deposit product</a></td>
</tr>
<tr class="alt">
<td><a href="#savingproducts">SAVING PRODUCT</a></td>
<td>savingproducts</td>
<td><a href="#savingproducts_create">Create a Saving product</a></td>
<td><a href="#savingproducts_list">List Saving products</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>savingproducts/{prodcutId}</td>
<td></td>
<td><a href="#savingproducts_retrieve">Retrieve a Saving procduct</a></td>
<td><a href="#savingproducts_update">Update a Saving product</a></td>
<td><a href="#savingproducts_delete">Delete a Saving product</a></td>
</tr>
<tr class="alt">
<td><a href="#fixeddeposits">FIXED DEPOSITS</a></td>
<td>depositaccounts</td>
<td><a href="#fixeddeposits_create">Create a New Deposit
Application</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>depositaccounts/{accountId}</td>
<td><a href="#fixeddeposits_approve_etc">Approve, Undo Approve,
Interest withdraw, Reject a Deposit Application or Withdraw a
Deposit Application</a></td>
<td><a href="#fixeddeposits_retrieve">Retrieve a Deposit
Application</a></td>
<td></td>
<td><a href="#fixeddeposits_delete">Delete a Deposit
Application</a></td>
</tr>
<tr class="alt">
<td><a href="#savingaccounts">SAVING ACCOUNTS</a></td>
<td>savingaccounts</td>
<td><a href="#savingaccounts_create">Create a New Saving
Application</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>savingaccounts/{accountId}</td>
<td><a href="#savingaccounts_approve_etc">Approve, Undo Approve,
Interest withdraw, Reject a Saving Application or Withdraw a
Saving Application</a></td>
<td><a href="#savingaccounts_retrieve">Retrieve a Saving
Application</a></td>
<td></td>
<td><a href="#savingaccounts_delete">Delete a Saving
Application</a></td>
</tr>
</table>
<br>
<table class=matrixHeading>
@@ -37,7 +37,6 @@ import org.mifosplatform.organisation.monetary.service.CurrencyReadPlatformServi
import org.mifosplatform.portfolio.loanproduct.domain.PeriodFrequencyType;
import org.mifosplatform.portfolio.savingsaccountproduct.service.SavingsDepositEnumerations;
import org.mifosplatform.portfolio.savingsdepositproduct.data.DepositProductData;
import org.mifosplatform.portfolio.savingsdepositproduct.exception.DepositProductNotFoundException;
import org.mifosplatform.portfolio.savingsdepositproduct.service.DepositProductReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
@@ -133,9 +132,6 @@ public class DepositProductsApiResource {
context.authenticatedUser().validateHasReadPermission(entityType);
DepositProductData productData = this.depositProductReadPlatformService.retrieveDepositProductData(productId);
if (productData.isDeleted()) {
throw new DepositProductNotFoundException(productId);
}
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
if (settings.isTemplate()) {
@@ -45,7 +45,6 @@ public class DepositProductData {
private final Collection<CurrencyData> currencyOptions;
private final List<EnumOptionData> interestCompoundedEveryPeriodTypeOptions;
private final Boolean isDeleted;
public DepositProductData(final Long id, final String externalId,
final String name, final String description, final String currencyCode, final Integer digitsAfterDecimal,
@@ -54,7 +53,7 @@ public class DepositProductData {
final BigDecimal maturityMaxInterestRate, final Integer interestCompoundedEvery,
final EnumOptionData interestCompoundedEveryPeriodType, final boolean renewalAllowed, final boolean preClosureAllowed,
final BigDecimal preClosureInterestRate, final boolean interestCompoundingAllowed, final boolean isLockinPeriodAllowed,
final Integer lockinPeriod, final EnumOptionData lockinPeriodType,final CurrencyData currencyData, final Boolean isDeleted) {
final Integer lockinPeriod, final EnumOptionData lockinPeriodType,final CurrencyData currencyData) {
this.id = id;
this.externalId = externalId;
@@ -82,7 +81,6 @@ public class DepositProductData {
this.currency = currencyData;
this.currencyOptions = null;
this.interestCompoundedEveryPeriodTypeOptions = null;
this.isDeleted = isDeleted;
}
public DepositProductData(final Collection<CurrencyData> currencyOptions,
@@ -117,7 +115,6 @@ public class DepositProductData {
this.currencyOptions = currencyOptions;
this.interestCompoundedEveryPeriodTypeOptions = interestCompoundedEveryPeriodTypeOptions;
this.isDeleted = false;
}
public DepositProductData(final DepositProductData product, final Collection<CurrencyData> currencyOptions,
@@ -156,7 +153,6 @@ public class DepositProductData {
this.currency = product.currency;
}
this.isDeleted = product.isDeleted;
}
public Long getId() {
@@ -251,8 +247,4 @@ public class DepositProductData {
return lockinPeriodType;
}
public Boolean isDeleted() {
return this.isDeleted;
}
}
@@ -20,7 +20,9 @@ import org.mifosplatform.portfolio.loanproduct.domain.PeriodFrequencyType;
import org.mifosplatform.portfolio.savingsaccountproduct.service.SavingsDepositEnumerations;
import org.mifosplatform.portfolio.savingsdepositproduct.data.DepositProductData;
import org.mifosplatform.portfolio.savingsdepositproduct.data.DepositProductLookup;
import org.mifosplatform.portfolio.savingsdepositproduct.exception.DepositProductNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
@@ -58,10 +60,14 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead
@Override
public DepositProductData retrieveDepositProductData(Long productId) {
DepositProductMapper depositProductMapper = new DepositProductMapper();
String sql = "select " + depositProductMapper.depositProductSchema() + " where dp.id = ? ";
return this.jdbcTemplate.queryForObject(sql, depositProductMapper, new Object[] { productId });
try{
this.context.authenticatedUser();
DepositProductMapper depositProductMapper = new DepositProductMapper();
String sql = "select " + depositProductMapper.depositProductSchema() + " where dp.id = ? and dp.is_deleted=0";
return this.jdbcTemplate.queryForObject(sql, depositProductMapper, new Object[] { productId });
} catch (EmptyResultDataAccessException e){
throw new DepositProductNotFoundException(productId);
}
}
@Override
@@ -84,7 +90,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead
+ "dp.maturity_min_interest_rate as maturityMinInterestRate, dp.maturity_max_interest_rate as maturityMaxInterestRate, "
+ "dp.is_renewal_allowed as canRenew, dp.is_preclosure_allowed as canPreClose, dp.pre_closure_interest_rate as preClosureInterestRate, "
+ "dp.is_lock_in_period_allowed as isLockinPeriodAllowed, dp.lock_in_period as lockinPeriod, dp.lock_in_period_type as lockinPeriodType, "
+ "curr.name as currencyName, curr.internationalized_name_code as currencyNameCode, curr.display_symbol as currencyDisplaySymbol, dp.is_deleted as isDeleted "
+ "curr.name as currencyName, curr.internationalized_name_code as currencyNameCode, curr.display_symbol as currencyDisplaySymbol "
+ "from m_product_deposit dp join m_currency curr on curr.code = dp.currency_code ";
}
@@ -126,12 +132,11 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead
Integer lockinPeriod = JdbcSupport.getInteger(rs, "lockinPeriod");
Integer lockinPeriodTypeValue = JdbcSupport.getInteger(rs, "lockinPeriodType");
EnumOptionData lockinPeriodType = SavingsDepositEnumerations.interestCompoundingPeriodType(lockinPeriodTypeValue);
Boolean isDeleted = rs.getBoolean("isDeleted");
return new DepositProductData(id, exernalId, name, description, currencyCode, currencyDigits,
minimumBalance, maximumBalance, tenureMonths, maturityDefaultInterestRate, maturityMinInterestRate,
maturityMaxInterestRate, interestCompoundedEvery, interestCompoundedEveryPeriodType, canRenew, canPreClose,
preClosureInterestRate, interestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType, currencyData,isDeleted);
preClosureInterestRate, interestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType, currencyData);
}
}