diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/DataValidatorBuilder.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/DataValidatorBuilder.java index 5b9d13d8f..e06cd87e4 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/DataValidatorBuilder.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/DataValidatorBuilder.java @@ -21,7 +21,7 @@ public class DataValidatorBuilder { private Object value; private boolean ignoreNullValue = false; - public DataValidatorBuilder(List dataValidationErrors) { + public DataValidatorBuilder(final List dataValidationErrors) { this.dataValidationErrors = dataValidationErrors; } @@ -45,7 +45,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder value(Object value) { + public DataValidatorBuilder value(final Object value) { this.value = value; return this; } @@ -55,7 +55,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder andNotBlank(String linkedParameterName, String linkedValue) { + public DataValidatorBuilder andNotBlank(final String linkedParameterName, final String linkedValue) { if (value == null && linkedValue == null && ignoreNullValue) { return this; } if (StringUtils.isBlank(linkedValue)) { @@ -70,7 +70,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder equalToParameter(String linkedParameterName, Object linkedValue) { + public DataValidatorBuilder equalToParameter(final String linkedParameterName, final Object linkedValue) { if (value == null && linkedValue == null && ignoreNullValue) { return this; } if (value != null && !value.equals(linkedValue)) { @@ -85,7 +85,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder notSameAsParameter(String linkedParameterName, Object linkedValue) { + public DataValidatorBuilder notSameAsParameter(final String linkedParameterName, final Object linkedValue) { if (value == null && linkedValue == null && ignoreNullValue) { return this; } if (value != null && value.equals(linkedValue)) { @@ -100,7 +100,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder trueOrFalseRequired(boolean trueOfFalseFieldProvided) { + public DataValidatorBuilder trueOrFalseRequired(final boolean trueOfFalseFieldProvided) { if (!trueOfFalseFieldProvided && !ignoreNullValue) { StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter) .append(".must.be.true.or.false"); @@ -115,13 +115,13 @@ public class DataValidatorBuilder { public DataValidatorBuilder notNull() { if (value == null && !ignoreNullValue) { - + String realParameterName = this.parameter; StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter); if (this.arrayIndex != null && StringUtils.isNotBlank(arrayPart)) { validationErrorCode.append(".").append(this.arrayPart); - realParameterName = new StringBuilder(parameter).append('[').append(this.arrayIndex).append("][").append(arrayPart).append(']') - .toString(); + realParameterName = new StringBuilder(parameter).append('[').append(this.arrayIndex).append("][").append(arrayPart) + .append(']').toString(); } validationErrorCode.append(".cannot.be.blank"); @@ -141,8 +141,8 @@ public class DataValidatorBuilder { StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter); if (this.arrayIndex != null && StringUtils.isNotBlank(arrayPart)) { validationErrorCode.append(".").append(this.arrayPart); - realParameterName = new StringBuilder(parameter).append('[').append(this.arrayIndex).append("][").append(arrayPart).append(']') - .toString(); + realParameterName = new StringBuilder(parameter).append('[').append(this.arrayIndex).append("][").append(arrayPart) + .append(']').toString(); } validationErrorCode.append(".cannot.be.blank"); @@ -154,7 +154,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder notExceedingLengthOf(Integer maxLength) { + public DataValidatorBuilder notExceedingLengthOf(final Integer maxLength) { if (value == null && ignoreNullValue) { return this; } if (value != null && value.toString().trim().length() > maxLength) { @@ -169,7 +169,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder inMinMaxRange(Integer min, Integer max) { + public DataValidatorBuilder inMinMaxRange(final Integer min, final Integer max) { if (value == null && ignoreNullValue) { return this; } if (value != null) { @@ -284,7 +284,7 @@ public class DataValidatorBuilder { dataValidationErrors.add(error); } - public DataValidatorBuilder anyOfNotNull(Object... object) { + public DataValidatorBuilder anyOfNotNull(final Object... object) { boolean hasData = false; for (Object obj : object) { if (obj != null) { @@ -303,7 +303,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder inValidValue(String parameterValueCode, Object invalidValue) { + public DataValidatorBuilder inValidValue(final String parameterValueCode, final Object invalidValue) { StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter) .append(".invalid.").append(parameterValueCode); StringBuilder defaultEnglishMessage = new StringBuilder("The parameter ").append(parameter).append(" has an invalid value."); @@ -313,7 +313,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder mustBeBlankWhenParameterProvided(String parameterName, Object parameterValue) { + public DataValidatorBuilder mustBeBlankWhenParameterProvided(final String parameterName, final Object parameterValue) { if (value == null && ignoreNullValue) { return this; } if (value == null && parameterValue != null) { return this; } @@ -331,7 +331,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder comapareMinimumAndMaximumAmounts(BigDecimal minimumBalance, BigDecimal maximumBalance) { + public DataValidatorBuilder comapareMinimumAndMaximumAmounts(final BigDecimal minimumBalance, final BigDecimal maximumBalance) { if (minimumBalance != null && maximumBalance != null) if (maximumBalance.compareTo(minimumBalance) == -1) { StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter) @@ -346,7 +346,7 @@ public class DataValidatorBuilder { return this; } - public DataValidatorBuilder comapareMinAndMaxOfTwoBigDecmimalNos(BigDecimal min, BigDecimal max) { + public DataValidatorBuilder comapareMinAndMaxOfTwoBigDecmimalNos(final BigDecimal min, final BigDecimal max) { if (min != null && max != null) if (max.compareTo(min) == -1) { StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/serialization/DepositProductCommandFromApiJsonDeserializer.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/serialization/DepositProductCommandFromApiJsonDeserializer.java index 59df2da57..a5df6c96a 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/serialization/DepositProductCommandFromApiJsonDeserializer.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/serialization/DepositProductCommandFromApiJsonDeserializer.java @@ -24,198 +24,215 @@ import com.google.gson.reflect.TypeToken; @Component public final class DepositProductCommandFromApiJsonDeserializer { - - /** + + /** * The parameters supported for this command. */ - - Set supportedParams = new HashSet(Arrays.asList("locale", "name", "externalId", "description", "currencyCode", - "digitsAfterDecimal", "minimumBalance", "maximumBalance", "tenureInMonths", "maturityDefaultInterestRate", + private final Set supportedParams = new HashSet(Arrays.asList("locale", "name", "externalId", "description", + "currencyCode", "digitsAfterDecimal", "minimumBalance", "maximumBalance", "tenureInMonths", "maturityDefaultInterestRate", "maturityMinInterestRate", "maturityMaxInterestRate", "interestCompoundedEvery", "interestCompoundedEveryPeriodType", "renewalAllowed", "preClosureAllowed", "preClosureInterestRate", "interestCompoundingAllowed", "isLockinPeriodAllowed", "lockinPeriod", "lockinPeriodType")); - - private final FromJsonHelper fromApiJsonHelper; - - @Autowired - public DepositProductCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { - this.fromApiJsonHelper = fromApiJsonHelper; - } - - public void validateForCreate(final String json) { - - if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } + + private final FromJsonHelper fromApiJsonHelper; + + @Autowired + public DepositProductCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { + this.fromApiJsonHelper = fromApiJsonHelper; + } + + public void validateForCreate(final String json) { + + if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } final Type typeOfMap = new TypeToken>() {}.getType(); fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, supportedParams); - + List dataValidationErrors = new ArrayList(); - DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("deposit.product"); - final JsonElement element = fromApiJsonHelper.parse(json); - - final String name = fromApiJsonHelper.extractStringNamed("name", element); + DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("deposit.product"); + final JsonElement element = fromApiJsonHelper.parse(json); + + final String name = fromApiJsonHelper.extractStringNamed("name", element); baseDataValidator.reset().parameter("name").value(name).notBlank().notExceedingLengthOf(100); - + final String externalId = fromApiJsonHelper.extractStringNamed("externalId", element); baseDataValidator.reset().parameter("externalId").value(externalId).ignoreIfNull().notExceedingLengthOf(100); - + final String description = fromApiJsonHelper.extractStringNamed("description", element); baseDataValidator.reset().parameter("description").value(description).notExceedingLengthOf(500); - + final String currencyCode = fromApiJsonHelper.extractStringNamed("currencyCode", element); baseDataValidator.reset().parameter("currencyCode").value(currencyCode).notBlank(); - + final Integer digitsAfterDecimal = fromApiJsonHelper.extractIntegerNamed("digitsAfterDecimal", element, Locale.getDefault()); baseDataValidator.reset().parameter("digitsAfterDecimal").value(digitsAfterDecimal).notNull().inMinMaxRange(0, 6); - + final BigDecimal minimumBalance = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("minimumBalance", element); baseDataValidator.reset().parameter("minimumBalance").value(minimumBalance).notNull().zeroOrPositiveAmount(); - - final BigDecimal maximumBalance = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maximumBalance", element); - baseDataValidator.reset().parameter("maximumBalance").value(maximumBalance).zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("minimumBalance").comapareMinimumAndMaximumAmounts(minimumBalance, maximumBalance); - - final Integer tenureInMonths = fromApiJsonHelper.extractIntegerNamed("tenureInMonths", element, Locale.getDefault()); - baseDataValidator.reset().parameter("tenureInMonths").value(tenureInMonths).notNull().zeroOrPositiveAmount(); - - final BigDecimal maturityDefaultInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityDefaultInterestRate", element); - baseDataValidator.reset().parameter("maturityDefaultInterestRate").value(maturityDefaultInterestRate).notNull().zeroOrPositiveAmount(); - - final BigDecimal maturityMinInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMinInterestRate", element); - baseDataValidator.reset().parameter("maturityMinInterestRate").value(maturityMinInterestRate).notNull().zeroOrPositiveAmount(); - - final BigDecimal maturityMaxInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMaxInterestRate", element); - baseDataValidator.reset().parameter("maturityMaxInterestRate").value(maturityMaxInterestRate).notNull().zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("maturityMinInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityMaxInterestRate); - baseDataValidator.reset().parameter("maturityDefaultInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityDefaultInterestRate, maturityMaxInterestRate); - baseDataValidator.reset().parameter("maturityMinInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityDefaultInterestRate); - - final Integer interestCompoundedEvery = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element, Locale.getDefault()); - baseDataValidator.reset().parameter("interestCompoundedEvery").value(interestCompoundedEvery).notNull().zeroOrPositiveAmount(); - - final Integer interestCompoundedEveryPeriodType = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEveryPeriodType", element, Locale.getDefault()); - baseDataValidator.reset().parameter("interestCompoundedEveryPeriodType").value(interestCompoundedEveryPeriodType).notNull().inMinMaxRange(1, 3); - - final Boolean renewalAllowed = fromApiJsonHelper.extractBooleanNamed("renewalAllowed", element); - baseDataValidator.reset().parameter("renewalAllowed").trueOrFalseRequired(renewalAllowed); - - final Boolean preClosureAllowed = fromApiJsonHelper.extractBooleanNamed("preClosureAllowed", element); - baseDataValidator.reset().parameter("preClosureAllowed").trueOrFalseRequired(preClosureAllowed); - - final Boolean interestCompoundingAllowed = fromApiJsonHelper.extractBooleanNamed("interestCompoundingAllowed", element); - baseDataValidator.reset().parameter("interestCompoundingAllowed").trueOrFalseRequired(interestCompoundingAllowed); - final BigDecimal preClosureInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate", element); - baseDataValidator.reset().parameter("preClosureInterestRate").value(preClosureInterestRate).notNull().zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("preClosureInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(preClosureInterestRate,maturityMinInterestRate); - - final Boolean isLockinPeriodAllowed = fromApiJsonHelper.extractBooleanNamed("isLockinPeriodAllowed", element); - baseDataValidator.reset().parameter("isLockinPeriodAllowed").trueOrFalseRequired(isLockinPeriodAllowed); - - final Integer lockinPeriod = fromApiJsonHelper.extractIntegerNamed("lockinPeriod", element, Locale.getDefault()); - baseDataValidator.reset().parameter("lockinPeriod").value(lockinPeriod).notNull().zeroOrPositiveAmount(); - - final Integer lockinPeriodType = fromApiJsonHelper.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault()); - baseDataValidator.reset().parameter("lockinPeriodType").value(lockinPeriodType).notNull().inMinMaxRange(1, 3); - - throwExceptionIfValidationWarningsExist(dataValidationErrors); - } - - public void validateForUpdate(String json) { - - if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } + final BigDecimal maximumBalance = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maximumBalance", element); + baseDataValidator.reset().parameter("maximumBalance").value(maximumBalance).zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("minimumBalance").comapareMinimumAndMaximumAmounts(minimumBalance, maximumBalance); + + final Integer tenureInMonths = fromApiJsonHelper.extractIntegerNamed("tenureInMonths", element, Locale.getDefault()); + baseDataValidator.reset().parameter("tenureInMonths").value(tenureInMonths).notNull().zeroOrPositiveAmount(); + + final BigDecimal maturityDefaultInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityDefaultInterestRate", + element); + baseDataValidator.reset().parameter("maturityDefaultInterestRate").value(maturityDefaultInterestRate).notNull() + .zeroOrPositiveAmount(); + + final BigDecimal maturityMinInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMinInterestRate", element); + baseDataValidator.reset().parameter("maturityMinInterestRate").value(maturityMinInterestRate).notNull().zeroOrPositiveAmount(); + + final BigDecimal maturityMaxInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMaxInterestRate", element); + baseDataValidator.reset().parameter("maturityMaxInterestRate").value(maturityMaxInterestRate).notNull().zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("maturityMinInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityMaxInterestRate); + baseDataValidator.reset().parameter("maturityDefaultInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityDefaultInterestRate, maturityMaxInterestRate); + baseDataValidator.reset().parameter("maturityMinInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityDefaultInterestRate); + + final Integer interestCompoundedEvery = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element, + Locale.getDefault()); + baseDataValidator.reset().parameter("interestCompoundedEvery").value(interestCompoundedEvery).notNull().zeroOrPositiveAmount(); + + final Integer interestCompoundedEveryPeriodType = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEveryPeriodType", + element, Locale.getDefault()); + baseDataValidator.reset().parameter("interestCompoundedEveryPeriodType").value(interestCompoundedEveryPeriodType).notNull() + .inMinMaxRange(1, 3); + + final Boolean renewalAllowed = fromApiJsonHelper.extractBooleanNamed("renewalAllowed", element); + baseDataValidator.reset().parameter("renewalAllowed").trueOrFalseRequired(renewalAllowed); + + final Boolean preClosureAllowed = fromApiJsonHelper.extractBooleanNamed("preClosureAllowed", element); + baseDataValidator.reset().parameter("preClosureAllowed").trueOrFalseRequired(preClosureAllowed); + + final Boolean interestCompoundingAllowed = fromApiJsonHelper.extractBooleanNamed("interestCompoundingAllowed", element); + baseDataValidator.reset().parameter("interestCompoundingAllowed").trueOrFalseRequired(interestCompoundingAllowed); + + final BigDecimal preClosureInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate", element); + baseDataValidator.reset().parameter("preClosureInterestRate").value(preClosureInterestRate).notNull().zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("preClosureInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(preClosureInterestRate, maturityMinInterestRate); + + final Boolean isLockinPeriodAllowed = fromApiJsonHelper.extractBooleanNamed("isLockinPeriodAllowed", element); + baseDataValidator.reset().parameter("isLockinPeriodAllowed").trueOrFalseRequired(isLockinPeriodAllowed); + + final Integer lockinPeriod = fromApiJsonHelper.extractIntegerNamed("lockinPeriod", element, Locale.getDefault()); + baseDataValidator.reset().parameter("lockinPeriod").value(lockinPeriod).notNull().zeroOrPositiveAmount(); + + final Integer lockinPeriodType = fromApiJsonHelper.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault()); + baseDataValidator.reset().parameter("lockinPeriodType").value(lockinPeriodType).notNull().inMinMaxRange(1, 3); + + throwExceptionIfValidationWarningsExist(dataValidationErrors); + } + + public void validateForUpdate(final String json) { + + if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } final Type typeOfMap = new TypeToken>() {}.getType(); fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, supportedParams); - + List dataValidationErrors = new ArrayList(); - DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("deposit.product"); - final JsonElement element = fromApiJsonHelper.parse(json); - - final String name = fromApiJsonHelper.extractStringNamed("name", element); + DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("deposit.product"); + final JsonElement element = fromApiJsonHelper.parse(json); + + final String name = fromApiJsonHelper.extractStringNamed("name", element); baseDataValidator.reset().parameter("name").value(name).notBlank().ignoreIfNull().notExceedingLengthOf(100); - + final String externalId = fromApiJsonHelper.extractStringNamed("externalId", element); baseDataValidator.reset().parameter("externalId").value(externalId).ignoreIfNull().notExceedingLengthOf(100); - + final String description = fromApiJsonHelper.extractStringNamed("description", element); baseDataValidator.reset().parameter("description").value(description).notExceedingLengthOf(500); - + final String currencyCode = fromApiJsonHelper.extractStringNamed("currencyCode", element); baseDataValidator.reset().parameter("currencyCode").value(currencyCode).notBlank(); - + final Integer digitsAfterDecimal = fromApiJsonHelper.extractIntegerNamed("digitsAfterDecimal", element, Locale.getDefault()); baseDataValidator.reset().parameter("digitsAfterDecimal").value(digitsAfterDecimal).ignoreIfNull().inMinMaxRange(0, 6); - + final BigDecimal minimumBalance = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("minimumBalance", element); baseDataValidator.reset().parameter("minimumBalance").value(minimumBalance).ignoreIfNull().zeroOrPositiveAmount(); - + final BigDecimal maximumBalance = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maximumBalance", element); - baseDataValidator.reset().parameter("maximumBalance").value(maximumBalance).zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("minimumBalance").comapareMinimumAndMaximumAmounts(minimumBalance, maximumBalance); - - final Integer tenureInMonths = fromApiJsonHelper.extractIntegerNamed("tenureInMonths", element, Locale.getDefault()); - baseDataValidator.reset().parameter("tenureInMonths").value(tenureInMonths).ignoreIfNull().zeroOrPositiveAmount(); - - final BigDecimal maturityDefaultInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityDefaultInterestRate", element); - baseDataValidator.reset().parameter("maturityDefaultInterestRate").value(maturityDefaultInterestRate).ignoreIfNull().zeroOrPositiveAmount(); - - final BigDecimal maturityMinInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMinInterestRate", element); - baseDataValidator.reset().parameter("maturityMinInterestRate").value(maturityMinInterestRate).ignoreIfNull().zeroOrPositiveAmount(); - - final BigDecimal maturityMaxInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMaxInterestRate", element); - baseDataValidator.reset().parameter("maturityMaxInterestRate").value(maturityMaxInterestRate).ignoreIfNull().zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("maturityMinInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityMaxInterestRate); - baseDataValidator.reset().parameter("maturityDefaultInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityDefaultInterestRate, maturityMaxInterestRate); - baseDataValidator.reset().parameter("maturityMinInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityDefaultInterestRate); - - final Integer interestCompoundedEvery = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element, Locale.getDefault()); - baseDataValidator.reset().parameter("interestCompoundedEvery").value(interestCompoundedEvery).ignoreIfNull().zeroOrPositiveAmount(); - - final Integer interestCompoundedEveryPeriodType = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEveryPeriodType", element, Locale.getDefault()); - baseDataValidator.reset().parameter("interestCompoundedEveryPeriodType").value(interestCompoundedEveryPeriodType).ignoreIfNull().inMinMaxRange(1, 3); - - final Boolean renewalAllowed = fromApiJsonHelper.extractBooleanNamed("renewalAllowed", element); - final Boolean isrenewalAllowedChanged = isBooleanValueUpdated(renewalAllowed); - baseDataValidator.reset().parameter("renewalAllowed").trueOrFalseRequired(isrenewalAllowedChanged); - - final Boolean preClosureAllowed = fromApiJsonHelper.extractBooleanNamed("preClosureAllowed", element); - final Boolean isPreClosureAllowedChanged = isBooleanValueUpdated(preClosureAllowed); - baseDataValidator.reset().parameter("preClosureAllowed").trueOrFalseRequired(isPreClosureAllowedChanged); - - final Boolean interestCompoundingAllowed = fromApiJsonHelper.extractBooleanNamed("interestCompoundingAllowed", element); - final Boolean isInterestCompoundingAllowed = isBooleanValueUpdated(interestCompoundingAllowed); - baseDataValidator.reset().parameter("interestCompoundingAllowed").trueOrFalseRequired(isInterestCompoundingAllowed); + baseDataValidator.reset().parameter("maximumBalance").value(maximumBalance).zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("minimumBalance").comapareMinimumAndMaximumAmounts(minimumBalance, maximumBalance); - final BigDecimal preClosureInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate", element); - baseDataValidator.reset().parameter("preClosureInterestRate").value(preClosureInterestRate).ignoreIfNull().zeroOrPositiveAmount(); - baseDataValidator.reset().parameter("preClosureInterestRate").comapareMinAndMaxOfTwoBigDecmimalNos(preClosureInterestRate,maturityMinInterestRate); - - final Boolean lockinPeriodAllowed = fromApiJsonHelper.extractBooleanNamed("isLockinPeriodAllowed", element); - final Boolean isLockinPeriodAllowed = isBooleanValueUpdated(lockinPeriodAllowed); - baseDataValidator.reset().parameter("isLockinPeriodAllowed").trueOrFalseRequired(isLockinPeriodAllowed); - - final Integer lockinPeriod = fromApiJsonHelper.extractIntegerNamed("lockinPeriod", element, Locale.getDefault()); - baseDataValidator.reset().parameter("lockinPeriod").value(lockinPeriod).ignoreIfNull().zeroOrPositiveAmount(); - - final Integer lockinPeriodType = fromApiJsonHelper.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault()); - baseDataValidator.reset().parameter("lockinPeriodType").value(lockinPeriodType).ignoreIfNull().inMinMaxRange(1, 3); - - throwExceptionIfValidationWarningsExist(dataValidationErrors); - - } - - private Boolean isBooleanValueUpdated(Boolean actualValue) { - Boolean isUpdated = false; - if(actualValue != null){ - isUpdated = true; - } - return isUpdated; - } + final Integer tenureInMonths = fromApiJsonHelper.extractIntegerNamed("tenureInMonths", element, Locale.getDefault()); + baseDataValidator.reset().parameter("tenureInMonths").value(tenureInMonths).ignoreIfNull().zeroOrPositiveAmount(); - private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) { - if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", - "Validation errors exist.", dataValidationErrors); } - } + final BigDecimal maturityDefaultInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityDefaultInterestRate", + element); + baseDataValidator.reset().parameter("maturityDefaultInterestRate").value(maturityDefaultInterestRate).ignoreIfNull() + .zeroOrPositiveAmount(); + + final BigDecimal maturityMinInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMinInterestRate", element); + baseDataValidator.reset().parameter("maturityMinInterestRate").value(maturityMinInterestRate).ignoreIfNull().zeroOrPositiveAmount(); + + final BigDecimal maturityMaxInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityMaxInterestRate", element); + baseDataValidator.reset().parameter("maturityMaxInterestRate").value(maturityMaxInterestRate).ignoreIfNull().zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("maturityMinInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityMaxInterestRate); + baseDataValidator.reset().parameter("maturityDefaultInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityDefaultInterestRate, maturityMaxInterestRate); + baseDataValidator.reset().parameter("maturityMinInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(maturityMinInterestRate, maturityDefaultInterestRate); + + final Integer interestCompoundedEvery = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element, + Locale.getDefault()); + baseDataValidator.reset().parameter("interestCompoundedEvery").value(interestCompoundedEvery).ignoreIfNull().zeroOrPositiveAmount(); + + final Integer interestCompoundedEveryPeriodType = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEveryPeriodType", + element, Locale.getDefault()); + baseDataValidator.reset().parameter("interestCompoundedEveryPeriodType").value(interestCompoundedEveryPeriodType).ignoreIfNull() + .inMinMaxRange(1, 3); + + final Boolean renewalAllowed = fromApiJsonHelper.extractBooleanNamed("renewalAllowed", element); + final Boolean isrenewalAllowedChanged = isBooleanValueUpdated(renewalAllowed); + baseDataValidator.reset().parameter("renewalAllowed").trueOrFalseRequired(isrenewalAllowedChanged); + + final Boolean preClosureAllowed = fromApiJsonHelper.extractBooleanNamed("preClosureAllowed", element); + final Boolean isPreClosureAllowedChanged = isBooleanValueUpdated(preClosureAllowed); + baseDataValidator.reset().parameter("preClosureAllowed").trueOrFalseRequired(isPreClosureAllowedChanged); + + final Boolean interestCompoundingAllowed = fromApiJsonHelper.extractBooleanNamed("interestCompoundingAllowed", element); + final Boolean isInterestCompoundingAllowed = isBooleanValueUpdated(interestCompoundingAllowed); + baseDataValidator.reset().parameter("interestCompoundingAllowed").trueOrFalseRequired(isInterestCompoundingAllowed); + + final BigDecimal preClosureInterestRate = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate", element); + baseDataValidator.reset().parameter("preClosureInterestRate").value(preClosureInterestRate).ignoreIfNull().zeroOrPositiveAmount(); + baseDataValidator.reset().parameter("preClosureInterestRate") + .comapareMinAndMaxOfTwoBigDecmimalNos(preClosureInterestRate, maturityMinInterestRate); + + final Boolean lockinPeriodAllowed = fromApiJsonHelper.extractBooleanNamed("isLockinPeriodAllowed", element); + final Boolean isLockinPeriodAllowed = isBooleanValueUpdated(lockinPeriodAllowed); + baseDataValidator.reset().parameter("isLockinPeriodAllowed").trueOrFalseRequired(isLockinPeriodAllowed); + + final Integer lockinPeriod = fromApiJsonHelper.extractIntegerNamed("lockinPeriod", element, Locale.getDefault()); + baseDataValidator.reset().parameter("lockinPeriod").value(lockinPeriod).ignoreIfNull().zeroOrPositiveAmount(); + + final Integer lockinPeriodType = fromApiJsonHelper.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault()); + baseDataValidator.reset().parameter("lockinPeriodType").value(lockinPeriodType).ignoreIfNull().inMinMaxRange(1, 3); + + throwExceptionIfValidationWarningsExist(dataValidationErrors); + + } + + private Boolean isBooleanValueUpdated(final Boolean actualValue) { + Boolean isUpdated = false; + if (actualValue != null) { + isUpdated = true; + } + return isUpdated; + } + + private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) { + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", + "Validation errors exist.", dataValidationErrors); } + } }