From bf7a4c89566c0b6c6f9b87d2731a9de9eabc6154 Mon Sep 17 00:00:00 2001 From: Francesco Date: Sun, 8 Oct 2023 10:41:29 +0200 Subject: [PATCH] Support for `char` and `short` field types; Improved UI on create/edit form, now showing the type for each input element --- .../external/dbmapping/DbAdminRepository.java | 1 - .../external/dbmapping/DbFieldType.java | 46 +++++++ .../resources/templates/fragments/inputs.html | 127 ++++++++++++------ 3 files changed, 132 insertions(+), 42 deletions(-) diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java index 1e78570..57a2de9 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java @@ -20,7 +20,6 @@ package tech.ailef.dbadmin.external.dbmapping; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java index 1c995c8..42936e1 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java @@ -352,6 +352,48 @@ public enum DbFieldType { return List.of(CompareOperator.GT, CompareOperator.EQ, CompareOperator.LT); } }, + CHAR { + @Override + public String getFragmentName(FragmentContext c) { + return "char"; + } + + @Override + public Object parseValue(Object value) { + return value.toString().charAt(0); + } + + @Override + public Class getJavaClass() { + return char.class; + } + + @Override + public List getCompareOperators() { + return List.of(CompareOperator.STRING_EQ); + } + }, + BYTE { + @Override + public String getFragmentName(FragmentContext c) { + return "number"; + } + + @Override + public Object parseValue(Object value) { + return value.toString().getBytes()[0]; + } + + @Override + public Class getJavaClass() { + return byte.class; + } + + @Override + public List getCompareOperators() { + throw new DbAdminException("Binary fields are not comparable"); + } + }, BYTE_ARRAY { @Override public String getFragmentName(FragmentContext c) { @@ -559,6 +601,10 @@ public enum DbFieldType { return BYTE_ARRAY; } else if (klass == OffsetDateTime.class) { return OFFSET_DATE_TIME; + } else if (klass == byte.class || klass == Byte.class) { + return BYTE; + } else if (klass == char.class || klass == Character.class) { + return CHAR; } else { throw new DbAdminException("Unsupported field type: " + klass); } diff --git a/src/main/resources/templates/fragments/inputs.html b/src/main/resources/templates/fragments/inputs.html index da51b69..0ebbf9d 100644 --- a/src/main/resources/templates/fragments/inputs.html +++ b/src/main/resources/templates/fragments/inputs.html @@ -8,37 +8,75 @@ rows="5" th:classAppend="|${field.isReadOnly() && !create ? 'disable' : ''}|" > - - - + +
+ + [[ ${field.getType()} ]] + + +
+
+ +
+ + [[ ${field.getType()} ]] + + +
+
+ +
+ + [[ ${field.getType()} ]] + + +
+
+ + [[ ${field.getType()} ]] + +
+ +
+
- + +
+ + [[ ${field.getType()} ]] + + +
+
Edit options