This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push:
new c8dbebe EMPIREDB-313 Handle numeric enum columns correctly.
c8dbebe is described below
commit c8dbebe64e1fc97f3efb97f4d528e349e40abbc6
Author: Rainer Döbele <[email protected]>
AuthorDate: Wed Oct 16 18:33:47 2019 +0200
EMPIREDB-313
Handle numeric enum columns correctly.
---
.../java/org/apache/empire/jsf2/app/DBELResolver.java | 1 -
.../apache/empire/jsf2/controls/SelectInputControl.java | 17 +++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/DBELResolver.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/DBELResolver.java
index 8c94cf7..e16a914 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/DBELResolver.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/DBELResolver.java
@@ -27,7 +27,6 @@ import javax.el.ELResolver;
import javax.faces.context.FacesContext;
import org.apache.empire.commons.StringUtils;
-import org.apache.empire.data.Record;
import org.apache.empire.data.RecordData;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabase;
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
index 2795cce..1ece85f 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
@@ -31,7 +31,10 @@ import javax.faces.context.FacesContext;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.OptionEntry;
import org.apache.empire.commons.Options;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.Column;
+import org.apache.empire.db.exceptions.FieldIllegalValueException;
+import org.apache.empire.db.exceptions.FieldValueOutOfRangeException;
import org.apache.empire.exceptions.InternalException;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.ItemNotFoundException;
@@ -294,6 +297,20 @@ public class SelectInputControl extends InputControl
@Override
protected Object formatInputValue(Object value, InputInfo ii)
{
+ if ((value instanceof Number))
+ { // Check whether it's an Enum
+ Object enumType =
ii.getColumn().getAttribute(Column.COLATTR_ENUMTYPE);
+ if ((enumType instanceof Class<?>))
+ { // Convert ordinal value to Enum
+ int ordinal = ObjectUtils.getInteger(value);
+ Class<? extends Enum<?>> enumTypeClazz = (Class<? extends
Enum<?>>)enumType;
+ Enum<?>[] items = enumTypeClazz.getEnumConstants();
+ if (ordinal>=0 && ordinal<items.length)
+ value = items[ordinal].name();
+ else
+ log.warn("Enum lookup failed. Ordinal {} out of range.",
ordinal);
+ }
+ }
// the value
return formatInputValue(value);
}