From 3951fdc3830b080a27c8c8f29494eb391b3cbad8 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Fri, 20 Jul 2012 17:55:52 +0100 Subject: [PATCH] fix office transactions data and adjust loan transactions data. --- .../api/data/OfficeTransactionData.java | 6 ++-- .../ApiDataConversionServiceImpl.java | 29 ++++++++++++++++--- .../service/LoanReadPlatformServiceImpl.java | 19 ++++-------- .../OfficeReadPlatformServiceImpl.java | 13 ++------- 4 files changed, 36 insertions(+), 31 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/OfficeTransactionData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/OfficeTransactionData.java index f963f3ed1..0dd4dbb4f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/OfficeTransactionData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/OfficeTransactionData.java @@ -4,10 +4,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.codehaus.jackson.map.annotate.JsonFilter; import org.joda.time.LocalDate; -@JsonFilter("myFilter") public class OfficeTransactionData implements Serializable { private LocalDate transactionDate; @@ -18,8 +16,10 @@ public class OfficeTransactionData implements Serializable { // } - public OfficeTransactionData(final LocalDate transactionDate) { + public OfficeTransactionData(final LocalDate transactionDate, final List allowedOffices, final List currencyOptions) { this.transactionDate = transactionDate; + this.allowedOffices = allowedOffices; + this.currencyOptions = currencyOptions; } public LocalDate getTransactionDate() { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java index 25a93a95a..2874ff6cc 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java @@ -64,7 +64,29 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { @Override public String convertOfficeTransactionDataToJson(final boolean prettyPrint, final Set responseParameters, final OfficeTransactionData... officeTransactions) { - return null; + Set supportedParameters = new HashSet(Arrays.asList("transactionDate", "currencyOptions", "allowedOffices")); + + final Set parameterNamesToSkip = new HashSet(); + + if (!responseParameters.isEmpty()) { + if (!supportedParameters.containsAll(responseParameters)) { + throw new UnsupportedParameterException(new ArrayList(responseParameters)); + } + + parameterNamesToSkip.addAll(supportedParameters); + parameterNamesToSkip.removeAll(responseParameters); + } + + ExclusionStrategy strategy = new ParameterListExclusionStrategy(parameterNamesToSkip); + + GsonBuilder builder = new GsonBuilder().addSerializationExclusionStrategy(strategy); + builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); + if (prettyPrint) { + builder.setPrettyPrinting(); + } + Gson gsonDeserializer = builder.create(); + + return gsonDeserializer.toJson(officeTransactions); } @Override @@ -94,7 +116,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { Gson gsonDeserializer = builder.create(); return gsonDeserializer.toJson(users); - } @Override @@ -573,8 +594,8 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { Set modifiedParameters = new HashSet(); - LocalDate transactionDate = extractLocalDateParameter("paymentDate", requestMap, modifiedParameters); - BigDecimal transactionAmount = extractBigDecimalParameter("paymentAmount", requestMap, modifiedParameters); + LocalDate transactionDate = extractLocalDateParameter("transactionDate", requestMap, modifiedParameters); + BigDecimal transactionAmount = extractBigDecimalParameter("transactionAmount", requestMap, modifiedParameters); String note = extractStringParameter("note", requestMap, modifiedParameters); return new AdjustLoanTransactionCommand(loanId, transactionId, transactionDate, note, transactionAmount); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java index 4a9ff0724..58c5b4835 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java @@ -79,9 +79,10 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { context.authenticatedUser(); LoanMapper rm = new LoanMapper(); + String sql = "select " + rm.loanSchema() + " where l.id = ?"; - return this.jdbcTemplate.queryForObject(sql, rm, - new Object[] { loanId }); + + return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanId }); } catch (EmptyResultDataAccessException e) { throw new LoanNotFoundException(loanId); @@ -240,18 +241,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { workflowData.setAllowedProducts(new ArrayList( loanProducts)); - if (loanProducts.size() == 1) { - Long allowedProductId = workflowData.getAllowedProducts().get(0) - .getId(); - LoanProductData selectedProduct = this.loanProductReadPlatformService - .retrieveLoanProduct(allowedProductId); - - workflowData.setProductId(selectedProduct.getId()); - workflowData.setProductName(selectedProduct.getName()); - workflowData.setSelectedProduct(selectedProduct); - } else { - LoanProductData selectedProduct = findLoanProductById(loanProducts, - productId); + if (productId != null) { + LoanProductData selectedProduct = findLoanProductById(loanProducts, productId); workflowData.setProductId(selectedProduct.getId()); workflowData.setProductName(selectedProduct.getName()); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java index 6de439d96..5468dfdb0 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java @@ -175,16 +175,9 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService public OfficeTransactionData retrieveNewOfficeTransactionDetails() { context.authenticatedUser(); - List parentLookups = new ArrayList( - retrieveAllOfficesForLookup()); - List currencyOptions = currencyReadPlatformService - .retrieveAllowedCurrencies(); + List parentLookups = new ArrayList(retrieveAllOfficesForLookup()); + List currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies(); - OfficeTransactionData officeTransactionData = new OfficeTransactionData( - new LocalDate()); - officeTransactionData.setAllowedOffices(parentLookups); - officeTransactionData.setCurrencyOptions(currencyOptions); - - return officeTransactionData; + return new OfficeTransactionData(new LocalDate(), parentLookups, currencyOptions); } } \ No newline at end of file