populate a template based on records in a JDBC ResultSet instance

View: New views
3 Messages — Rating Filter:   Alert me  

populate a template based on records in a JDBC ResultSet instance

by satheeshsamiappan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,
Im working on a POC in velocity.
Want to know whether using velocity can we populate a template based on records in a JDBC ResultSet instance?If so kindly provide the link that has document or example.

Typically a resultset will be put in the VelocityContext. In vm file we have to write the code in generic way to display the columns, data etc.
Its urgent for me since i need to complete this poc in 2 days.


Re: populate a template based on records in a JDBC ResultSet instance

by CloD :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On jeu., 2009-09-10 at 04:41 -0700, satheeshsamiappan wrote:
> Hi,
> Im working on a POC in velocity.
> Want to know whether using velocity can we populate a template based on
> records in a JDBC ResultSet instance?If so kindly provide the link that has
> document or example.
> Typically a resultset will be put in the VelocityContext. In vm file we have
> to write the code in generic way to display the columns, data etc.
> Its urgent for me since i need to complete this poc in 2 days.

What you need is a small java wrapper around your ResultSet to easy
things, so that you can write things like:

<table>
  ## headers
  <tr>
    #foreach($col in $result.colNames)
      <th>$col</th>
    #end
  </tr>
  ## data
  <tr>
    #foreach($row in $result.rows)
      <tr>
        #foreach($col in $result.colNames)
          <td>$result.get($col)</td>
        #end
      </tr>
    #end
  </tr>
</table>

To write your wrapper object, you can check some source files of the
Velosurf project:

For the getColNames() method, check
http://velosurf.svn.sourceforge.net/viewvc/velosurf/trunk/src/java/velosurf/sql/SqlUtil.java?revision=488&view=markup

-->

/**
  157      * get the column nams of a result set
  158      * @param resultSet result set
  159      * @return list of columns
  160      * @throws SQLException
  161      */
  162     public static List<String> getColumnNames(ResultSet resultSet) throws SQLException {
  163         List<String> columnNames = new ArrayList<String>();
  164         ResultSetMetaData meta = resultSet.getMetaData();
  165         int count = meta.getColumnCount();
  166         for (int c=1;c<=count;c++) {
  167             // see http://jira.springframework.org/browse/SPR-3541
  168             //columnNames.add(meta.getColumnName(c));
  169             columnNames.add(meta.getColumnLabel(c));
  170 }
  171         return columnNames;
  172     }

And for the col getters and iteration, you can check the RowIterator class:

http://velosurf.svn.sourceforge.net/viewvc/velosurf/trunk/src/java/velosurf/context/RowIterator.java?revision=487&view=markup

Hope that helps,

  Claude



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@...
For additional commands, e-mail: dev-help@...


Re: populate a template based on records in a JDBC ResultSet instance

by satheeshsamiappan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Claude,

I found out that using the resultset object itself in VM we will be able to accomplish all our needs that we achieve using java.

But looks like if we implement the way you have suggested, the template will look descent.
Thanks for the information.

satheeshsamiappan wrote:
Hi,
Im working on a POC in velocity.
Want to know whether using velocity can we populate a template based on records in a JDBC ResultSet instance?If so kindly provide the link that has document or example.

Typically a resultset will be put in the VelocityContext. In vm file we have to write the code in generic way to display the columns, data etc.
Its urgent for me since i need to complete this poc in 2 days.