From 87be468e397bfc37a5fab42b4a66e7f18acbc3a5 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 12:23:59 +0100 Subject: [PATCH] Add Number decorator Fixe #42 Fixe #42 --- .../ui/core/generators/NumberGenerator.java | 6 ++++- .../decorators/NumberSchemaDecorator.java | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/asfjava/ui/core/schema/decorators/NumberSchemaDecorator.java diff --git a/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java b/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java index 36eb397..58dd7c4 100644 --- a/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java @@ -12,9 +12,13 @@ public class NumberGenerator implements FormDefinitionGenerator { public void generate(ObjectNode fieldFormDefinition, Field field) { Number annotation = field.getAnnotation(Number.class); fieldFormDefinition.put("key", field.getName()); - fieldFormDefinition.put("title", annotation.title()); fieldFormDefinition.put("type", "number"); + String title = annotation.title(); + if (!title.isEmpty()) { + fieldFormDefinition.put("title", title); + } + String description = annotation.description(); if (!description.isEmpty()) { fieldFormDefinition.put("description", description); diff --git a/src/main/java/io/asfjava/ui/core/schema/decorators/NumberSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorators/NumberSchemaDecorator.java new file mode 100644 index 0000000..29a573f --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/schema/decorators/NumberSchemaDecorator.java @@ -0,0 +1,24 @@ +package io.asfjava.ui.core.schema.decorators; + +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; +import com.fasterxml.jackson.module.jsonSchema.types.StringSchema; + +import io.asfjava.ui.core.form.Number; + +public class NumberSchemaDecorator implements SchemaDecorator { + + @Override + public void customizeSchema(BeanProperty property, JsonSchema jsonschema) { + Number annotation = property.getAnnotation(Number.class); + if (annotation != null && annotation.title() != null) { + ((StringSchema) jsonschema).setTitle(annotation.title()); + } + } + + @Override + public String getAnnotation() { + return Number.class.getName(); + } + +}