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