Author: niallp
Date: Tue Aug  4 23:35:52 2009
New Revision: 801021

URL: http://svn.apache.org/viewvc?rev=801021&view=rev
Log:
BEANUTILS-344 Provide configurable option to use the column label rather than 
column name

Modified:
    
commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/JDBCDynaClass.java

Modified: 
commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/JDBCDynaClass.java
URL: 
http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/JDBCDynaClass.java?rev=801021&r1=801020&r2=801021&view=diff
==============================================================================
--- 
commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/JDBCDynaClass.java
 (original)
+++ 
commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/JDBCDynaClass.java
 Tue Aug  4 23:35:52 2009
@@ -47,6 +47,11 @@
     protected boolean lowerCase = true;
 
     /**
+     * <p>Flag defining whether column names or labels should be used.
+     */
+    private boolean useColumnLabel;
+
+    /**
      * <p>The set of dynamic properties that are part of this
      * {...@link DynaClass}.</p>
      */
@@ -128,6 +133,15 @@
     }
 
     /**
+     * Set whether the column label or name should be used for the property 
name.
+     *
+     * @param useColumnLabel true if the column label should be used, 
otherwise false
+     */
+    public void setUseColumnLabel(boolean useColumnLabel) {
+        this.useColumnLabel = useColumnLabel;
+    }
+
+    /**
      * <p>Loads and returns the <code>Class</code> of the given name.
      * By default, a load from the thread context class loader is attempted.
      * If there is no such class loader, the class loader used to load this
@@ -167,7 +181,13 @@
                                     int i)
                                     throws SQLException {
 
-        String columnName = metadata.getColumnName(i);
+        String columnName = null;
+        if (useColumnLabel) {
+            columnName = metadata.getColumnLabel(i);
+        }
+        if (columnName == null || columnName.trim().length() == 0) {
+            columnName = metadata.getColumnName(i);
+        }
         String name = lowerCase ? columnName.toLowerCase() : columnName;
         if (!name.equals(columnName)) {
             if (columnNameXref == null) {


Reply via email to