From 8a5459c9beb7ae72dde5fe860a6c5c5c14e9bed5 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Wed, 29 Sep 2021 08:58:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E7=A9=BA=E7=BC=BA?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/beans/meta/BeanProperty.java | 116 ++++++++++-------- 1 file changed, 64 insertions(+), 52 deletions(-) diff --git a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java index 7dc548a..a7a44c3 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java @@ -311,64 +311,17 @@ public class BeanProperty { * @return 结果 */ private static List parseExtras(Class clazz, List origin) { + List result = new ArrayList<>(); // 包含properties if (clazz.isAnnotationPresent(Properties.class)) { - List result = new ArrayList<>(); Properties properties = clazz.getAnnotation(Properties.class); for (Property prop : properties.value()) { - String key = prop.key(); - // 如果基础元数据已经包含了这部分,相当于重载属性,此时不会调整其他属性,而是替换名称(将来可能扩展更多) - Optional found = origin.stream().filter(property -> property.name.equals(key)) - .findFirst(); - if (found.isPresent()) { - BeanProperty property = found.get(); - if (prop.order() != 0) { - property.order = prop.order(); - } - if (StringUtils.isNotBlank(prop.group())) { - property.group = prop.group(); - } - // 只读状态不显示 - if (prop.readonly()) { - origin.remove(property); - } - // 存在校验,替换名称文案(仅inherit) - if (property.inherited && CollectionUtils.isNotEmpty(property.validation)) { - property.validation.forEach(validation -> validation.setMessage(validation.getMessage() - .replace(property.oldTitle, prop.title()))); - } - // 处理额外的表单属性 - if (ArrayUtils.isNotEmpty(prop.form())) { - applyFormItem(property, prop.form()[0]); - } - // 处理额外的映射 - if (ArrayUtils.isNotEmpty(prop.mapping())) { - property.extra.put(BeanProps.MAPPING, MergedAnnotations.from(prop.mapping()).get(MappedTo.class).asMap()); - } - // 处理值生成策略,此处可清除原策略 - if (ArrayUtils.isNotEmpty(prop.generated())) { - property.extra.put(BeanProps.GENERATED, MergedAnnotations.from(prop.mapping()).get(MappedTo.class).asMap()); - } else { - property.extra.remove(BeanProps.GENERATED); - if ("input-hidden".equals(property.extra.get(BeanProps.COMPONENT))) { - property.extra.remove(BeanProps.COMPONENT); - } - } - // 设置标题 - property.title = prop.title(); - } else { - BeanProperty property = new BeanProperty(); - property.setType(BeanPropertyType.STRING); - property.setName(key); - property.setTitle(prop.title()); - if (!prop.readonly()) { - result.add(property); - } - } + applyExtraProperty(result, origin, prop); } - return result; + } else if (clazz.isAnnotationPresent(Property.class)) { + applyExtraProperty(result, origin, clazz.getAnnotation(Property.class)); } - return Collections.emptyList(); + return result; } /** @@ -415,6 +368,65 @@ public class BeanProperty { } } + /** + * 使的额外的属性生效 + * + * @param result 结果集 + * @param origin 原属性集 + * @param prop 当前注解 + */ + private static void applyExtraProperty(List result, List origin, Property prop) { + String key = prop.key(); + // 如果基础元数据已经包含了这部分,相当于重载属性,此时不会调整其他属性,而是替换名称(将来可能扩展更多) + Optional found = origin.stream().filter(property -> property.name.equals(key)) + .findFirst(); + if (found.isPresent()) { + BeanProperty property = found.get(); + if (prop.order() != 0) { + property.order = prop.order(); + } + if (StringUtils.isNotBlank(prop.group())) { + property.group = prop.group(); + } + // 只读状态不显示 + if (prop.readonly()) { + origin.remove(property); + } + // 存在校验,替换名称文案(仅inherit) + if (property.inherited && CollectionUtils.isNotEmpty(property.validation)) { + property.validation.forEach(validation -> validation.setMessage(validation.getMessage() + .replace(property.oldTitle, prop.title()))); + } + // 处理额外的表单属性 + if (ArrayUtils.isNotEmpty(prop.form())) { + applyFormItem(property, prop.form()[0]); + } + // 处理额外的映射 + if (ArrayUtils.isNotEmpty(prop.mapping())) { + property.extra.put(BeanProps.MAPPING, MergedAnnotations.from(prop.mapping()).get(MappedTo.class).asMap()); + } + // 处理值生成策略,此处可清除原策略 + if (ArrayUtils.isNotEmpty(prop.generated())) { + property.extra.put(BeanProps.GENERATED, MergedAnnotations.from(prop.mapping()).get(MappedTo.class).asMap()); + } else { + property.extra.remove(BeanProps.GENERATED); + if ("input-hidden".equals(property.extra.get(BeanProps.COMPONENT))) { + property.extra.remove(BeanProps.COMPONENT); + } + } + // 设置标题 + property.title = prop.title(); + } else { + BeanProperty property = new BeanProperty(); + property.setType(BeanPropertyType.STRING); + property.setName(key); + property.setTitle(prop.title()); + if (!prop.readonly()) { + result.add(property); + } + } + } + /** * 设置当前对象的键值属性 *