From 0177f3a6be753f6a6c17fd7da70ab43e30fb7b1c Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 2 Apr 2024 23:03:41 +0300 Subject: [PATCH] Added support for LocalDateTime type & better support for basic numbers fixes #125, #127 --- .../AbstractAutoGeneratedCrudFormFactory.java | 9 -------- .../field/provider/DefaultFieldProvider.java | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/add-on/src/main/java/org/vaadin/crudui/form/AbstractAutoGeneratedCrudFormFactory.java b/add-on/src/main/java/org/vaadin/crudui/form/AbstractAutoGeneratedCrudFormFactory.java index ed0738c..e10b45e 100644 --- a/add-on/src/main/java/org/vaadin/crudui/form/AbstractAutoGeneratedCrudFormFactory.java +++ b/add-on/src/main/java/org/vaadin/crudui/form/AbstractAutoGeneratedCrudFormFactory.java @@ -265,21 +265,12 @@ protected void bindField(HasValue field, String property, Class propertyType, if(configuration.getConverters().containsKey(property)) { bindingBuilder = bindingBuilder.withConverter(configuration.getConverters().get(property)); - } else if (Double.class.isAssignableFrom(propertyType) || double.class.isAssignableFrom(propertyType)) { - bindingBuilder = bindingBuilder.withConverter(new StringToDoubleConverter(null, "Must be a number")); - } else if (Long.class.isAssignableFrom(propertyType) || long.class.isAssignableFrom(propertyType)) { bindingBuilder = bindingBuilder.withConverter(new StringToLongConverter(null, "Must be a number")); - } else if (BigDecimal.class.isAssignableFrom(propertyType)) { - bindingBuilder = bindingBuilder.withConverter(new StringToBigDecimalConverter(null, "Must be a number")); - } else if (BigInteger.class.isAssignableFrom(propertyType)) { bindingBuilder = bindingBuilder.withConverter(new StringToBigIntegerConverter(null, "Must be a number")); - } else if (Integer.class.isAssignableFrom(propertyType) || int.class.isAssignableFrom(propertyType)) { - bindingBuilder = bindingBuilder.withConverter(new StringToIntegerConverter(null, "Must be a number")); - } else if (Byte.class.isAssignableFrom(propertyType) || byte.class.isAssignableFrom(propertyType)) { bindingBuilder = bindingBuilder.withConverter(new StringToByteConverter(null, "Must be a number")); diff --git a/add-on/src/main/java/org/vaadin/crudui/form/impl/field/provider/DefaultFieldProvider.java b/add-on/src/main/java/org/vaadin/crudui/form/impl/field/provider/DefaultFieldProvider.java index 7e1b70f..a31fc9c 100644 --- a/add-on/src/main/java/org/vaadin/crudui/form/impl/field/provider/DefaultFieldProvider.java +++ b/add-on/src/main/java/org/vaadin/crudui/form/impl/field/provider/DefaultFieldProvider.java @@ -4,10 +4,16 @@ import com.vaadin.flow.component.checkbox.Checkbox; import com.vaadin.flow.component.combobox.ComboBox; import com.vaadin.flow.component.datepicker.DatePicker; +import com.vaadin.flow.component.datetimepicker.DateTimePicker; +import com.vaadin.flow.component.textfield.BigDecimalField; +import com.vaadin.flow.component.textfield.IntegerField; +import com.vaadin.flow.component.textfield.NumberField; import com.vaadin.flow.component.textfield.TextField; import org.vaadin.crudui.form.FieldProvider; +import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.Date; @@ -32,6 +38,22 @@ public HasValueAndElement buildField(Object t) { return new DatePicker(); } + if (LocalDateTime.class.isAssignableFrom(type)) { + return new DateTimePicker(); + } + + if (Double.class.isAssignableFrom(type) || type == double.class) { + return new NumberField(); + } + + if (Integer.class.isAssignableFrom(type) || type == int.class) { + return new IntegerField(); + } + + if (BigDecimal.class.isAssignableFrom(type)) { + return new BigDecimalField(); + } + if (Enum.class.isAssignableFrom(type)) { Object[] values = type.getEnumConstants(); ComboBox comboBox = new ComboBox<>();