use of org.openforis.idm.metamodel.validation.UniquenessCheck in project collect by openforis.
the class SurveyValidator method validateCheck.
private List<SurveyValidationResult> validateCheck(AttributeDefinition node, Check<?> check) {
List<SurveyValidationResult> results = new ArrayList<SurveyValidationResult>();
// validate condition expression
addBooleanExpressionValidationResult(results, node, check.getCondition(), "survey.validation.check.error.invalid_condition_expression");
if (check instanceof ComparisonCheck) {
addBooleanExpressionValidationResult(results, node, ((ComparisonCheck) check).getExpression(), "survey.validation.check.comparison.error.invalid_comparison_expression");
} else if (check instanceof CustomCheck) {
addBooleanExpressionValidationResult(results, node, ((CustomCheck) check).getExpression(), "survey.validation.check.custom.error.error.invalid_custom_expression");
} else if (check instanceof DistanceCheck) {
// validate source point
addValueExpressionValidationResult(results, node, ((DistanceCheck) check).getSourcePointExpression(), "survey.validation.check.distance.error.invalid_source_point_expression");
// validate destination point
addValueExpressionValidationResult(results, node, ((DistanceCheck) check).getDestinationPointExpression(), "survey.validation.check.distance.error.invalid_destination_point_expression");
// validate min distance
addValueExpressionValidationResult(results, node, ((DistanceCheck) check).getMinDistanceExpression(), "survey.validation.check.distance.error.invalid_min_distance_expression");
// validate max distance
addValueExpressionValidationResult(results, node, ((DistanceCheck) check).getMaxDistanceExpression(), "survey.validation.check.distance.error.invalid_max_distance_expression");
} else if (check instanceof PatternCheck) {
String regEx = ((PatternCheck) check).getRegularExpression();
if (StringUtils.isNotBlank(regEx)) {
ExpressionValidationResult result = expressionValidator.validateRegularExpression(regEx);
if (result.isError()) {
results.add(new SurveyValidationResult(node.getPath(), "survey.validation.check.pattern.error.invalid_pattern_expression", result.getMessage()));
}
}
} else if (check instanceof UniquenessCheck) {
String expression = ((UniquenessCheck) check).getExpression();
if (StringUtils.isNotBlank(expression)) {
ExpressionValidationResult result = expressionValidator.validateUniquenessExpression(node.getParentEntityDefinition(), node, expression);
if (result.isError()) {
results.add(new SurveyValidationResult(node.getPath(), "survey.validation.check.uniqueness.error.invalid_uniqueness_expression", result.getMessage()));
}
}
}
return results;
}
use of org.openforis.idm.metamodel.validation.UniquenessCheck in project collect by openforis.
the class ValidationMessageBuilder method getMessageKey.
protected String getMessageKey(Attribute<?, ?> attribute, ValidationResult validationResult) {
String key = null;
ValidationRule<?> validator = validationResult.getValidator();
if (validator instanceof CodeValidator) {
key = "validation.codeError";
} else if (validator instanceof CodeParentValidator) {
key = "validation.codeParentError";
} else if (validator instanceof ComparisonCheck) {
key = "validation.comparisonError";
} else if (validator instanceof CoordinateValidator) {
if (attribute.isFilled()) {
key = "validation.coordinateError";
} else {
key = "validation.incompleteCoordinateError";
}
} else if (validator instanceof DateValidator) {
if (attribute.isFilled()) {
key = "validation.dateError";
} else {
key = "validation.incompleteDateError";
}
} else if (validator instanceof DistanceCheck) {
key = "validation.distanceError";
} else if (validator instanceof EntityKeyValidator) {
key = "validation.entityKeyUniquenessError";
} else if (validator instanceof ExternalCodeValidator) {
key = "validation.externalCodeError";
} else if (validator instanceof IntegerRangeValidator) {
key = "validation.integerRangeError";
} else if (validator instanceof PatternCheck) {
key = "validation.patternError";
} else if (validator instanceof RealRangeValidator) {
key = "validation.realRangeError";
} else if (validator instanceof RecordKeyUniquenessValidator) {
key = "validation.recordKeyUniquenessError";
} else if (validator instanceof SpecifiedValidator) {
if (validationResult.getFlag() == ValidationResultFlag.ERROR) {
key = "validation.specifiedError";
} else {
key = "validation.requiredField";
}
} else if (validator instanceof TimeValidator) {
if (attribute.isFilled()) {
key = "validation.timeError";
} else {
key = "validation.incompleteTimeError";
}
} else if (validator instanceof TaxonVernacularLanguageValidator) {
TaxonAttribute taxonAttr = (TaxonAttribute) attribute;
if (StringUtils.isNotBlank(taxonAttr.getVernacularName()) && StringUtils.isBlank(taxonAttr.getLanguageCode())) {
key = "validator.taxon.missingVernacularLanguage";
} else {
key = "validator.taxon.vernacularLanguageNotRequired";
}
} else if (validator instanceof UniquenessCheck) {
key = "validation.uniquenessError";
} else if (validator instanceof NumberValueUnitValidator || validator instanceof NumericRangeUnitValidator) {
key = "validation.unitNotSpecifiedError";
}
return key;
}
use of org.openforis.idm.metamodel.validation.UniquenessCheck in project collect by openforis.
the class StateDependencyMap method registerDependencies.
private void registerDependencies(AttributeDefinition attributeDefinition) {
List<AttributeDefault> attributeDefaults = attributeDefinition.getAttributeDefaults();
for (AttributeDefault attributeDefault : attributeDefaults) {
registerDependencies(attributeDefinition, attributeDefault.getCondition(), defaultValueDependencies);
registerDependencies(attributeDefinition, attributeDefault.getExpression(), defaultValueDependencies);
}
List<Check> checks = attributeDefinition.getChecks();
for (Check check : checks) {
registerDependencies(attributeDefinition, check.getCondition(), checkDependencies);
if (check instanceof ComparisonCheck) {
registerDependencies(attributeDefinition, ((ComparisonCheck) check).getEqualsExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((ComparisonCheck) check).getLessThanExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((ComparisonCheck) check).getLessThanOrEqualsExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((ComparisonCheck) check).getGreaterThanExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((ComparisonCheck) check).getGreaterThanOrEqualsExpression(), checkDependencies);
} else if (check instanceof CustomCheck) {
registerDependencies(attributeDefinition, ((CustomCheck) check).getExpression(), checkDependencies);
} else if (check instanceof DistanceCheck) {
registerDependencies(attributeDefinition, ((DistanceCheck) check).getDestinationPointExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((DistanceCheck) check).getMaxDistanceExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((DistanceCheck) check).getMinDistanceExpression(), checkDependencies);
registerDependencies(attributeDefinition, ((DistanceCheck) check).getSourcePointExpression(), checkDependencies);
} else if (check instanceof UniquenessCheck) {
registerDependencies(attributeDefinition, ((UniquenessCheck) check).getExpression(), checkDependencies);
}
}
}
Aggregations