Here is what I am using...  Very simple and only returns strings...


  /**
    * Converts a resultset into an ArrayList of DynaBeans
    * 
    * @param resultSet SQL result set to be converted
    * @return ArrayList of DynaBeans with all columnnames converted to
    *         lowercase
    * @throws SQLException DOCUMENT ME!
    */
   private static ArrayList getDynaBeanArrayList(ResultSet resultSet)
                                          throws SQLException {

      ResultSetMetaData metaData = resultSet.getMetaData();
      int cols = metaData.getColumnCount();
      ArrayList list = new ArrayList();
      DynaProperty[] props = new DynaProperty[cols];
      BasicDynaClass dClass = null;

      for (int i = 1; i <= cols; i++) {
         props[i - 1] = new 
DynaProperty(metaData.getColumnName(i).toLowerCase());
      }

      try {
         dClass = new BasicDynaClass("test", 
                                     Class.forName(
                                            
"org.apache.commons.beanutils.BasicDynaBean"), 
                                     props);
      } catch (Exception e) {
         e.printStackTrace();
      }

      while (resultSet.next()) {

         HashMap map = new HashMap(cols, 1);

         for (int i = 1; i <= cols; i++) {
            map.put(metaData.getColumnName(i).toLowerCase(), 
                    resultSet.getString(i));
         }

         try {

            DynaBean dbean = dClass.newInstance();
            BeanUtils.populate(dbean, map);
            list.add(dbean);
         } catch (Exception e) {
            e.printStackTrace();
            throw new SQLException("RequestUtils.getArrayList: "
                                   + e.toString());
         }
      } // End While

      return (list);
   }


-----Original Message-----
From: craigmcc [mailto:[EMAIL PROTECTED]]
Sent: Friday, July 12, 2002 12:07 PM
To: struts-user
Subject: Re: DynaBeans, DynaClass, DynaMen




On Fri, 12 Jul 2002, Thorbjoern Ravn Andersen wrote:

> Date: Fri, 12 Jul 2002 07:02:57 +0200
> From: Thorbjoern Ravn Andersen <[EMAIL PROTECTED]>
> Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>
> To: Struts Users Mailing List <[EMAIL PROTECTED]>
> Subject: Re: DynaBeans, DynaClass, DynaMen
>
> [EMAIL PROTECTED] skrev:
>
> >...anyone remember DynaMen?
> >
> >Anyhow...  I got a Dynabean mechanism working that builds a DynaBean
> >based on the metadata of a SQL result set, populates and array of the
> >little buggers and passes it back to me.  For displaying I have a tag
> >library that does not like a call to get('name') as the field name.
> >What is the best way to get around this?
> >
> I wrote an AnonyBeans package which uses BCEL to generate beans on the
> fly based on a ResultSet.  It is alpha code but works for me, and is
> usable anywhere where you need a real traditional bean, but where you 
do
> not want to serialize it or  use its type in Java source.
>
> Is this interesting?
>

I think it would be  interestesting, even though it might not be
universally useful (some containers won't let you introduce new classes 
at
runtime).

I'd also be interested in a mechanism that converted a ResultSet into a
custom DynaClass, with a corresponding DynaBean for each row.  This 
would
be trivially simple to do -- so simple that it probably makes a 
worthwhile
addition to commons-beanutils itself if someone wanted to take this on.

This wouldn't help you create dynamic input forms, but it would make a
completely flexible bean-like wrapper around a result set so you can use
Struts tags to display stuff.

> --
>   Thorbjørn Ravn Andersen                 http://biobase.dk/~tra

Craig


--
To unsubscribe, e-mail:   
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: 
<mailto:[EMAIL PROTECTED]>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to