View Javadoc
1 /*** $Id: HibernateDB2NTopWrapperAction.java,v 1.1.1.1 2004/05/18 10:50:17 mochoa Exp $ */ 2 package org.j2ee.dao.util; 3 4 /*** 5 * Last modified $Date: 2004/05/18 10:50:17 $ 6 * @version $Revision: 1.1.1.1 $ 7 * @author mochoa (mochoa@users.sourceforge.net) */ 8 public class HibernateDB2NTopWrapperAction extends AbstractPageByPageAction { 9 10 public HibernateDB2NTopWrapperAction() { 11 } 12 13 public HibernateDB2NTopWrapperAction(int fromNo, int toNo) { 14 super(fromNo,toNo); 15 } 16 17 /*** 18 * 19 * @return an String using DB2's syntax for Limit—with offset querys. 20 * http://troels.arvin.dk/db/rdbms/ for more information. 21 */ 22 public String getSQL() { 23 String originalSQL = action.getSQL().trim(); 24 String startOfQuery = null; 25 int orderByPosition = originalSQL.toUpperCase().lastIndexOf("ORDER BY"); 26 int columnListPosition = 6; 27 if (originalSQL.toUpperCase().startsWith("SELECT DISTINCT")) { 28 columnListPosition = 15; 29 startOfQuery = "SELECT * FROM (SELECT DISTINCT"; 30 } else 31 startOfQuery = "SELECT * FROM (SELECT"; 32 if (orderByPosition<0) // No order by condition, use the query without SELECT 33 return startOfQuery+" ROW_NUMBER() AS rownum, "+originalSQL.substring(columnListPosition)+" ) AS wrappedQuery WHERE rownum > :firstRow AND rownum <= :lastRow"; 34 else // order by found, split the query in two parts. 35 return startOfQuery+" ROW_NUMBER() OVER ("+originalSQL.substring(orderByPosition)+") AS rownum, "+originalSQL.substring(columnListPosition,orderByPosition)+" ) AS wrappedQuery WHERE rownum >= :firstRow AND rownum <= :lastRow"; 36 } 37 }

This page was automatically generated by Maven