package com.cfinkel.reports.valuelist; import net.mlw.vlh.adapter.jdbc.dynabean.fix.ResultSetDynaClass; import net.mlw.vlh.adapter.jdbc.AbstractDynaJdbcAdapter; import net.mlw.vlh.ValueListInfo; import java.util.List; import java.util.ArrayList; import java.util.Iterator; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.commons.beanutils.BasicDynaClass; import org.apache.commons.beanutils.BasicDynaBean; import org.apache.commons.beanutils.DynaBean; import org.apache.commons.beanutils.DynaProperty; import org.apache.log4j.Logger; /** * $Author:charles $ * $Revision:10429 $ * $Date:2006-07-26 18:00:43 -0400 (Wed, 26 Jul 2006) $ * <p/> * created: * User: charles * Date: May 16, 2006 * Time: 7:40:21 PM * added to use CFResultSetDynaClass isntead of Default. Meant just to fix the lowercase bug */ public class CFDynaBeanAdapter extends AbstractDynaJdbcAdapter { private static final Logger log = Logger.getLogger(CFDynaBeanAdapter.class); public List processResultSet(String name, ResultSet result, int numberPerPage, ValueListInfo info) throws SQLException { List list = new ArrayList(); ResultSetDynaClass rsdc = new CFResultSetDynaClass(result, false, isUseName()); BasicDynaClass bdc = new BasicDynaClass(name, BasicDynaBean.class, rsdc.getDynaProperties()); int rowIndex = 0; for (Iterator rows = rsdc.iterator(); rows.hasNext() && rowIndex < numberPerPage; rowIndex++) { try { DynaBean oldRow = (DynaBean) rows.next(); DynaBean newRow = bdc.newInstance(); DynaProperty[] properties = oldRow.getDynaClass().getDynaProperties(); for (int i = 0, length = properties.length; i < length; i++) { String propertyName = properties[i].getName(); Object value = oldRow.get(propertyName); newRow.set(propertyName, value); } list.add(newRow); } catch (Exception e) { log.error(e); } } return list; } }