From 5db336b36526568f395875b8052e8fc002df9d82 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Mon, 3 Feb 2020 10:08:48 -0500 Subject: [PATCH] add ECField.required attribute, enforce in validator --- .../cobbzilla/wizard/model/entityconfig/EntityConfig.java | 8 +++++++- .../wizard/model/entityconfig/annotations/ECField.java | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityConfig.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityConfig.java index 5749857..15f99c7 100644 --- a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityConfig.java +++ b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityConfig.java @@ -530,6 +530,7 @@ public class EntityConfig { ECForeignKey fkAnnotation, Map fieldIndexes) { final EntityFieldConfig cfg = new EntityFieldConfig() + .setRequired(fieldAnnotation.required()) .setMode(fieldAnnotation.mode()) .setType(getFieldType(fieldName, fieldAnnotation, accessor, fkAnnotation)); if (!empty(fieldAnnotation.name())) cfg.setName(fieldAnnotation.name()); @@ -665,7 +666,12 @@ public class EntityConfig { final Locale locale = (o instanceof HasLocale) ? ((HasLocale) o).getLocale() : Locale.getDefault(); for (EntityFieldConfig field : getFields().values()) { final Object value = ReflectionUtil.get(o, field.getName()); - if (value != null) { + if (empty(value)) { + if (field.required()) { + if (validation == null) validation = new ValidationResult(); + validation.addViolation("err."+field.getName()+".required"); + } + } else { ValidationResult fieldValidation = field.validate(locale, validator, value); if (fieldValidation != null) { if (validation == null) validation = new ValidationResult(); diff --git a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECField.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECField.java index 1795145..7dde23b 100644 --- a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECField.java +++ b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECField.java @@ -18,6 +18,7 @@ public @interface ECField { String displayName() default ""; EntityFieldMode mode() default EntityFieldMode.standard; EntityFieldType type() default EntityFieldType.none_set; + boolean required() default true; int length() default -1; EntityFieldControl control() default EntityFieldControl.unset; String options() default "";