wip:fixing collection sheet bugs

This commit is contained in:
ashok-conflux
2013-04-12 17:20:04 +05:30
parent 6274217e9d
commit 850981d4a9
3 changed files with 48 additions and 15 deletions
@@ -156,13 +156,13 @@ public class CalendarCommandFromApiJsonDeserializer extends AbstractFromApiJsonD
if (this.fromApiJsonHelper.parameterExists(CALENDAR_SUPPORTED_PARAMETERS.FIRST_REMINDER.getValue(), element)) {
final Integer firstReminder = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(
CALENDAR_SUPPORTED_PARAMETERS.FIRST_REMINDER.getValue(), element);
baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.FIRST_REMINDER.getValue()).value(firstReminder).notNull();
baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.FIRST_REMINDER.getValue()).value(firstReminder).ignoreIfNull().integerGreaterThanZero();
}
if (this.fromApiJsonHelper.parameterExists(CALENDAR_SUPPORTED_PARAMETERS.SECOND_REMINDER.getValue(), element)) {
final Integer secondReminder = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(
CALENDAR_SUPPORTED_PARAMETERS.SECOND_REMINDER.getValue(), element);
baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.SECOND_REMINDER.getValue()).value(secondReminder).notNull();
baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.SECOND_REMINDER.getValue()).value(secondReminder).ignoreIfNull().integerGreaterThanZero();
}
if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist",
@@ -1,7 +1,9 @@
package org.mifosplatform.portfolio.collectionsheet.api;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.ws.rs.Consumes;
@@ -15,12 +17,16 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import org.apache.commons.lang.StringUtils;
import org.joda.time.LocalDate;
import org.mifosplatform.commands.domain.CommandWrapper;
import org.mifosplatform.commands.service.CommandWrapperBuilder;
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
import org.mifosplatform.infrastructure.core.data.ApiParameterError;
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
import org.mifosplatform.infrastructure.core.data.DataValidatorBuilder;
import org.mifosplatform.infrastructure.core.exception.PlatformApiDataValidationException;
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.core.service.DateUtils;
@@ -46,7 +52,7 @@ public class CollectionSheetApiResource {
/*
* dueDate format is ISO 8601 Calendar Date (YYYYMMDD)
*/
private final String datePattern = "YYYYMMDD";
private final String datePattern = "yyyyMMdd";
private final PlatformSecurityContext context;
private final CollectionSheetReadPlatformService collectionSheetReadPlatformService;
private final ToApiJsonSerializer<JLGCollectionSheetData> toApiJsonSerializer;
@@ -72,13 +78,37 @@ public class CollectionSheetApiResource {
@QueryParam("dueDate") final String dueDate) {
this.context.authenticatedUser().validateHasReadPermission("COLLECTIONSHEET");
final LocalDate localDate = DateUtils.parseLocalDate(dueDate, this.datePattern);
validateRequest(groupId, dueDate);
LocalDate localDate = null;
if(StringUtils.isBlank(dueDate)){
localDate = DateUtils.getLocalDateOfTenant();
}else{
localDate = DateUtils.parseLocalDate(dueDate, datePattern);
}
final JLGCollectionSheetData collectionSheet = this.collectionSheetReadPlatformService.retriveCollectionSheet(localDate, groupId);
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, collectionSheet, this.COLLECTIONSHEET_DATA_PARAMETERS);
}
private void validateRequest(Long groupId, String dueDate) {
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("collectionsheet");
baseDataValidator.reset().parameter("groupId").value(groupId).notBlank().longGreaterThanZero();
baseDataValidator.reset().parameter("dueDate").value(dueDate).notBlank();
if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist",
"Validation errors exist.", dataValidationErrors); }
}
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@@ -3,6 +3,8 @@ package org.mifosplatform.portfolio.collectionsheet.service;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -145,15 +147,15 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
// FIXME Need to check last loan is added under previous
// client/group or new client / previous group or new client / new
// group
final ClientLoansData lastClientLoansData = corrCollectioSheetFlatData.getClientLoansData();
lastClientLoansData.setLoans(loanDueDatas);
clientLoansDatas.add(lastClientLoansData);
final JLGClientsData jlgClientsData = corrCollectioSheetFlatData.getJLGClientsData();
jlgClientsData.setClients(clientLoansDatas);
jlgClientsDatas.add(jlgClientsData);
if(corrCollectioSheetFlatData != null){
final ClientLoansData lastClientLoansData = corrCollectioSheetFlatData.getClientLoansData();
lastClientLoansData.setLoans(loanDueDatas);
clientLoansDatas.add(lastClientLoansData);
final JLGClientsData jlgClientsData = corrCollectioSheetFlatData.getJLGClientsData();
jlgClientsData.setClients(clientLoansDatas);
jlgClientsDatas.add(jlgClientsData);
}
jlgCollectionSheetData = new JLGCollectionSheetData(dueDate, loanProducts, jlgClientsDatas);
}
@@ -167,9 +169,10 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
final JLGCollectionSheetFaltDataMapper mapper = new JLGCollectionSheetFaltDataMapper();
final String sql = mapper.collectionSheetSchema();
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
final String dueDateStr = df.format(dueDate.toDate());
final SqlParameterSource namedParameters = new MapSqlParameterSource().addValue("hierarchy", groupHierarchy)
.addValue("dueDate", dueDate).addValue("officeHierarchy", officeHierarchy);
.addValue("dueDate", dueDateStr).addValue("officeHierarchy", officeHierarchy);
return this.namedParameterjdbcTemplate.query(sql, namedParameters, mapper);
}