Search in sources :

Example 1 with DistanceCheck

use of org.openforis.idm.metamodel.validation.DistanceCheck in project collect by openforis.

the class DistanceCheckTest method testEvalutateDistanceCheckDestinationPoint.

@Test
public void testEvalutateDistanceCheckDestinationPoint() {
    EntityBuilder.addValue(cluster, "id", new Code("001"));
    Coordinate coord = Coordinate.parseCoordinate("SRID=EPSG:21035;POINT(885750 9333820)");
    CoordinateAttribute vehicleLocation = EntityBuilder.addValue(cluster, "vehicle_location", coord);
    CoordinateAttributeDefinition defn = vehicleLocation.getDefinition();
    DistanceCheck check = (DistanceCheck) defn.getChecks().get(0);
    Coordinate destinationPoint = check.evaluateDestinationPoint(vehicleLocation);
    Assert.assertEquals(TEST_COORDINATE, destinationPoint);
}
Also used : CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) Coordinate(org.openforis.idm.model.Coordinate) CoordinateAttribute(org.openforis.idm.model.CoordinateAttribute) Code(org.openforis.idm.model.Code) Test(org.junit.Test)

Example 2 with DistanceCheck

use of org.openforis.idm.metamodel.validation.DistanceCheck in project collect by openforis.

the class DistanceCheckTest method testEvalutateDistanceCheckMaxDistance.

@Test
public void testEvalutateDistanceCheckMaxDistance() {
    EntityBuilder.addValue(cluster, "id", new Code("001"));
    Coordinate coord = Coordinate.parseCoordinate("SRID=EPSG:21035;POINT(885750 9333820)");
    CoordinateAttribute vehicleLocation = EntityBuilder.addValue(cluster, "vehicle_location", coord);
    CoordinateAttributeDefinition defn = vehicleLocation.getDefinition();
    DistanceCheck check = (DistanceCheck) defn.getChecks().get(0);
    Double maxDistance = check.evaluateMaxDistance(vehicleLocation);
    Assert.assertEquals(Double.valueOf(100000d), maxDistance);
}
Also used : CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) Coordinate(org.openforis.idm.model.Coordinate) CoordinateAttribute(org.openforis.idm.model.CoordinateAttribute) Code(org.openforis.idm.model.Code) Test(org.junit.Test)

Example 3 with DistanceCheck

use of org.openforis.idm.metamodel.validation.DistanceCheck 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;
}
Also used : PatternCheck(org.openforis.idm.metamodel.validation.PatternCheck) CustomCheck(org.openforis.idm.metamodel.validation.CustomCheck) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) UniquenessCheck(org.openforis.idm.metamodel.validation.UniquenessCheck) ArrayList(java.util.ArrayList) ComparisonCheck(org.openforis.idm.metamodel.validation.ComparisonCheck) ExpressionValidationResult(org.openforis.idm.metamodel.expression.ExpressionValidator.ExpressionValidationResult)

Example 4 with DistanceCheck

use of org.openforis.idm.metamodel.validation.DistanceCheck 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;
}
Also used : DateValidator(org.openforis.idm.metamodel.validation.DateValidator) IntegerRangeValidator(org.openforis.idm.metamodel.validation.IntegerRangeValidator) TimeValidator(org.openforis.idm.metamodel.validation.TimeValidator) TaxonVernacularLanguageValidator(org.openforis.idm.metamodel.validation.TaxonVernacularLanguageValidator) NumberValueUnitValidator(org.openforis.idm.metamodel.validation.NumberValueUnitValidator) ExternalCodeValidator(org.openforis.idm.metamodel.validation.ExternalCodeValidator) CodeValidator(org.openforis.idm.metamodel.validation.CodeValidator) ComparisonCheck(org.openforis.idm.metamodel.validation.ComparisonCheck) EntityKeyValidator(org.openforis.idm.metamodel.validation.EntityKeyValidator) NumericRangeUnitValidator(org.openforis.idm.metamodel.validation.NumericRangeUnitValidator) PatternCheck(org.openforis.idm.metamodel.validation.PatternCheck) RealRangeValidator(org.openforis.idm.metamodel.validation.RealRangeValidator) TaxonAttribute(org.openforis.idm.model.TaxonAttribute) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) ExternalCodeValidator(org.openforis.idm.metamodel.validation.ExternalCodeValidator) UniquenessCheck(org.openforis.idm.metamodel.validation.UniquenessCheck) CodeParentValidator(org.openforis.idm.metamodel.validation.CodeParentValidator) CoordinateValidator(org.openforis.idm.metamodel.validation.CoordinateValidator)

Example 5 with DistanceCheck

use of org.openforis.idm.metamodel.validation.DistanceCheck 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);
        }
    }
}
Also used : CustomCheck(org.openforis.idm.metamodel.validation.CustomCheck) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) UniquenessCheck(org.openforis.idm.metamodel.validation.UniquenessCheck) AttributeDefault(org.openforis.idm.metamodel.AttributeDefault) CustomCheck(org.openforis.idm.metamodel.validation.CustomCheck) UniquenessCheck(org.openforis.idm.metamodel.validation.UniquenessCheck) Check(org.openforis.idm.metamodel.validation.Check) DistanceCheck(org.openforis.idm.metamodel.validation.DistanceCheck) ComparisonCheck(org.openforis.idm.metamodel.validation.ComparisonCheck) ComparisonCheck(org.openforis.idm.metamodel.validation.ComparisonCheck)

Aggregations

DistanceCheck (org.openforis.idm.metamodel.validation.DistanceCheck)5 ComparisonCheck (org.openforis.idm.metamodel.validation.ComparisonCheck)3 UniquenessCheck (org.openforis.idm.metamodel.validation.UniquenessCheck)3 Test (org.junit.Test)2 CoordinateAttributeDefinition (org.openforis.idm.metamodel.CoordinateAttributeDefinition)2 CustomCheck (org.openforis.idm.metamodel.validation.CustomCheck)2 PatternCheck (org.openforis.idm.metamodel.validation.PatternCheck)2 Code (org.openforis.idm.model.Code)2 Coordinate (org.openforis.idm.model.Coordinate)2 CoordinateAttribute (org.openforis.idm.model.CoordinateAttribute)2 ArrayList (java.util.ArrayList)1 AttributeDefault (org.openforis.idm.metamodel.AttributeDefault)1 ExpressionValidationResult (org.openforis.idm.metamodel.expression.ExpressionValidator.ExpressionValidationResult)1 Check (org.openforis.idm.metamodel.validation.Check)1 CodeParentValidator (org.openforis.idm.metamodel.validation.CodeParentValidator)1 CodeValidator (org.openforis.idm.metamodel.validation.CodeValidator)1 CoordinateValidator (org.openforis.idm.metamodel.validation.CoordinateValidator)1 DateValidator (org.openforis.idm.metamodel.validation.DateValidator)1 EntityKeyValidator (org.openforis.idm.metamodel.validation.EntityKeyValidator)1 ExternalCodeValidator (org.openforis.idm.metamodel.validation.ExternalCodeValidator)1