EMPIREDB-239
support enum types in bean properties
diff --git a/empire-db/src/main/java/org/apache/empire/data/Record.java b/empire-db/src/main/java/org/apache/empire/data/Record.java
index 362dac1..470d0df 100644
--- a/empire-db/src/main/java/org/apache/empire/data/Record.java
+++ b/empire-db/src/main/java/org/apache/empire/data/Record.java
@@ -146,7 +146,7 @@
* @param ignoreList list of column to ignore
* @return the number of fields that have been set
*/
- int setBeanValues(Object bean, Collection<Column> ignoreList);
+ int setRecordValues(Object bean, Collection<Column> ignoreList);
/**
* sets all record values from a particular bean.
@@ -156,6 +156,6 @@
* @param bean the Java Bean from which to read the value from
* @return the number of fields that have been set
*/
- int setBeanValues(Object bean);
+ int setRecordValues(Object bean);
}
diff --git a/empire-db/src/main/java/org/apache/empire/data/RecordData.java b/empire-db/src/main/java/org/apache/empire/data/RecordData.java
index 101b049..19da930 100644
--- a/empire-db/src/main/java/org/apache/empire/data/RecordData.java
+++ b/empire-db/src/main/java/org/apache/empire/data/RecordData.java
@@ -98,7 +98,7 @@
* @param bean the Java Bean for which to set the properties
* @param ignoreList list of columns to skip (optional)
*/
- int getBeanProperties(Object bean, Collection<ColumnExpr> ignoreList);
+ int setBeanProperties(Object bean, Collection<ColumnExpr> ignoreList);
/**
* copies all field values into a static Java Bean.
@@ -107,6 +107,6 @@
* the property name is detected by ColumnExpr.getBeanPropertyName()
* @param bean the Java Bean for which to set the properties
*/
- int getBeanProperties(Object bean);
+ int setBeanProperties(Object bean);
}
diff --git a/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java b/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java
index 6cd0b7e..f481f68 100644
--- a/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java
+++ b/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java
@@ -313,13 +313,13 @@
// --------------- Bean support ------------------
@Override
- public int getBeanProperties(Object bean)
+ public int setBeanProperties(Object bean)
{
- return getBeanProperties(bean, null);
+ return setBeanProperties(bean, null);
}
@Override
- public int getBeanProperties(Object bean, Collection<ColumnExpr> ignoreList)
+ public int setBeanProperties(Object bean, Collection<ColumnExpr> ignoreList)
{
// Add all Columns
int count = 0;
@@ -337,7 +337,7 @@
}
@Override
- public int setBeanValues(Object bean, Collection<Column> ignoreList)
+ public int setRecordValues(Object bean, Collection<Column> ignoreList)
{
// Add all Columns
int count = 0;
@@ -356,15 +356,15 @@
}
return count;
}
-
+
@Override
- public int setBeanValues(Object bean)
+ public int setRecordValues(Object bean)
{
- return setBeanValues(bean, null);
+ return setRecordValues(bean, null);
}
// --------------- protected ------------------
-
+
protected Object getBeanPropertyValue(Object bean, ColumnExpr column)
{
// Check Params
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBReader.java b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
index ec899bc..91f5902 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
@@ -675,7 +675,7 @@
else
{ // Use Property Setters
T bean = t.newInstance();
- getBeanProperties(bean);
+ setBeanProperties(bean);
c.add(bean);
}
// Decrease count
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index ec13ced..942f01e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -27,6 +27,7 @@
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.Options;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.Column;
import org.apache.empire.data.ColumnExpr;
import org.apache.empire.data.Record;
@@ -1022,14 +1023,12 @@
* @param property the name of the property
* @param column the column for which to set the record value
*/
- protected void setBeanValue(Object bean, String property, Column column)
+ protected void setRecordValue(Column column, Object bean, String property)
{
+ if (StringUtils.isEmpty(property))
+ property = column.getBeanPropertyName();
try
- { /*
- if (log.isTraceEnabled())
- log.trace(bean.getClass().getName() + ": getting property '" + property + "' for column " + column.getName());
- */
-
+ {
// Get Property Value
PropertyUtilsBean pub = BeanUtilsBean.getInstance().getPropertyUtils();
Object value = pub.getSimpleProperty(bean, property);
@@ -1055,7 +1054,7 @@
* @return true if at least one value has been set successfully
*/
@Override
- public int setBeanValues(Object bean, Collection<Column> ignoreList)
+ public int setRecordValues(Object bean, Collection<Column> ignoreList)
{
// Add all Columns
int count = 0;
@@ -1068,7 +1067,7 @@
continue; // ignore this property
// Get Property Name
String property = column.getBeanPropertyName();
- setBeanValue(bean, property, column);
+ setRecordValue(column, bean, property);
count++;
}
return count;
@@ -1079,9 +1078,9 @@
* @return true if at least one value has been set sucessfully
*/
@Override
- public final int setBeanValues(Object bean)
+ public final int setRecordValues(Object bean)
{
- return setBeanValues(bean, null);
+ return setRecordValues(bean, null);
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
index 704ff14..173505b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
@@ -27,6 +27,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.StringUtils;
+import org.apache.empire.data.Column;
import org.apache.empire.data.ColumnExpr;
import org.apache.empire.data.RecordData;
import org.apache.empire.exceptions.BeanPropertySetException;
@@ -297,8 +298,11 @@
/**
* Set a single property value of a java bean object used by readProperties.
*/
- protected void getBeanProperty(Object bean, String property, Object value)
+ @SuppressWarnings("rawtypes")
+ protected void setBeanProperty(ColumnExpr column, Object bean, String property, Object value)
{
+ if (StringUtils.isEmpty(property))
+ property = column.getBeanPropertyName();
try
{
if (bean==null)
@@ -315,6 +319,19 @@
value = DateUtils.addDate((Date)value, 0, 0, 0);
}
*/
+ Object type = column.getAttribute(Column.COLATTR_ENUMTYPE);
+ if (type!=null && value!=null)
+ {
+ String name = value.toString();
+ @SuppressWarnings("unchecked")
+ Class<Enum> enumType = (Class<Enum>)type;
+ for (Enum e : enumType.getEnumConstants())
+ if (e.name().equals(name))
+ {
+ value = e;
+ break;
+ }
+ }
// Set Property Value
if (value!=null)
{ // Bean utils will convert if necessary
@@ -348,7 +365,7 @@
* @return the number of bean properties set on the supplied bean
*/
@Override
- public int getBeanProperties(Object bean, Collection<ColumnExpr> ignoreList)
+ public int setBeanProperties(Object bean, Collection<ColumnExpr> ignoreList)
{
// Add all Columns
int count = 0;
@@ -360,7 +377,7 @@
// Get Property Name
String property = column.getBeanPropertyName();
if (property!=null)
- getBeanProperty(bean, property, this.getValue(i));
+ setBeanProperty(column, bean, property, this.getValue(i));
count++;
}
return count;
@@ -372,9 +389,9 @@
* @return the number of bean properties set on the supplied bean
*/
@Override
- public final int getBeanProperties(Object bean)
+ public final int setBeanProperties(Object bean)
{
- return getBeanProperties(bean, null);
+ return setBeanProperties(bean, null);
}
}