added check for blank feilds

This commit is contained in:
Pramod Nuthakki
2013-11-25 11:28:33 +05:30
parent a7632d4fae
commit f8da9b4072
@@ -187,10 +187,10 @@ public class LoanProduct extends AbstractPersistable<Long> {
*/ */
private static void assembleInterestRateVariations(final JsonCommand command, private static void assembleInterestRateVariations(final JsonCommand command,
final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) { final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) {
assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.INTERESTRATE.getValue(), assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.INTERESTRATE.getValue(),
LoanProductConstants.interestRateVariationsForBorrowerCycleParameterName); LoanProductConstants.interestRateVariationsForBorrowerCycleParameterName);
} }
/** /**
* @param command * @param command
@@ -198,8 +198,8 @@ public class LoanProduct extends AbstractPersistable<Long> {
*/ */
private static void assembleRepaymentVariations(final JsonCommand command, private static void assembleRepaymentVariations(final JsonCommand command,
final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) { final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) {
assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.REPAYMENT.getValue(), assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.REPAYMENT.getValue(),
LoanProductConstants.numberOfRepaymentVariationsForBorrowerCycleParameterName); LoanProductConstants.numberOfRepaymentVariationsForBorrowerCycleParameterName);
} }
@@ -209,15 +209,15 @@ public class LoanProduct extends AbstractPersistable<Long> {
*/ */
private static void assemblePrincipalVariations(final JsonCommand command, private static void assemblePrincipalVariations(final JsonCommand command,
final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) { final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations) {
assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.PRINCIPAL.getValue(), assembleVaritions(command, loanProductBorrowerCycleVariations, LoanProductParamType.PRINCIPAL.getValue(),
LoanProductConstants.principalVariationsForBorrowerCycleParameterName); LoanProductConstants.principalVariationsForBorrowerCycleParameterName);
} }
private static void assembleVaritions(final JsonCommand command, private static void assembleVaritions(final JsonCommand command,
final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations,Integer paramType, final Set<LoanProductBorrowerCycleVariations> loanProductBorrowerCycleVariations, Integer paramType,
String variationParameterName){ String variationParameterName) {
if (command.parameterExists(variationParameterName)) { if (command.parameterExists(variationParameterName)) {
final JsonArray variationArray= command.arrayOfParameterNamed(variationParameterName); final JsonArray variationArray = command.arrayOfParameterNamed(variationParameterName);
if (variationArray != null && variationArray.size() > 0) { if (variationArray != null && variationArray.size() > 0) {
int i = 0; int i = 0;
do { do {
@@ -227,25 +227,31 @@ public class LoanProduct extends AbstractPersistable<Long> {
BigDecimal maxValue = null; BigDecimal maxValue = null;
Integer cycleNumber = null; Integer cycleNumber = null;
Integer valueUsageCondition = null; Integer valueUsageCondition = null;
if (jsonObject.has(LoanProductConstants.defaultValueParameterName) && jsonObject.get(LoanProductConstants.defaultValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.defaultValueParameterName)
&& jsonObject.get(LoanProductConstants.defaultValueParameterName).isJsonPrimitive()) {
defaultValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.defaultValueParameterName).getAsBigDecimal(); defaultValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.defaultValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.minValueParameterName) && jsonObject.get(LoanProductConstants.minValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.minValueParameterName)
&& jsonObject.get(LoanProductConstants.minValueParameterName).isJsonPrimitive()) {
minValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.minValueParameterName).getAsBigDecimal(); minValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.minValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.maxValueParameterName) && jsonObject.get(LoanProductConstants.maxValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.maxValueParameterName)
&& jsonObject.get(LoanProductConstants.maxValueParameterName).isJsonPrimitive()) {
maxValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.maxValueParameterName).getAsBigDecimal(); maxValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.maxValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.borrowerCycleNumberParamName) && jsonObject.get(LoanProductConstants.borrowerCycleNumberParamName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.borrowerCycleNumberParamName)
&& jsonObject.get(LoanProductConstants.borrowerCycleNumberParamName).isJsonPrimitive()) {
cycleNumber = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleNumberParamName).getAsInt(); cycleNumber = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleNumberParamName).getAsInt();
} }
if (jsonObject.has(LoanProductConstants.valueConditionTypeParamName) && jsonObject.get(LoanProductConstants.valueConditionTypeParamName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.valueConditionTypeParamName)
&& jsonObject.get(LoanProductConstants.valueConditionTypeParamName).isJsonPrimitive()) {
valueUsageCondition = jsonObject.getAsJsonPrimitive(LoanProductConstants.valueConditionTypeParamName).getAsInt(); valueUsageCondition = jsonObject.getAsJsonPrimitive(LoanProductConstants.valueConditionTypeParamName).getAsInt();
} }
LoanProductBorrowerCycleVariations borrowerCycleVariations= new LoanProductBorrowerCycleVariations(cycleNumber, paramType, valueUsageCondition, minValue, maxValue, defaultValue); LoanProductBorrowerCycleVariations borrowerCycleVariations = new LoanProductBorrowerCycleVariations(cycleNumber,
paramType, valueUsageCondition, minValue, maxValue, defaultValue);
loanProductBorrowerCycleVariations.add(borrowerCycleVariations); loanProductBorrowerCycleVariations.add(borrowerCycleVariations);
i++; i++;
}while (i < variationArray.size()); } while (i < variationArray.size());
} }
} }
} }
@@ -253,26 +259,30 @@ public class LoanProduct extends AbstractPersistable<Long> {
private Map<String, Object> updateBorrowerCycleVariations(final JsonCommand command) { private Map<String, Object> updateBorrowerCycleVariations(final JsonCommand command) {
final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20); final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20);
List<Long> variationIds = fetchAllVariationIds(); List<Long> variationIds = fetchAllVariationIds();
updateBorrowerCycleVaritions(command, LoanProductParamType.PRINCIPAL.getValue(), LoanProductConstants.principalVariationsForBorrowerCycleParameterName, actualChanges, variationIds); updateBorrowerCycleVaritions(command, LoanProductParamType.PRINCIPAL.getValue(),
updateBorrowerCycleVaritions(command, LoanProductParamType.INTERESTRATE.getValue(), LoanProductConstants.interestRateVariationsForBorrowerCycleParameterName, actualChanges, variationIds); LoanProductConstants.principalVariationsForBorrowerCycleParameterName, actualChanges, variationIds);
updateBorrowerCycleVaritions(command, LoanProductParamType.REPAYMENT.getValue(), LoanProductConstants.numberOfRepaymentVariationsForBorrowerCycleParameterName, actualChanges, variationIds); updateBorrowerCycleVaritions(command, LoanProductParamType.INTERESTRATE.getValue(),
for(Long id:variationIds){ LoanProductConstants.interestRateVariationsForBorrowerCycleParameterName, actualChanges, variationIds);
updateBorrowerCycleVaritions(command, LoanProductParamType.REPAYMENT.getValue(),
LoanProductConstants.numberOfRepaymentVariationsForBorrowerCycleParameterName, actualChanges, variationIds);
for (Long id : variationIds) {
this.borrowerCycleVariations.remove(fetchLoanProductBorrowerCycleVariationById(id)); this.borrowerCycleVariations.remove(fetchLoanProductBorrowerCycleVariationById(id));
} }
return actualChanges; return actualChanges;
} }
private List<Long> fetchAllVariationIds(){
private List<Long> fetchAllVariationIds() {
List<Long> list = new ArrayList<Long>(); List<Long> list = new ArrayList<Long>();
for (LoanProductBorrowerCycleVariations cycleVariation : this.borrowerCycleVariations) { for (LoanProductBorrowerCycleVariations cycleVariation : this.borrowerCycleVariations) {
list.add(cycleVariation.getId()); list.add(cycleVariation.getId());
} }
return list; return list;
} }
private void updateBorrowerCycleVaritions(final JsonCommand command,Integer paramType, private void updateBorrowerCycleVaritions(final JsonCommand command, Integer paramType, String variationParameterName,
String variationParameterName,final Map<String, Object> actualChanges, List<Long> variationIds){ final Map<String, Object> actualChanges, List<Long> variationIds) {
if (command.parameterExists(variationParameterName)) { if (command.parameterExists(variationParameterName)) {
final JsonArray variationArray= command.arrayOfParameterNamed(variationParameterName); final JsonArray variationArray = command.arrayOfParameterNamed(variationParameterName);
if (variationArray != null && variationArray.size() > 0) { if (variationArray != null && variationArray.size() > 0) {
int i = 0; int i = 0;
do { do {
@@ -283,44 +293,53 @@ public class LoanProduct extends AbstractPersistable<Long> {
Integer cycleNumber = null; Integer cycleNumber = null;
Integer valueUsageCondition = null; Integer valueUsageCondition = null;
Long id = null; Long id = null;
if (jsonObject.has(LoanProductConstants.defaultValueParameterName) && jsonObject.get(LoanProductConstants.defaultValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.defaultValueParameterName)
&& jsonObject.get(LoanProductConstants.defaultValueParameterName).isJsonPrimitive()) {
defaultValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.defaultValueParameterName).getAsBigDecimal(); defaultValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.defaultValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.minValueParameterName) && jsonObject.get(LoanProductConstants.minValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.minValueParameterName)
&& jsonObject.get(LoanProductConstants.minValueParameterName).isJsonPrimitive()
&& StringUtils.isNotBlank((jsonObject.get(LoanProductConstants.minValueParameterName).getAsString()))) {
minValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.minValueParameterName).getAsBigDecimal(); minValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.minValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.maxValueParameterName) && jsonObject.get(LoanProductConstants.maxValueParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.maxValueParameterName)
&& jsonObject.get(LoanProductConstants.maxValueParameterName).isJsonPrimitive()
&& StringUtils.isNotBlank((jsonObject.get(LoanProductConstants.maxValueParameterName).getAsString()))) {
maxValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.maxValueParameterName).getAsBigDecimal(); maxValue = jsonObject.getAsJsonPrimitive(LoanProductConstants.maxValueParameterName).getAsBigDecimal();
} }
if (jsonObject.has(LoanProductConstants.borrowerCycleNumberParamName) && jsonObject.get(LoanProductConstants.borrowerCycleNumberParamName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.borrowerCycleNumberParamName)
&& jsonObject.get(LoanProductConstants.borrowerCycleNumberParamName).isJsonPrimitive()) {
cycleNumber = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleNumberParamName).getAsInt(); cycleNumber = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleNumberParamName).getAsInt();
} }
if (jsonObject.has(LoanProductConstants.valueConditionTypeParamName) && jsonObject.get(LoanProductConstants.valueConditionTypeParamName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.valueConditionTypeParamName)
&& jsonObject.get(LoanProductConstants.valueConditionTypeParamName).isJsonPrimitive()) {
valueUsageCondition = jsonObject.getAsJsonPrimitive(LoanProductConstants.valueConditionTypeParamName).getAsInt(); valueUsageCondition = jsonObject.getAsJsonPrimitive(LoanProductConstants.valueConditionTypeParamName).getAsInt();
} }
if (jsonObject.has(LoanProductConstants.borrowerCycleIdParameterName) && jsonObject.get(LoanProductConstants.borrowerCycleIdParameterName).isJsonPrimitive()) { if (jsonObject.has(LoanProductConstants.borrowerCycleIdParameterName)
&& jsonObject.get(LoanProductConstants.borrowerCycleIdParameterName).isJsonPrimitive()
&& StringUtils.isNotBlank((jsonObject.get(LoanProductConstants.borrowerCycleIdParameterName).getAsString()))) {
id = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleIdParameterName).getAsLong(); id = jsonObject.getAsJsonPrimitive(LoanProductConstants.borrowerCycleIdParameterName).getAsLong();
} }
LoanProductBorrowerCycleVariations borrowerCycleVariations= new LoanProductBorrowerCycleVariations(cycleNumber, paramType, valueUsageCondition, minValue, maxValue, defaultValue); LoanProductBorrowerCycleVariations borrowerCycleVariations = new LoanProductBorrowerCycleVariations(cycleNumber,
if(id == null){ paramType, valueUsageCondition, minValue, maxValue, defaultValue);
if (id == null) {
borrowerCycleVariations.updateLoanProduct(this); borrowerCycleVariations.updateLoanProduct(this);
this.borrowerCycleVariations.add(borrowerCycleVariations); this.borrowerCycleVariations.add(borrowerCycleVariations);
actualChanges.put("borrowerCycleParamType", paramType); actualChanges.put("borrowerCycleParamType", paramType);
}else{ } else {
variationIds.remove(id); variationIds.remove(id);
LoanProductBorrowerCycleVariations existingCycleVariation = fetchLoanProductBorrowerCycleVariationById(id); LoanProductBorrowerCycleVariations existingCycleVariation = fetchLoanProductBorrowerCycleVariationById(id);
if(!existingCycleVariation.equals(borrowerCycleVariations)){ if (!existingCycleVariation.equals(borrowerCycleVariations)) {
existingCycleVariation.copy(borrowerCycleVariations); existingCycleVariation.copy(borrowerCycleVariations);
actualChanges.put("borrowerCycleId", id); actualChanges.put("borrowerCycleId", id);
} }
} }
i++; i++;
}while (i < variationArray.size()); } while (i < variationArray.size());
} }
} }
} }
private void clearVariations(LoanProductParamType paramType, boolean clearAll) { private void clearVariations(LoanProductParamType paramType, boolean clearAll) {
if (clearAll) { if (clearAll) {
this.borrowerCycleVariations.clear(); this.borrowerCycleVariations.clear();
@@ -508,7 +527,7 @@ public class LoanProduct extends AbstractPersistable<Long> {
if (this.useBorrowerCycle) { if (this.useBorrowerCycle) {
actualChanges.putAll(updateBorrowerCycleVariations(command)); actualChanges.putAll(updateBorrowerCycleVariations(command));
}else{ } else {
clearVariations(null, true); clearVariations(null, true);
} }
final String dateFormatAsInput = command.dateFormat(); final String dateFormatAsInput = command.dateFormat();
@@ -645,11 +664,11 @@ public class LoanProduct extends AbstractPersistable<Long> {
public boolean useBorrowerCycle() { public boolean useBorrowerCycle() {
return this.useBorrowerCycle; return this.useBorrowerCycle;
} }
public LoanProductBorrowerCycleVariations fetchLoanProductBorrowerCycleVariationById(Long id){ public LoanProductBorrowerCycleVariations fetchLoanProductBorrowerCycleVariationById(Long id) {
LoanProductBorrowerCycleVariations borrowerCycleVariation = null; LoanProductBorrowerCycleVariations borrowerCycleVariation = null;
for (LoanProductBorrowerCycleVariations cycleVariation : this.borrowerCycleVariations) { for (LoanProductBorrowerCycleVariations cycleVariation : this.borrowerCycleVariations) {
if(id.equals(cycleVariation.getId())){ if (id.equals(cycleVariation.getId())) {
borrowerCycleVariation = cycleVariation; borrowerCycleVariation = cycleVariation;
break; break;
} }
@@ -707,7 +726,7 @@ public class LoanProduct extends AbstractPersistable<Long> {
&& cycleVariation.getValueConditionType().equals(LoanProductValueConditionType.GRETERTHAN)) { && cycleVariation.getValueConditionType().equals(LoanProductValueConditionType.GRETERTHAN)) {
switch (cycleVariation.getParamType()) { switch (cycleVariation.getParamType()) {
case PRINCIPAL: case PRINCIPAL:
if(principalCycleUsed < cycleVariation.getBorrowerCycleNumber()){ if (principalCycleUsed < cycleVariation.getBorrowerCycleNumber()) {
borrowerCycleVariations.put(LoanProductConstants.principal, cycleVariation.getDefaultValue()); borrowerCycleVariations.put(LoanProductConstants.principal, cycleVariation.getDefaultValue());
borrowerCycleVariations.put(LoanProductConstants.minPrincipal, cycleVariation.getMinValue()); borrowerCycleVariations.put(LoanProductConstants.minPrincipal, cycleVariation.getMinValue());
borrowerCycleVariations.put(LoanProductConstants.maxPrincipal, cycleVariation.getMaxValue()); borrowerCycleVariations.put(LoanProductConstants.maxPrincipal, cycleVariation.getMaxValue());
@@ -715,7 +734,7 @@ public class LoanProduct extends AbstractPersistable<Long> {
} }
break; break;
case INTERESTRATE: case INTERESTRATE:
if(interestCycleUsed < cycleVariation.getBorrowerCycleNumber()){ if (interestCycleUsed < cycleVariation.getBorrowerCycleNumber()) {
borrowerCycleVariations.put(LoanProductConstants.interestRatePerPeriod, cycleVariation.getDefaultValue()); borrowerCycleVariations.put(LoanProductConstants.interestRatePerPeriod, cycleVariation.getDefaultValue());
borrowerCycleVariations.put(LoanProductConstants.minInterestRatePerPeriod, cycleVariation.getMinValue()); borrowerCycleVariations.put(LoanProductConstants.minInterestRatePerPeriod, cycleVariation.getMinValue());
borrowerCycleVariations.put(LoanProductConstants.maxInterestRatePerPeriod, cycleVariation.getMaxValue()); borrowerCycleVariations.put(LoanProductConstants.maxInterestRatePerPeriod, cycleVariation.getMaxValue());
@@ -723,7 +742,7 @@ public class LoanProduct extends AbstractPersistable<Long> {
} }
break; break;
case REPAYMENT: case REPAYMENT:
if(repaymentCycleUsed < cycleVariation.getBorrowerCycleNumber()){ if (repaymentCycleUsed < cycleVariation.getBorrowerCycleNumber()) {
borrowerCycleVariations.put(LoanProductConstants.numberOfRepayments, cycleVariation.getDefaultValue()); borrowerCycleVariations.put(LoanProductConstants.numberOfRepayments, cycleVariation.getDefaultValue());
borrowerCycleVariations.put(LoanProductConstants.minNumberOfRepayments, cycleVariation.getMinValue()); borrowerCycleVariations.put(LoanProductConstants.minNumberOfRepayments, cycleVariation.getMinValue());
borrowerCycleVariations.put(LoanProductConstants.maxNumberOfRepayments, cycleVariation.getMaxValue()); borrowerCycleVariations.put(LoanProductConstants.maxNumberOfRepayments, cycleVariation.getMaxValue());