/** * Resolves a boolean expression (validation or visible expression) * * @param expression JavaScript expression * @param entity entity used during expression evaluation * @return <code>true</code> or <code>false</code> * @throws MolgenisDataException if the script resolves to null or to a non boolean */ boolean resolveBooleanExpression(String expression, Entity entity) { return resolveBooleanExpressions(singletonList(expression), entity).get(0); }
private Set<ConstraintViolation> checkValidationExpressions(Entity entity, EntityType meta) { List<String> validationExpressions = new ArrayList<>(); List<Attribute> expressionAttributes = new ArrayList<>(); for (Attribute attribute : meta.getAtomicAttributes()) { if (StringUtils.isNotBlank(attribute.getValidationExpression())) { expressionAttributes.add(attribute); validationExpressions.add(attribute.getValidationExpression()); } } Set<ConstraintViolation> violations = new LinkedHashSet<>(); if (!validationExpressions.isEmpty()) { List<Boolean> results = expressionValidator.resolveBooleanExpressions(validationExpressions, entity); for (int i = 0; i < results.size(); i++) { if (!results.get(i)) { violations.add( createConstraintViolation( entity, expressionAttributes.get(i), meta, format("Offended validation expression: %s", validationExpressions.get(i)))); } } } return violations; }
private Set<ConstraintViolation> checkNullableExpressions(Entity entity, EntityType entityType) { List<String> nullableExpressions = new ArrayList<>(); List<Attribute> expressionAttributes = new ArrayList<>(); for (Attribute attribute : entityType.getAtomicAttributes()) { String nullableExpression = attribute.getNullableExpression(); if (nullableExpression != null) { expressionAttributes.add(attribute); nullableExpressions.add(nullableExpression); } } Set<ConstraintViolation> violations = new LinkedHashSet<>(); if (!nullableExpressions.isEmpty()) { List<Boolean> results = expressionValidator.resolveBooleanExpressions(nullableExpressions, entity); for (int i = 0; i < results.size(); i++) { if (!results.get(i) && EntityUtils.isNullValue(entity, expressionAttributes.get(i))) { violations.add( createConstraintViolation( entity, expressionAttributes.get(i), entityType, format("Offended nullable expression: %s", nullableExpressions.get(i)))); } } } return violations; }