FINERACT-2081: loan validation code improvements

This commit is contained in:
Kristof Jozsa
2024-08-07 11:18:34 +02:00
committed by Adam Saghy
parent 81bf50d29e
commit 26388ea518
10 changed files with 250 additions and 352 deletions
@@ -38,7 +38,7 @@ import org.springframework.util.ObjectUtils;
public class DataValidatorBuilder { public class DataValidatorBuilder {
public static final String VALID_INPUT_SEPERATOR = "_"; public static final String VALID_INPUT_SEPARATOR = "_";
private final List<ApiParameterError> dataValidationErrors; private final List<ApiParameterError> dataValidationErrors;
private String resource; private String resource;
private String parameter; private String parameter;
@@ -113,31 +113,29 @@ public class DataValidatorBuilder {
} }
if (StringUtils.isBlank(linkedValue)) { if (StringUtils.isBlank(linkedValue)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + linkedParameterName + ".cannot.be.empty.when."
.append(linkedParameterName).append(".cannot.be.empty.when.").append(this.parameter).append(".is.populated"); + this.parameter + ".is.populated";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(linkedParameterName) String defaultEnglishMessage = "The parameter `" + linkedParameterName + "` cannot be empty when " + this.parameter
.append("` cannot be empty when ").append(this.parameter).append(" is populated."); + " is populated.";
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage,
defaultEnglishMessage.toString(), linkedParameterName, linkedValue, this.value); linkedParameterName, linkedValue, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
} }
public void failWithCode(final String errorCode, final Object... defaultUserMessageArgs) { public void failWithCode(final String errorCode, final Object... defaultUserMessageArgs) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + "." + errorCode;
.append(this.parameter).append(".").append(errorCode); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode,
final StringBuilder defaultEnglishMessage = new StringBuilder("Failed data validation due to: ").append(errorCode).append("."); "Failed data validation due to: " + errorCode + ".", this.parameter, this.value, defaultUserMessageArgs);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(),
this.parameter, this.value, defaultUserMessageArgs);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
public void failWithCodeNoParameterAddedToErrorCode(final String errorCode, final Object... defaultUserMessageArgs) { public void failWithCodeNoParameterAddedToErrorCode(final String errorCode, final Object... defaultUserMessageArgs) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".").append(errorCode); String validationErrorCode = "validation.msg." + this.resource + "." + errorCode;
final StringBuilder defaultEnglishMessage = new StringBuilder("Failed data validation due to: ").append(errorCode).append("."); String defaultEnglishMessage = "Failed data validation due to: " + errorCode + ".";
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
this.parameter, this.value, defaultUserMessageArgs); this.value, defaultUserMessageArgs);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -147,12 +145,10 @@ public class DataValidatorBuilder {
} }
if (this.value != null && !this.value.equals(linkedValue)) { if (this.value != null && !this.value.equals(linkedValue)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + linkedParameterName + ".not.equal.to." + this.parameter;
.append(linkedParameterName).append(".not.equal.to.").append(this.parameter); String defaultEnglishMessage = "The parameter `" + linkedParameterName + "` is not equal to " + this.parameter + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(linkedParameterName) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage,
.append("` is not equal to ").append(this.parameter).append("."); linkedParameterName, linkedValue, this.value);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), linkedParameterName, linkedValue, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -164,12 +160,10 @@ public class DataValidatorBuilder {
} }
if (this.value != null && this.value.equals(linkedValue)) { if (this.value != null && this.value.equals(linkedValue)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + linkedParameterName + ".same.as." + this.parameter;
.append(linkedParameterName).append(".same.as.").append(this.parameter); String defaultEnglishMessage = "The parameter `" + linkedParameterName + "` is same as " + this.parameter + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(linkedParameterName) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage,
.append("` is same as ").append(this.parameter).append("."); linkedParameterName, linkedValue, this.value);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), linkedParameterName, linkedValue, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -179,12 +173,9 @@ public class DataValidatorBuilder {
if (trueOfFalseField != null && !trueOfFalseField.toString().equalsIgnoreCase("true") if (trueOfFalseField != null && !trueOfFalseField.toString().equalsIgnoreCase("true")
&& !trueOfFalseField.toString().equalsIgnoreCase("false")) { && !trueOfFalseField.toString().equalsIgnoreCase("false")) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".must.be.true.or.false";
.append(this.parameter).append(".must.be.true.or.false"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be set as true or false.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter);
.append("` must be set as true or false.");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -199,15 +190,13 @@ public class DataValidatorBuilder {
.append(this.parameter); .append(this.parameter);
if (this.arrayIndex != null && StringUtils.isNotBlank(this.arrayPart)) { if (this.arrayIndex != null && StringUtils.isNotBlank(this.arrayPart)) {
validationErrorCode.append(".").append(this.arrayPart); validationErrorCode.append(".").append(this.arrayPart);
realParameterName = new StringBuilder(this.parameter).append('[').append(this.arrayIndex).append("][") realParameterName = this.parameter + '[' + this.arrayIndex + "][" + this.arrayPart + ']';
.append(this.arrayPart).append(']').toString();
} }
validationErrorCode.append(".cannot.be.blank"); validationErrorCode.append(".cannot.be.blank");
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(realParameterName) String defaultEnglishMessage = "The parameter `" + realParameterName + "` is mandatory.";
.append("` is mandatory."); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), realParameterName, this.arrayIndex);
defaultEnglishMessage.toString(), realParameterName, this.arrayIndex);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -224,15 +213,13 @@ public class DataValidatorBuilder {
.append(this.parameter); .append(this.parameter);
if (this.arrayIndex != null && StringUtils.isNotBlank(this.arrayPart)) { if (this.arrayIndex != null && StringUtils.isNotBlank(this.arrayPart)) {
validationErrorCode.append(".").append(this.arrayPart); validationErrorCode.append(".").append(this.arrayPart);
realParameterName = new StringBuilder(this.parameter).append('[').append(this.arrayIndex).append("][") realParameterName = this.parameter + '[' + this.arrayIndex + "][" + this.arrayPart + ']';
.append(this.arrayPart).append(']').toString();
} }
validationErrorCode.append(".cannot.be.blank"); validationErrorCode.append(".cannot.be.blank");
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(realParameterName) String defaultEnglishMessage = "The parameter `" + realParameterName + "` is mandatory.";
.append("` is mandatory."); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), realParameterName, this.arrayIndex);
defaultEnglishMessage.toString(), realParameterName, this.arrayIndex);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -244,12 +231,10 @@ public class DataValidatorBuilder {
} }
if (this.value != null && this.value.toString().trim().length() > maxLength) { if (this.value != null && this.value.toString().trim().length() > maxLength) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".exceeds.max.length";
.append(this.parameter).append(".exceeds.max.length"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` exceeds max length of " + maxLength + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` exceeds max length of ").append(maxLength).append("."); maxLength, this.value.toString());
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, maxLength, this.value.toString());
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -261,12 +246,9 @@ public class DataValidatorBuilder {
} }
if (this.value instanceof List && ((List<?>) this.value).size() > maxLength) { if (this.value instanceof List && ((List<?>) this.value).size() > maxLength) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".exceeds.max.length.allowed";
.append(this.parameter).append(".exceeds.max.length.allowed"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` exceeds allowed max length of " + maxLength + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter);
.append("` exceeds allowed max length of ").append(maxLength).append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -280,12 +262,10 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final Integer number = Integer.valueOf(this.value.toString()); final Integer number = Integer.valueOf(this.value.toString());
if (number < min || number > max) { if (number < min || number > max) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.within.expected.range";
.append(this.parameter).append(".is.not.within.expected.range"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be between " + min + " and " + max + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be between ").append(min).append(" and ").append(max).append("."); number, min, max);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, min, max);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -302,13 +282,11 @@ public class DataValidatorBuilder {
if (this.value == null || !rawValuesList.contains(this.value)) { if (this.value == null || !rawValuesList.contains(this.value)) {
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList(); final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
final String valuesListStr = String.join(", ", valuesList); final String valuesListStr = String.join(", ", valuesList);
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.one.of.expected.enumerations";
.append(this.parameter).append(".is.not.one.of.expected.enumerations"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be one of [ " + valuesListStr + " ] " + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
.append("` must be one of [ ").append(valuesListStr).append(" ] ").append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
defaultEnglishMessage.toString(), this.parameter, this.value, values); this.value, values);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -331,13 +309,11 @@ public class DataValidatorBuilder {
if (this.value == null || !rawValuesList.contains(this.value.toString().toLowerCase())) { if (this.value == null || !rawValuesList.contains(this.value.toString().toLowerCase())) {
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList(); final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
final String valuesListStr = String.join(", ", valuesList); final String valuesListStr = String.join(", ", valuesList);
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.one.of.expected.enumerations";
.append(this.parameter).append(".is.not.one.of.expected.enumerations"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be one of [ " + valuesListStr + " ] " + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
.append("` must be one of [ ").append(valuesListStr).append(" ] ").append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
defaultEnglishMessage.toString(), this.parameter, this.value, values); this.value, values);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -354,13 +330,11 @@ public class DataValidatorBuilder {
if (this.value == null || !valuesListLowercase.contains(this.value.toString().toLowerCase())) { if (this.value == null || !valuesListLowercase.contains(this.value.toString().toLowerCase())) {
final String valuesListStr = String.join(", ", valuesList); final String valuesListStr = String.join(", ", valuesList);
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.one.of.expected.enumerations";
.append(this.parameter).append(".is.not.one.of.expected.enumerations"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be one of [ " + valuesListStr + " ] " + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
.append("` must be one of [ ").append(valuesListStr).append(" ] ").append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
defaultEnglishMessage.toString(), this.parameter, this.value, valuesList); this.value, valuesList);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -379,13 +353,11 @@ public class DataValidatorBuilder {
if (rawValuesList.contains(this.value)) { if (rawValuesList.contains(this.value)) {
final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList(); final List<String> valuesList = Arrays.stream(values).map(Object::toString).toList();
final String valuesListStr = String.join(", ", valuesList); final String valuesListStr = String.join(", ", valuesList);
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.one.of.unwanted.enumerations";
.append(this.parameter).append(".is.one.of.unwanted.enumerations"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must not be any of [ " + valuesListStr + " ] " + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter)
.append("` must not be any of [ ").append(valuesListStr).append(" ] ").append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
defaultEnglishMessage.toString(), this.parameter, this.value, values); this.value, values);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -401,12 +373,10 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final BigDecimal number = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal number = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (number.compareTo(BigDecimal.ZERO) <= 0) { if (number.compareTo(BigDecimal.ZERO) <= 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.greater.than.zero";
.append(this.parameter).append(".not.greater.than.zero"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than 0.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than 0."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -424,12 +394,10 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final BigDecimal number = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal number = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (number.compareTo(BigDecimal.ZERO) < 0) { if (number.compareTo(BigDecimal.ZERO) < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.zero.or.greater";
.append(this.parameter).append(".not.zero.or.greater"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than or equal to 0.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than or equal to 0."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -445,14 +413,12 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Integer number = Integer.valueOf(this.value.toString()); final int number = Integer.parseInt(this.value.toString());
if (number < 0) { if (number < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.zero.or.greater";
.append(this.parameter).append(".not.zero.or.greater"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be zero or greater.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be zero or greater."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -468,14 +434,12 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Integer number = Integer.valueOf(this.value.toString()); final int number = Integer.parseInt(this.value.toString());
if (number < 1) { if (number < 1) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.greater.than.zero";
.append(this.parameter).append(".not.greater.than.zero"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than 0.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than 0."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -488,14 +452,13 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Integer intValue = Integer.valueOf(this.value.toString()); final int intValue = Integer.parseInt(this.value.toString());
if (intValue < number + 1) { if (intValue < number + 1) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter
.append(this.parameter).append(".not.greater.than.specified.number"); + ".not.greater.than.specified.number";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than " + number;
.append("` must be greater than ").append(number); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), intValue, number);
defaultEnglishMessage.toString(), this.parameter, intValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -510,12 +473,11 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final Integer intValue = Integer.valueOf(this.value.toString()); final Integer intValue = Integer.valueOf(this.value.toString());
if (intValue < number) { if (intValue < number) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter
.append(this.parameter).append(".not.equal.to.or.greater.than.specified.number"); + ".not.equal.to.or.greater.than.specified.number";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be equal to or greater than" + number;
.append("` must be equal to or greater than").append(number); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), intValue, number);
defaultEnglishMessage.toString(), this.parameter, intValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -530,12 +492,10 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final Integer intValue = Integer.valueOf(this.value.toString()); final Integer intValue = Integer.valueOf(this.value.toString());
if (!intValue.equals(number)) { if (!intValue.equals(number)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.equal.to.specified.number";
.append(this.parameter).append(".not.equal.to.specified.number"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be same as" + number;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be same as").append(number); intValue, number);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, intValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -550,12 +510,11 @@ public class DataValidatorBuilder {
if (this.value != null) { if (this.value != null) {
final Integer intValue = Integer.valueOf(this.value.toString()); final Integer intValue = Integer.valueOf(this.value.toString());
if (intValue < number || intValue % number != 0) { if (intValue < number || intValue % number != 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter
.append(this.parameter).append(".not.in.multiples.of.specified.number"); + ".not.in.multiples.of.specified.number";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be multiples of " + number;
.append("` must be multiples of ").append(number); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), intValue, number);
defaultEnglishMessage.toString(), this.parameter, intValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -571,14 +530,12 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Long number = Long.valueOf(this.value.toString()); final long number = Long.parseLong(this.value.toString());
if (number < 1) { if (number < 1) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.greater.than.zero";
.append(this.parameter).append(".not.greater.than.zero"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than 0.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than 0."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -594,14 +551,12 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Long number = Long.valueOf(this.value.toString()); final long number = Long.parseLong(this.value.toString());
if (number < 0) { if (number < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.equal.or.greater.than.zero";
.append(this.parameter).append(".not.equal.or.greater.than.zero"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be equal or greater than 0.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be equal or greater than 0."); number, 0);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, 0);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -614,14 +569,13 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Long longValue = Long.valueOf(this.value.toString()); final long longValue = Long.parseLong(this.value.toString());
if (longValue < number + 1) { if (longValue < number + 1) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter
.append(this.parameter).append(".not.greater.than.specified.number"); + ".not.greater.than.specified.number";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than " + number;
.append("` must be greater than ").append(number); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), longValue, number);
defaultEnglishMessage.toString(), this.parameter, longValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -634,14 +588,13 @@ public class DataValidatorBuilder {
} }
if (this.value != null) { if (this.value != null) {
final Long longValue = Long.valueOf(this.value.toString()); final long longValue = Long.parseLong(this.value.toString());
if (longValue < number + 1) { if (longValue < number + 1) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".not.greater.than.specified."
.append(this.parameter).append(".not.greater.than.specified.").append(paramName).append(".at Index.").append(index); + paramName + ".at Index." + index;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than " + number;
.append("` must be greater than ").append(number); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), longValue, number);
defaultEnglishMessage.toString(), this.parameter, longValue, number);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -655,12 +608,9 @@ public class DataValidatorBuilder {
final Object[] array = (Object[]) this.value; final Object[] array = (Object[]) this.value;
if (ObjectUtils.isEmpty(array)) { if (ObjectUtils.isEmpty(array)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".cannot.be.empty";
.append(this.parameter).append(".cannot.be.empty"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` cannot be empty. You must select at least one.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter);
.append("` cannot be empty. You must select at least one.");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -673,24 +623,18 @@ public class DataValidatorBuilder {
final JsonArray array = (JsonArray) this.value; final JsonArray array = (JsonArray) this.value;
if (this.value != null && !array.iterator().hasNext()) { if (this.value != null && !array.iterator().hasNext()) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".cannot.be.empty";
.append(this.parameter).append(".cannot.be.empty"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` cannot be empty. You must select at least one.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter);
.append("` cannot be empty. You must select at least one.");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
} }
public void expectedArrayButIsNot() { public void expectedArrayButIsNot() {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.an.array";
.append(this.parameter).append(".is.not.an.array"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` is not an array.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter);
.append("` is not an array.");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(),
this.parameter);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -704,23 +648,18 @@ public class DataValidatorBuilder {
} }
if (!hasData) { if (!hasData) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource) String validationErrorCode = "validation.msg." + this.resource + ".no.parameters.for.update";
.append(".no.parameters.for.update"); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, "No parameters passed for update.", "id");
final StringBuilder defaultEnglishMessage = new StringBuilder("No parameters passed for update.");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), "id");
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
} }
public DataValidatorBuilder inValidValue(final String parameterValueCode, final Object invalidValue) { public DataValidatorBuilder inValidValue(final String parameterValueCode, final Object invalidValue) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".invalid." + parameterValueCode;
.append(this.parameter).append(".invalid.").append(parameterValueCode); String defaultEnglishMessage = "The parameter `" + this.parameter + "` has an invalid value.";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` has an invalid value."); invalidValue);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(),
this.parameter, invalidValue);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -739,12 +678,12 @@ public class DataValidatorBuilder {
return this; return this;
} }
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".cannot.also.be.provided.when."
.append(this.parameter).append(".cannot.also.be.provided.when.").append(parameterName).append(".is.populated"); + parameterName + ".is.populated";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` cannot also be provided when `" + parameterName
.append("` cannot also be provided when `").append(parameterName).append("` is populated."); + "` is populated.";
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
this.parameter, this.value, parameterName, parameterValue); this.value, parameterName, parameterValue);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -763,13 +702,12 @@ public class DataValidatorBuilder {
return this; return this;
} }
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".cannot.also.be.provided.when."
.append(this.parameter).append(".cannot.also.be.provided.when.").append(parameterName).append(".is.") + parameterName + ".is." + parameterValue;
.append(parameterValue); String defaultEnglishMessage = "The parameter `" + this.parameter + "` cannot also be provided when `" + parameterName + "` is "
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) + parameterValue;
.append("` cannot also be provided when `").append(parameterName).append("` is ").append(parameterValue); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), this.value, parameterName, parameterValue);
this.parameter, this.value, parameterName, parameterValue);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -779,12 +717,12 @@ public class DataValidatorBuilder {
return this; return this;
} }
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".must.be.provided.when." + parameterName
.append(this.parameter).append(".must.be.provided.when.").append(parameterName).append(".is.").append(parameterValue); + ".is." + parameterValue;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be provided when `" + parameterName + "` is "
.append("` must be provided when `").append(parameterName).append("` is ").append(parameterValue); + parameterValue;
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
this.parameter, this.value, parameterName, parameterValue); this.value, parameterName, parameterValue);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -792,13 +730,11 @@ public class DataValidatorBuilder {
public DataValidatorBuilder compareMinimumAndMaximumAmounts(final BigDecimal minimumBalance, final BigDecimal maximumBalance) { public DataValidatorBuilder compareMinimumAndMaximumAmounts(final BigDecimal minimumBalance, final BigDecimal maximumBalance) {
if (minimumBalance != null && maximumBalance != null) { if (minimumBalance != null && maximumBalance != null) {
if (maximumBalance.compareTo(minimumBalance) < 0) { if (maximumBalance.compareTo(minimumBalance) < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.within.expected.range";
.append(this.parameter).append(".is.not.within.expected.range"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` minimum amount " + minimumBalance
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) + " should less than the maximum amount " + maximumBalance + ".";
.append("` minimum amount ").append(minimumBalance).append(" should less than the maximum amount ") final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append(maximumBalance).append("."); minimumBalance, maximumBalance);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, minimumBalance, maximumBalance);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -810,13 +746,12 @@ public class DataValidatorBuilder {
if (minimumAmount != null && maximumAmount != null && this.value != null) { if (minimumAmount != null && maximumAmount != null && this.value != null) {
final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (amount.compareTo(minimumAmount) < 0 || amount.compareTo(maximumAmount) > 0) { if (amount.compareTo(minimumAmount) < 0 || amount.compareTo(maximumAmount) > 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter
.append(this.parameter).append(".amount.is.not.within.min.max.range"); + ".amount.is.not.within.min.max.range";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter).append("` amount ") String defaultEnglishMessage = "The parameter `" + this.parameter + "` amount " + amount + " must be between "
.append(amount).append(" must be between ").append(minimumAmount).append(" and ").append(maximumAmount) + minimumAmount + " and " + maximumAmount + " .";
.append(" ."); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), amount, minimumAmount, maximumAmount);
defaultEnglishMessage.toString(), this.parameter, amount, minimumAmount, maximumAmount);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -828,12 +763,11 @@ public class DataValidatorBuilder {
if (min != null && this.value != null) { if (min != null && this.value != null) {
final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (amount.compareTo(min) < 0) { if (amount.compareTo(min) < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.less.than.min";
.append(this.parameter).append(".is.less.than.min"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` value " + amount
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter).append("` value ") + " must not be less than the minimum value " + min;
.append(amount).append(" must not be less than the minimum value ").append(min); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), amount, min);
defaultEnglishMessage.toString(), this.parameter, amount, min);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -845,12 +779,11 @@ public class DataValidatorBuilder {
if (max != null && this.value != null) { if (max != null && this.value != null) {
final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (amount.compareTo(max) > 0) { if (amount.compareTo(max) > 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.greater.than.max";
.append(this.parameter).append(".is.greater.than.max"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` value " + amount
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter).append("` value ") + " must not be more than maximum value " + max;
.append(amount).append(" must not be more than maximum value ").append(max); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), amount, max);
defaultEnglishMessage.toString(), this.parameter, amount, max);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -860,12 +793,10 @@ public class DataValidatorBuilder {
public DataValidatorBuilder compareMinAndMaxOfTwoBigDecmimalNos(final BigDecimal min, final BigDecimal max) { public DataValidatorBuilder compareMinAndMaxOfTwoBigDecmimalNos(final BigDecimal min, final BigDecimal max) {
if (min != null && max != null && max.compareTo(min) < 0) { if (min != null && max != null && max.compareTo(min) < 0) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.within.expected.range";
.append(this.parameter).append(".is.not.within.expected.range"); String defaultEnglishMessage = "The " + " min number " + min + " should less than max number " + max + ".";
final StringBuilder defaultEnglishMessage = new StringBuilder("The ").append(" min number ").append(min) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append(" should less than max number ").append(max).append("."); min, max);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, min, max);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -900,12 +831,10 @@ public class DataValidatorBuilder {
if (this.value != null && min != null) { if (this.value != null && min != null) {
final Integer number = Integer.valueOf(this.value.toString()); final Integer number = Integer.valueOf(this.value.toString());
if (number < min) { if (number < min) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.less.than.min";
.append(this.parameter).append(".is.less.than.min"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than the minimum value " + min;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than the minimum value ").append(min); number, min);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, min);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -920,12 +849,10 @@ public class DataValidatorBuilder {
if (this.value != null && max != null) { if (this.value != null && max != null) {
final Integer number = Integer.valueOf(this.value.toString()); final Integer number = Integer.valueOf(this.value.toString());
if (number > max) { if (number > max) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.greater.than.max";
.append(this.parameter).append(".is.greater.than.max"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be less than the maximum value " + max;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be less than the maximum value ").append(max); number, max);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, number, max);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -938,13 +865,12 @@ public class DataValidatorBuilder {
} }
if (this.value != null && !this.value.toString().matches(expression)) { if (this.value != null && !this.value.toString().matches(expression)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".does.not.match.regexp";
.append(this.parameter).append(".does.not.match.regexp"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must match the provided regular expression [ "
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) + expression + " ] " + ".";
.append("` must match the provided regular expression [ ").append(expression).append(" ] ").append(".");
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
defaultEnglishMessage.toString(), this.parameter, this.value, expression); this.value, expression);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -958,12 +884,10 @@ public class DataValidatorBuilder {
} }
if (this.value != null && !this.value.toString().matches(expression)) { if (this.value != null && !this.value.toString().matches(expression)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".does.not.match.regexp";
.append(this.parameter).append(".does.not.match.regexp");
final StringBuilder defaultEnglishMessage = new StringBuilder(Message);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, Message, this.parameter, this.value,
defaultEnglishMessage.toString(), this.parameter, this.value, expression); expression);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
@@ -975,7 +899,7 @@ public class DataValidatorBuilder {
if (this.value == null && this.ignoreNullValue) { if (this.value == null && this.ignoreNullValue) {
return this; return this;
} }
final Iterable<String> inputs = Splitter.onPattern(VALID_INPUT_SEPERATOR).split(validInputs); final Iterable<String> inputs = Splitter.onPattern(VALID_INPUT_SEPARATOR).split(validInputs);
boolean validationErr = true; boolean validationErr = true;
for (final String input : inputs) { for (final String input : inputs) {
if (input.equalsIgnoreCase(this.value.toString().trim())) { if (input.equalsIgnoreCase(this.value.toString().trim())) {
@@ -984,19 +908,17 @@ public class DataValidatorBuilder {
} }
} }
if (validationErr) { if (validationErr) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".value.should.true.or.false";
.append(this.parameter).append(".value.should.true.or.false"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` value should true or false ";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` value should true or false "); this.value);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
} }
public DataValidatorBuilder validateForBooleanValue() { public DataValidatorBuilder validateForBooleanValue() {
return validateStringFor("TRUE" + VALID_INPUT_SEPERATOR + "FALSE"); return validateStringFor("TRUE" + VALID_INPUT_SEPARATOR + "FALSE");
} }
public DataValidatorBuilder validatePhoneNumber() { public DataValidatorBuilder validatePhoneNumber() {
@@ -1015,12 +937,11 @@ public class DataValidatorBuilder {
validationErr = false; validationErr = false;
} }
if (validationErr) { if (validationErr) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".format.is.invalid";
.append(this.parameter).append(".format.is.invalid"); String defaultEnglishMessage = "The parameter `" + this.parameter
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) + "` is in invalid format, should contain '-','+','()' and numbers only.";
.append("` is in invalid format, should contain '-','+','()' and numbers only."); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), this.value);
defaultEnglishMessage.toString(), this.parameter, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -1028,12 +949,10 @@ public class DataValidatorBuilder {
public DataValidatorBuilder validateCronExpression() { public DataValidatorBuilder validateCronExpression() {
if (this.value != null && !CronExpression.isValidExpression(this.value.toString().trim())) { if (this.value != null && !CronExpression.isValidExpression(this.value.toString().trim())) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".invalid";
.append(this.parameter).append(".invalid"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` value is not a valid cron expression";
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` value is not a valid cron expression"); this.value);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, this.value);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
return this; return this;
@@ -1047,12 +966,10 @@ public class DataValidatorBuilder {
if (this.value != null && date != null) { if (this.value != null && date != null) {
final LocalDate dateVal = (LocalDate) this.value; final LocalDate dateVal = (LocalDate) this.value;
if (DateUtils.isAfter(date, dateVal)) { if (DateUtils.isAfter(date, dateVal)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.less.than.date";
.append(this.parameter).append(".is.less.than.date"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be greater than the provided date" + date;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be greater than the provided date").append(date); dateVal, date);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, dateVal, date);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -1067,12 +984,10 @@ public class DataValidatorBuilder {
if (this.value != null && date != null) { if (this.value != null && date != null) {
final LocalDate dateVal = (LocalDate) this.value; final LocalDate dateVal = (LocalDate) this.value;
if (DateUtils.isBefore(date, dateVal)) { if (DateUtils.isBefore(date, dateVal)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.greater.than.date";
.append(this.parameter).append(".is.greater.than.date"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be less than the provided date" + date;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be less than the provided date").append(date); dateVal, date);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, dateVal, date);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -1087,12 +1002,11 @@ public class DataValidatorBuilder {
if (this.value != null && date != null) { if (this.value != null && date != null) {
final LocalDate dateVal = (LocalDate) this.value; final LocalDate dateVal = (LocalDate) this.value;
if (DateUtils.isAfter(dateVal, date)) { if (DateUtils.isAfter(dateVal, date)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.greater.than.date";
.append(this.parameter).append(".is.greater.than.date"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be less than or equal to the provided date: "
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) + date;
.append("` must be less than or equal to the provided date: ").append(date); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), dateVal, date);
defaultEnglishMessage.toString(), this.parameter, dateVal, date);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -1107,12 +1021,10 @@ public class DataValidatorBuilder {
if (this.value != null && date != null) { if (this.value != null && date != null) {
final LocalDate dateVal = (LocalDate) this.value; final LocalDate dateVal = (LocalDate) this.value;
if (!DateUtils.isEqual(dateVal, date)) { if (!DateUtils.isEqual(dateVal, date)) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".is.not.equal.to.date";
.append(this.parameter).append(".is.not.equal.to.date"); String defaultEnglishMessage = "The parameter `" + this.parameter + "` must be equal to the provided date" + date;
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter) final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
.append("` must be equal to the provided date").append(date); dateVal, date);
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
defaultEnglishMessage.toString(), this.parameter, dateVal, date);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
} }
} }
@@ -1122,12 +1034,11 @@ public class DataValidatorBuilder {
public DataValidatorBuilder scaleNotGreaterThan(Integer scale) { public DataValidatorBuilder scaleNotGreaterThan(Integer scale) {
final BigDecimal value = BigDecimal.valueOf(Double.parseDouble(this.value.toString())); final BigDecimal value = BigDecimal.valueOf(Double.parseDouble(this.value.toString()));
if (value.scale() > scale.intValue()) { if (value.scale() > scale.intValue()) {
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".") String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".scale.is.greater.than." + scale;
.append(this.parameter).append(".scale.is.greater.than.").append(scale); String defaultEnglishMessage = "The parameter `" + this.parameter + "` value " + value + " decimal place must not be more than "
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter `").append(this.parameter).append("` value ") + scale + " places";
.append(value).append(" decimal place must not be more than ").append(scale).append(" places"); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter,
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), value, scale);
defaultEnglishMessage.toString(), this.parameter, value, scale);
this.dataValidationErrors.add(error); this.dataValidationErrors.add(error);
return this; return this;
} }
@@ -57,7 +57,7 @@ public final class WorkingDaysUtil {
} }
public static boolean isWorkingDay(final WorkingDays workingDays, final LocalDate date) { public static boolean isWorkingDay(final WorkingDays workingDays, final LocalDate date) {
return CalendarUtils.isValidRedurringDate(workingDays.getRecurrence(), date, date); return CalendarUtils.isValidRecurringDate(workingDays.getRecurrence(), date, date);
} }
public static boolean isNonWorkingDay(final WorkingDays workingDays, final LocalDate date) { public static boolean isNonWorkingDay(final WorkingDays workingDays, final LocalDate date) {
@@ -391,7 +391,7 @@ public final class CalendarData implements Serializable {
public boolean isValidRecurringDate(final LocalDate compareDate, final Boolean isSkipMeetingOnFirstDay, final Integer numberOfDays) { public boolean isValidRecurringDate(final LocalDate compareDate, final Boolean isSkipMeetingOnFirstDay, final Integer numberOfDays) {
if (isBetweenStartAndEndDate(compareDate)) { if (isBetweenStartAndEndDate(compareDate)) {
return CalendarUtils.isValidRedurringDate(this.getRecurrence(), this.getStartDate(), compareDate, isSkipMeetingOnFirstDay, return CalendarUtils.isValidRecurringDate(this.getRecurrence(), this.getStartDate(), compareDate, isSkipMeetingOnFirstDay,
numberOfDays); numberOfDays);
} }
return false; return false;
@@ -558,14 +558,14 @@ public class Calendar extends AbstractAuditableWithUTCDateTimeCustom<Long> {
public boolean isValidRecurringDate(final LocalDate compareDate, Boolean isSkipRepaymentOnFirstMonth, Integer numberOfDays) { public boolean isValidRecurringDate(final LocalDate compareDate, Boolean isSkipRepaymentOnFirstMonth, Integer numberOfDays) {
if (isBetweenStartAndEndDate(compareDate)) { if (isBetweenStartAndEndDate(compareDate)) {
return CalendarUtils.isValidRedurringDate(getRecurrence(), getStartDateLocalDate(), compareDate, isSkipRepaymentOnFirstMonth, return CalendarUtils.isValidRecurringDate(getRecurrence(), getStartDateLocalDate(), compareDate, isSkipRepaymentOnFirstMonth,
numberOfDays); numberOfDays);
} }
// validate with history details. // validate with history details.
for (CalendarHistory history : history()) { for (CalendarHistory history : history()) {
if (history.isBetweenStartAndEndDate(compareDate)) { if (history.isBetweenStartAndEndDate(compareDate)) {
return CalendarUtils.isValidRedurringDate(history.getRecurrence(), history.getStartDate(), compareDate, return CalendarUtils.isValidRecurringDate(history.getRecurrence(), history.getStartDate(), compareDate,
isSkipRepaymentOnFirstMonth, numberOfDays); isSkipRepaymentOnFirstMonth, numberOfDays);
} }
} }
@@ -355,7 +355,7 @@ public final class CalendarUtils {
return humanReadable; return humanReadable;
} }
public static boolean isValidRedurringDate(final String recurringRule, final LocalDate seedDate, final LocalDate date) { public static boolean isValidRecurringDate(final String recurringRule, final LocalDate seedDate, final LocalDate date) {
final Recur recur = CalendarUtils.getICalRecur(recurringRule); final Recur recur = CalendarUtils.getICalRecur(recurringRule);
if (recur == null) { if (recur == null) {
return false; return false;
@@ -365,7 +365,7 @@ public final class CalendarUtils {
return isValidRecurringDate(recur, seedDate, date, isSkipRepaymentonFirstDayOfMonth, numberOfDays); return isValidRecurringDate(recur, seedDate, date, isSkipRepaymentonFirstDayOfMonth, numberOfDays);
} }
public static boolean isValidRedurringDate(final String recurringRule, final LocalDate seedDate, final LocalDate date, public static boolean isValidRecurringDate(final String recurringRule, final LocalDate seedDate, final LocalDate date,
boolean isSkipRepaymentonFirstDayOfMonth, final Integer numberOfDays) { boolean isSkipRepaymentonFirstDayOfMonth, final Integer numberOfDays) {
final Recur recur = CalendarUtils.getICalRecur(recurringRule); final Recur recur = CalendarUtils.getICalRecur(recurringRule);
@@ -529,7 +529,7 @@ public final class CalendarUtils {
} }
LocalDate startDate = disbursementDate; LocalDate startDate = disbursementDate;
final LocalDate seedDate = calendar.getStartDateLocalDate(); final LocalDate seedDate = calendar.getStartDateLocalDate();
if (isValidRedurringDate(calendar.getRecurrence(), seedDate, startDate, isSkipRepaymentOnFirstDayOfMonth, numberOfDays) if (isValidRecurringDate(calendar.getRecurrence(), seedDate, startDate, isSkipRepaymentOnFirstDayOfMonth, numberOfDays)
&& !frequency.equals(Recur.Frequency.DAILY.name())) { && !frequency.equals(Recur.Frequency.DAILY.name())) {
startDate = startDate.plusDays(1); startDate = startDate.plusDays(1);
} }
@@ -728,10 +728,6 @@ public final class CalendarUtils {
return null; return null;
} }
final LocalDate seedDate = calendar.getStartDateLocalDate(); final LocalDate seedDate = calendar.getStartDateLocalDate();
/**
* if (isValidRedurringDate(calendar.getRecurrence(), seedDate, date)) { date = date.plusDays(1); }
**/
return getNextRecurringDate(recur, seedDate, startDate); return getNextRecurringDate(recur, seedDate, startDate);
} }
@@ -797,7 +797,7 @@ public final class LoanApplicationTerms {
this.repaymentPeriodFrequencyType); this.repaymentPeriodFrequencyType);
} else { } else {
LocalDate expectedStartDate = startDate; LocalDate expectedStartDate = startDate;
if (!CalendarUtils.isValidRedurringDate(loanCalendar.getRecurrence(), if (!CalendarUtils.isValidRecurringDate(loanCalendar.getRecurrence(),
loanCalendar.getStartDateLocalDate().minusMonths(getRepaymentEvery()), startDate)) { loanCalendar.getStartDateLocalDate().minusMonths(getRepaymentEvery()), startDate)) {
expectedStartDate = CalendarUtils.getNewRepaymentMeetingDate(loanCalendar.getRecurrence(), expectedStartDate = CalendarUtils.getNewRepaymentMeetingDate(loanCalendar.getRecurrence(),
startDate.minusMonths(getRepaymentEvery()), startDate.minusMonths(getRepaymentEvery()), getRepaymentEvery(), startDate.minusMonths(getRepaymentEvery()), startDate.minusMonths(getRepaymentEvery()), getRepaymentEvery(),
@@ -616,7 +616,7 @@ public class LoanScheduleAssembler {
private void validateRepaymentsStartDateWithMeetingDates(final LocalDate repaymentsStartingFromDate, final Calendar calendar, private void validateRepaymentsStartDateWithMeetingDates(final LocalDate repaymentsStartingFromDate, final Calendar calendar,
boolean isSkipRepaymentOnFirstDayOfMonth, final Integer numberOfDays) { boolean isSkipRepaymentOnFirstDayOfMonth, final Integer numberOfDays) {
if (repaymentsStartingFromDate != null && !CalendarUtils.isValidRedurringDate(calendar.getRecurrence(), if (repaymentsStartingFromDate != null && !CalendarUtils.isValidRecurringDate(calendar.getRecurrence(),
calendar.getStartDateLocalDate(), repaymentsStartingFromDate, isSkipRepaymentOnFirstDayOfMonth, numberOfDays)) { calendar.getStartDateLocalDate(), repaymentsStartingFromDate, isSkipRepaymentOnFirstDayOfMonth, numberOfDays)) {
final String errorMessage = "First repayment date '" + repaymentsStartingFromDate + "' do not fall on a meeting date"; final String errorMessage = "First repayment date '" + repaymentsStartingFromDate + "' do not fall on a meeting date";
throw new LoanApplicationDateException("first.repayment.date.do.not.match.meeting.date", errorMessage, throw new LoanApplicationDateException("first.repayment.date.do.not.match.meeting.date", errorMessage,
@@ -1784,7 +1784,6 @@ public final class LoanApplicationValidator {
} }
public void checkForProductMixRestrictions(final JsonElement element) { public void checkForProductMixRestrictions(final JsonElement element) {
final List<Long> activeLoansLoanProductIds; final List<Long> activeLoansLoanProductIds;
final Long productId = this.fromApiJsonHelper.extractLongNamed(LoanApiConstants.productIdParameterName, element); final Long productId = this.fromApiJsonHelper.extractLongNamed(LoanApiConstants.productIdParameterName, element);
final Long groupId = this.fromApiJsonHelper.extractLongNamed(LoanApiConstants.groupIdParameterName, element); final Long groupId = this.fromApiJsonHelper.extractLongNamed(LoanApiConstants.groupIdParameterName, element);
@@ -1869,17 +1868,17 @@ public final class LoanApplicationValidator {
Group group = groupRepository.findOneWithNotFoundDetection(groupId); Group group = groupRepository.findOneWithNotFoundDetection(groupId);
if (group != null && group.isActivatedAfter(submittedOnDate)) { if (group != null && group.isActivatedAfter(submittedOnDate)) {
final String errorMessage = "The date on which a loan is submitted cannot be earlier than groups's activation date."; final String errorMessage = "The date on which a loan is submitted cannot be earlier than group's activation date.";
throw new InvalidLoanStateTransitionException("submittal", "cannot.be.before.group.activation.date", errorMessage, throw new InvalidLoanStateTransitionException("submittal", "cannot.be.before.group.activation.date", errorMessage,
submittedOnDate, group.getActivationDate()); submittedOnDate, group.getActivationDate());
} }
}
if (DateUtils.isAfter(submittedOnDate, expectedDisbursementDate)) { if (DateUtils.isAfter(submittedOnDate, expectedDisbursementDate)) {
final String errorMessage = "The date on which a loan is submitted cannot be after its expected disbursement date: " final String errorMessage = "The date on which a loan is submitted cannot be after its expected disbursement date: "
+ expectedDisbursementDate; + expectedDisbursementDate;
throw new InvalidLoanStateTransitionException("submittal", "cannot.be.after.expected.disbursement.date", errorMessage, throw new InvalidLoanStateTransitionException("submittal", "cannot.be.after.expected.disbursement.date", errorMessage,
submittedOnDate, expectedDisbursementDate); submittedOnDate, expectedDisbursementDate);
}
} }
} }
@@ -442,7 +442,7 @@ public final class LoanTransactionValidator {
final Calendar calendar = calendarInstance.getCalendar(); final Calendar calendar = calendarInstance.getCalendar();
if (calendar != null && repaymentDate != null) { if (calendar != null && repaymentDate != null) {
// Disbursement date should fall on a meeting date // Disbursement date should fall on a meeting date
if (!CalendarUtils.isValidRedurringDate(calendar.getRecurrence(), calendar.getStartDateLocalDate(), repaymentDate)) { if (!CalendarUtils.isValidRecurringDate(calendar.getRecurrence(), calendar.getStartDateLocalDate(), repaymentDate)) {
final String errorMessage = "Transaction date '" + repaymentDate.toString() + "' does not fall on a meeting date."; final String errorMessage = "Transaction date '" + repaymentDate.toString() + "' does not fall on a meeting date.";
throw new NotValidRecurringDateException("loan.transaction.date", errorMessage, repaymentDate.toString(), throw new NotValidRecurringDateException("loan.transaction.date", errorMessage, repaymentDate.toString(),
calendar.getTitle()); calendar.getTitle());
@@ -1942,11 +1942,8 @@ public final class LoanProductDataValidator {
public void validateMinMaxConstraints(final JsonElement element, final DataValidatorBuilder baseDataValidator, public void validateMinMaxConstraints(final JsonElement element, final DataValidatorBuilder baseDataValidator,
final LoanProduct loanProduct) { final LoanProduct loanProduct) {
validatePrincipalMinMaxConstraint(element, loanProduct, baseDataValidator); validatePrincipalMinMaxConstraint(element, loanProduct, baseDataValidator);
validateNumberOfRepaymentsMinMaxConstraint(element, loanProduct, baseDataValidator); validateNumberOfRepaymentsMinMaxConstraint(element, loanProduct, baseDataValidator);
validateNominalInterestRatePerPeriodMinMaxConstraint(element, loanProduct, baseDataValidator); validateNominalInterestRatePerPeriodMinMaxConstraint(element, loanProduct, baseDataValidator);
} }
@@ -2029,7 +2026,6 @@ public final class LoanProductDataValidator {
private void validatePrincipalMinMaxConstraint(final JsonElement element, final LoanProduct loanProduct, private void validatePrincipalMinMaxConstraint(final JsonElement element, final LoanProduct loanProduct,
final DataValidatorBuilder baseDataValidator) { final DataValidatorBuilder baseDataValidator) {
boolean principalUpdated = false; boolean principalUpdated = false;
boolean minPrincipalUpdated = false; boolean minPrincipalUpdated = false;
boolean maxPrincipalUpdated = false; boolean maxPrincipalUpdated = false;
@@ -2555,11 +2551,7 @@ public final class LoanProductDataValidator {
} }
} }
private Integer defaultToZeroIfNull(final Integer value) { private Integer defaultToZeroIfNull(Integer value) {
Integer result = value; return value != null ? value : 0;
if (value == null) {
result = 0;
}
return result;
} }
} }