cherry pick of MIFOSX-368: fix error message being returned based on parameters being passed to api.
This commit is contained in:
+160
-15
@@ -50,17 +50,6 @@ public final class ClientDataValidator {
|
||||
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
|
||||
.resource(ClientApiConstants.CLIENT_RESOURCE_NAME);
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.accountNoParamName, element)) {
|
||||
final String accountNo = fromApiJsonHelper.extractStringNamed(ClientApiConstants.accountNoParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.accountNoParamName).value(accountNo).notBlank().notExceedingLengthOf(20);
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.externalIdParamName, element)) {
|
||||
final String externalId = fromApiJsonHelper.extractStringNamed(ClientApiConstants.externalIdParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.externalIdParamName).value(externalId).ignoreIfNull()
|
||||
.notExceedingLengthOf(100);
|
||||
}
|
||||
|
||||
final Long officeId = fromApiJsonHelper.extractLongNamed(ClientApiConstants.officeIdParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.officeIdParamName).value(officeId).notNull().integerGreaterThanZero();
|
||||
|
||||
@@ -69,6 +58,57 @@ public final class ClientDataValidator {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.groupIdParamName).value(groupId).notNull().integerGreaterThanZero();
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.accountNoParamName, element)) {
|
||||
final String accountNo = fromApiJsonHelper.extractStringNamed(ClientApiConstants.accountNoParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.accountNoParamName).value(accountNo).notBlank().notExceedingLengthOf(20);
|
||||
}
|
||||
|
||||
if (isFullnameProvided(element) || isIndividualNameProvided(element)) {
|
||||
|
||||
// 1. No individual name part provided and fullname provided
|
||||
if (isFullnameProvided(element) && !isIndividualNameProvided(element)) {
|
||||
fullnameCannotBeBlank(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 2. no fullname provided and individual name part provided
|
||||
if (isIndividualNameProvided(element) && !isFullnameProvided(element)) {
|
||||
validateRequiredIndividualNamePartsExist(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 3. both provided
|
||||
if (isFullnameProvided(element) && isIndividualNameProvided(element)) {
|
||||
validateIndividualNamePartsCannotBeUsedWithFullname(element, baseDataValidator);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (isFullnameParameterPassed(element) || isIndividualNamePartParameterPassed(element)) {
|
||||
|
||||
// 1. No individual name parameter passed and fullname passed
|
||||
if (isFullnameParameterPassed(element) && !isIndividualNamePartParameterPassed(element)) {
|
||||
fullnameCannotBeBlank(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 2. no fullname passed and individual name part passed
|
||||
if (isIndividualNamePartParameterPassed(element) && !isFullnameParameterPassed(element)) {
|
||||
validateRequiredIndividualNamePartsExist(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 3. both parameter types passed
|
||||
if (isFullnameParameterPassed(element) && isIndividualNamePartParameterPassed(element)) {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.idParamName).failWithCode(".no.name.details.passed");
|
||||
}
|
||||
|
||||
} else {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.idParamName).failWithCode(".no.name.details.passed");
|
||||
}
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.externalIdParamName, element)) {
|
||||
final String externalId = fromApiJsonHelper.extractStringNamed(ClientApiConstants.externalIdParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.externalIdParamName).value(externalId).ignoreIfNull()
|
||||
.notExceedingLengthOf(100);
|
||||
}
|
||||
|
||||
final Boolean active = fromApiJsonHelper.extractBooleanNamed(ClientApiConstants.activeParamName, element);
|
||||
if (active != null) {
|
||||
if (active.booleanValue()) {
|
||||
@@ -82,6 +122,71 @@ public final class ClientDataValidator {
|
||||
throwExceptionIfValidationWarningsExist(dataValidationErrors);
|
||||
}
|
||||
|
||||
private void validateIndividualNamePartsCannotBeUsedWithFullname(final JsonElement element, final DataValidatorBuilder baseDataValidator) {
|
||||
final String firstnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.firstnameParamName, element);
|
||||
if (StringUtils.isNotBlank(firstnameParam)) {
|
||||
final String fullnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam)
|
||||
.mustBeBlankWhenParameterProvided(ClientApiConstants.firstnameParamName, firstnameParam);
|
||||
}
|
||||
|
||||
final String middlenameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.middlenameParamName, element);
|
||||
if (StringUtils.isNotBlank(middlenameParam)) {
|
||||
final String fullnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam)
|
||||
.mustBeBlankWhenParameterProvided(ClientApiConstants.middlenameParamName, middlenameParam);
|
||||
}
|
||||
|
||||
final String lastnameParamName = fromApiJsonHelper.extractStringNamed(ClientApiConstants.lastnameParamName, element);
|
||||
if (StringUtils.isNotBlank(lastnameParamName)) {
|
||||
final String fullnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam)
|
||||
.mustBeBlankWhenParameterProvided(ClientApiConstants.lastnameParamName, lastnameParamName);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateRequiredIndividualNamePartsExist(final JsonElement element, final DataValidatorBuilder baseDataValidator) {
|
||||
final String firstnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.firstnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.firstnameParamName).value(firstnameParam).notBlank()
|
||||
.notExceedingLengthOf(50);
|
||||
|
||||
final String middlenameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.middlenameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.middlenameParamName).value(middlenameParam).ignoreIfNull()
|
||||
.notExceedingLengthOf(50);
|
||||
|
||||
final String lastnameParamName = fromApiJsonHelper.extractStringNamed(ClientApiConstants.lastnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.lastnameParamName).value(lastnameParamName).notBlank()
|
||||
.notExceedingLengthOf(50);
|
||||
}
|
||||
|
||||
private void fullnameCannotBeBlank(final JsonElement element, final DataValidatorBuilder baseDataValidator) {
|
||||
final String fullnameParam = fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam).notBlank().notExceedingLengthOf(100);
|
||||
}
|
||||
|
||||
private boolean isIndividualNamePartParameterPassed(final JsonElement element) {
|
||||
return fromApiJsonHelper.parameterExists(ClientApiConstants.firstnameParamName, element)
|
||||
|| fromApiJsonHelper.parameterExists(ClientApiConstants.middlenameParamName, element)
|
||||
|| fromApiJsonHelper.parameterExists(ClientApiConstants.lastnameParamName, element);
|
||||
}
|
||||
|
||||
private boolean isFullnameParameterPassed(final JsonElement element) {
|
||||
return fromApiJsonHelper.parameterExists(ClientApiConstants.fullnameParamName, element);
|
||||
}
|
||||
|
||||
private boolean isIndividualNameProvided(final JsonElement element) {
|
||||
final String firstname = fromApiJsonHelper.extractStringNamed(ClientApiConstants.firstnameParamName, element);
|
||||
final String middlename = fromApiJsonHelper.extractStringNamed(ClientApiConstants.middlenameParamName, element);
|
||||
final String lastname = fromApiJsonHelper.extractStringNamed(ClientApiConstants.lastnameParamName, element);
|
||||
|
||||
return StringUtils.isNotBlank(firstname) || StringUtils.isNotBlank(middlename) || StringUtils.isNotBlank(lastname);
|
||||
}
|
||||
|
||||
private boolean isFullnameProvided(final JsonElement element) {
|
||||
final String fullname = fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName, element);
|
||||
return StringUtils.isNotBlank(fullname);
|
||||
}
|
||||
|
||||
public void validateForUpdate(final String json) {
|
||||
|
||||
if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); }
|
||||
@@ -102,10 +207,44 @@ public final class ClientDataValidator {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.accountNoParamName).value(accountNo).notBlank().notExceedingLengthOf(20);
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.externalIdParamName, element)) {
|
||||
atLeastOneParameterPassedForUpdate = true;
|
||||
final String externalId = fromApiJsonHelper.extractStringNamed(ClientApiConstants.externalIdParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.externalIdParamName).value(externalId).notExceedingLengthOf(100);
|
||||
if (isFullnameProvided(element) || isIndividualNameProvided(element)) {
|
||||
|
||||
// 1. No individual name part provided and fullname provided
|
||||
if (isFullnameProvided(element) && !isIndividualNameProvided(element)) {
|
||||
fullnameCannotBeBlank(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 2. no fullname provided and individual name part provided
|
||||
if (isIndividualNameProvided(element) && !isFullnameProvided(element)) {
|
||||
validateRequiredIndividualNamePartsExist(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 3. both provided
|
||||
if (isFullnameProvided(element) && isIndividualNameProvided(element)) {
|
||||
validateIndividualNamePartsCannotBeUsedWithFullname(element, baseDataValidator);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (isFullnameParameterPassed(element) || isIndividualNamePartParameterPassed(element)) {
|
||||
|
||||
// 1. No individual name parameter passed and fullname passed
|
||||
if (isFullnameParameterPassed(element) && !isIndividualNamePartParameterPassed(element)) {
|
||||
fullnameCannotBeBlank(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 2. no fullname passed and individual name part passed
|
||||
if (isIndividualNamePartParameterPassed(element) && !isFullnameParameterPassed(element)) {
|
||||
validateRequiredIndividualNamePartsExist(element, baseDataValidator);
|
||||
}
|
||||
|
||||
// 3. both parameter types passed
|
||||
if (isFullnameParameterPassed(element) && isIndividualNamePartParameterPassed(element)) {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.idParamName).failWithCode(".no.name.details.passed");
|
||||
}
|
||||
|
||||
} else {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.idParamName).failWithCode(".no.name.details.passed");
|
||||
}
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.fullnameParamName, element)) {
|
||||
@@ -124,6 +263,12 @@ public final class ClientDataValidator {
|
||||
atLeastOneParameterPassedForUpdate = true;
|
||||
}
|
||||
|
||||
if (fromApiJsonHelper.parameterExists(ClientApiConstants.externalIdParamName, element)) {
|
||||
atLeastOneParameterPassedForUpdate = true;
|
||||
final String externalId = fromApiJsonHelper.extractStringNamed(ClientApiConstants.externalIdParamName, element);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.externalIdParamName).value(externalId).notExceedingLengthOf(100);
|
||||
}
|
||||
|
||||
final Boolean active = fromApiJsonHelper.extractBooleanNamed(ClientApiConstants.activeParamName, element);
|
||||
if (active != null) {
|
||||
if (active.booleanValue()) {
|
||||
|
||||
+1
-2
@@ -328,9 +328,8 @@ public final class Client extends AbstractPersistable<Long> {
|
||||
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.lastnameParamName).value(this.lastname)
|
||||
.mustBeBlankWhenParameterProvided(ClientApiConstants.fullnameParamName, this.fullname);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (StringUtils.isBlank(this.fullname)) {
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.firstnameParamName).value(this.firstname).notBlank()
|
||||
.notExceedingLengthOf(50);
|
||||
baseDataValidator.reset().parameter(ClientApiConstants.middlenameParamName).value(this.middlename).ignoreIfNull()
|
||||
|
||||
Reference in New Issue
Block a user