/** * Add an error without reference to component causing it. * @param description error description */ public void add(String description) { add(null, description); }
protected void checkForNameDuplication(ValidationErrors errors, Multimap<String, BandDefinition> names) { for (String name : names.keySet()) { Collection<BandDefinition> bandDefinitionsWithsSameNames = names.get(name); if (bandDefinitionsWithsSameNames != null && bandDefinitionsWithsSameNames.size() > 1) { errors.add(formatMessage("error.bandNamesDuplicated", name)); } } }
/** * Validate cross-field BeanValidation rules. * * @param origin screen controller * @param item item to validate * @return validation errors */ public ValidationErrors validateCrossFieldRules(@SuppressWarnings("unused") FrameOwner origin, Entity item) { ValidationErrors errors = new ValidationErrors(); Validator validator = beanValidation.getValidator(); Set<ConstraintViolation<Entity>> violations = validator.validate(item, UiCrossFieldChecks.class); violations.stream() .filter(violation -> { Path propertyPath = violation.getPropertyPath(); Path.Node lastNode = Iterables.getLast(propertyPath); return lastNode.getKind() == ElementKind.BEAN; }) .forEach(violation -> errors.add(violation.getMessage())); return errors; }
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); //remove errors from widget frames errors.getAll().removeIf(error -> !"dashboard$dashboardEditFieldGroup1".equals(error.component.getParent().getId())); List<Widget> dashboardWidgets = dashboardDs.getItem().getWidgets(); Map<String, Long> widgetsCount = dashboardWidgets.stream() .collect(Collectors.groupingBy(Widget::getWidgetId, Collectors.counting())); List<String> nonUniqueIds = widgetsCount.entrySet().stream() .filter(es -> es.getValue() > 1) .map(Map.Entry::getKey) .collect(toList()); if (nonUniqueIds.size() > 0) { errors.add(null, formatMessage("uniqueWidgetId", String.join(",", nonUniqueIds))); } }
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); if (fileUpload.getFileId() == null) { errors.add(getMessage("reportException.noFile")); return; } String extension = FilenameUtils.getExtension(fileUpload.getFileName()); if (!StringUtils.equalsIgnoreCase(extension, ExportFormat.ZIP.getFileExt())) { errors.add(formatMessage("reportException.wrongFileType", extension)); } } }
public void validateAdditionalRules(ValidationErrors errors) { // all previous validations return no errors if (crossFieldValidate && errors.isEmpty()) { BeanValidation beanValidation = getBeanLocator().get(BeanValidation.NAME); Validator validator = beanValidation.getValidator(); Set<ConstraintViolation<Entity>> violations = validator.validate(getItem(), UiCrossFieldChecks.class); violations.stream() .filter(violation -> { Path propertyPath = violation.getPropertyPath(); Path.Node lastNode = Iterables.getLast(propertyPath); return lastNode.getKind() == ElementKind.BEAN; }) .forEach(violation -> errors.add(violation.getMessage())); } }
/** * Place component with error message to validation errors container. * * @param component validatable component * @param e exception * @param errors errors container */ public static void fillErrorMessages(Validatable component, ValidationException e, ValidationErrors errors) { if (e instanceof ValidationException.HasRelatedComponent) { errors.add(((ValidationException.HasRelatedComponent) e).getComponent(), e.getMessage()); } else if (e instanceof CompositeValidationException) { for (CompositeValidationException.ViolationCause cause : ((CompositeValidationException) e).getCauses()) { errors.add((Component) component, cause.getMessage()); } } else if (e instanceof FieldGroup.FieldsValidationException) { FieldGroup.FieldsValidationException fve = (FieldGroup.FieldsValidationException) e; Map<Validatable, ValidationException> fields = fve.getProblemFields(); for (Map.Entry<Validatable, ValidationException> problem : fields.entrySet()) { ValidationException exception = problem.getValue(); fillErrorMessages(problem.getKey(), exception, errors); } } else { errors.add((Component) component, e.getMessage()); } }
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); WidgetTemplate widgetTemplate = widgetTemplateDs.getItem(); if (StringUtils.isEmpty(widgetTemplate.getWidgetModel())) { errors.add(widgetTypeLookup, getMessage("emptyWidgetError")); } } }
protected ValidationErrors validatePivotTableDescription(PivotTableDescription description) { ValidationErrors validationErrors = new ValidationErrors(); if (description.getBandName() == null) { validationErrors.add(getMessage("pivotTableEdit.bandRequired")); validationErrors.add(getMessage("pivotTableEdit.rendererRequired")); validationErrors.add(getMessage("pivotTableEdit.aggregationsRequired")); validationErrors.add(getMessage("pivotTableEdit.propertiesRequired")); validationErrors.add(getMessage("pivotTableEdit.aggregationPropertiesRequired")); validationErrors.add(getMessage("pivotTableEdit.columnsOrRowsRequired")); validationErrors.add(getMessage("pivotTableEdit.propertyIntersection")); } else if (description.getProperties() != null) { Set<String> propertyNames = description.getProperties().stream() .collect(Collectors.toSet()); if (propertyNames.size() != description.getProperties().size()) { validationErrors.add(getMessage("pivotTableEdit.propertyIntersection"));
@Override protected boolean preCommit() { if (super.preCommit()) { PivotTableAggregation aggregation = getItem(); boolean hasMatches = existingItems.stream(). anyMatch(e -> !Objects.equals(aggregation, e) && Objects.equals(aggregation.getCaption(), e.getCaption())); if (hasMatches) { ValidationErrors validationErrors = new ValidationErrors(); validationErrors.add(getMessage("pivotTableEdit.uniqueAggregationOptionCaption")); showValidationErrors(validationErrors); return false; } return true; } return false; }
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); UserSubstitution substitution = getItem(); if (substitution.getStartDate() != null && substitution.getEndDate() != null) { if (substitution.getStartDate().getTime() > substitution.getEndDate().getTime()) { errors.add(startDateField, getMessage("dateOrderError")); } } } }
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); Widget widget = widgetDs.getItem(); if (widget.getDashboard() != null) { List<Widget> dashboardWidgets = widget.getDashboard().getWidgets(); long cnt = dashboardWidgets.stream() .filter(w -> !w.getId().equals(widget.getId()) && w.getWidgetId().equals(widget.getWidgetId())) .count(); if (cnt > 0) { errors.add(fieldGroup.getComponent("widgetId"), getMessage("uniqueWidgetId")); } } }
errors.add(getMessage("error.bandNameNull")); errors.add(formatMessage("error.bandOrientationNull", band.getName())); for (DataSet dataSet : band.getDataSets()) { if (StringUtils.isBlank(dataSet.getName())) { errors.add(getMessage("error.dataSetNameNull")); errors.add(formatMessage("error.dataSetTypeNull", dataSet.getName())); || dataSet.getType() == DataSetType.JPQL) { if (StringUtils.isBlank(dataSet.getScript())) { errors.add(formatMessage("error.dataSetScriptNull", dataSet.getName())); errors.add(formatMessage("error.jsonDataSetScriptNull", dataSet.getName()));
@Override protected void postValidate(ValidationErrors errors) { super.postValidate(errors); String password = passwField.getValue(); if (errors.isEmpty()) { String currentPassword = currentPasswordField.getValue(); String passwordConfirmation = confirmPasswField.getValue(); UUID targetUserId; if (user == null) { targetUserId = userSession.getUser().getId(); } else { targetUserId = user.getId(); } if (currentPasswordRequired && !userManagementService.checkPassword(targetUserId, currentPassword)) { errors.add(currentPasswordField, getMessage("wrongCurrentPassword")); } else if (userManagementService.checkPassword(targetUserId, password)) { errors.add(passwField, getMessage("currentPasswordWarning")); } else if (!Objects.equals(password, passwordConfirmation)) { errors.add(confirmPasswField, getMessage("passwordsDoNotMatch")); } else { if (clientConfig.getPasswordPolicyEnabled()) { String regExp = clientConfig.getPasswordPolicyRegExp(); if (!password.matches(regExp)) { errors.add(passwField, getMessage("simplePassword")); } } } } }
@Override public void postValidate(ValidationErrors errors) { @SuppressWarnings("unchecked") CollectionDatasource<CategoryAttribute, UUID> parent = (CollectionDatasource<CategoryAttribute, UUID>) ((DatasourceImplementation) attributeDs).getParent(); if (parent != null) { CategoryAttribute categoryAttribute = getItem(); for (UUID id : parent.getItemIds()) { CategoryAttribute ca = parent.getItemNN(id); if (ca.getName().equals(categoryAttribute.getName()) && (!ca.equals(categoryAttribute))) { errors.add(getMessage("uniqueName")); return; } else if (ca.getCode() != null && ca.getCode().equals(categoryAttribute.getCode()) && (!ca.equals(categoryAttribute))) { errors.add(getMessage("uniqueCode")); return; } } } }
@Override protected void postValidate(ValidationErrors errors) { if (getItem().getRootBand() == null) { errors.add(getMessage("error.rootBandNull")); } if (CollectionUtils.isNotEmpty(getItem().getRootBandDefinition().getChildrenBandDefinitions())) { Multimap<String, BandDefinition> names = ArrayListMultimap.create(); names.put(getItem().getRootBand().getName(), getItem().getRootBandDefinition()); for (BandDefinition band : getItem().getRootBandDefinition().getChildrenBandDefinitions()) { validateBand(errors, band, names); } checkForNameDuplication(errors, names); } }