Support for char and short field types; Improved UI on create/edit form, now showing the type for each input element

This commit is contained in:
Francesco
2023-10-08 10:41:29 +02:00
parent e1010a6c86
commit bf7a4c8956
3 changed files with 132 additions and 42 deletions

View File

@@ -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;

View File

@@ -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<CompareOperator> 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<CompareOperator> 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);
}