r2663 - in branches/topia-2.6.x/topia-persistence/src: main/java/org/nuiton/topia/persistence test/java/org/nuiton/topia/persistence
Author: tchemit Date: 2012-09-13 11:23:35 +0200 (Thu, 13 Sep 2012) New Revision: 2663 Url: http://nuiton.org/repositories/revision/topia/2663 Log: refs #2301: Add methods findAllLazyByQuery on TopiaDAO to iterate on result by a lazy mecanism (force to have an orber by in the incoming hql)" Modified: branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java branches/topia-2.6.x/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaDAOTest.java Modified: branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-09-13 04:51:15 UTC (rev 2662) +++ branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-09-13 09:23:35 UTC (rev 2663) @@ -133,7 +133,7 @@ this, getEntityClass(), batchSize, - "FROM " + getTopiaEntityEnum().getImplementationFQN()); + "FROM " + getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); return iterator; } @@ -849,9 +849,18 @@ this.hql = hql; this.params = params; try { - long count = dao.countByQuery("SELECT COUNT(*) " + hql, params); + String hql2 = hql.toLowerCase(); + int i = hql2.indexOf("order by"); + if (i == -1) { + throw new IllegalStateException( + "must have a *order by* in hql, " + + "but did not find it in " + hql); + } + + // get the count (removing the order-by) + long count2 = dao.countByQuery("SELECT COUNT(*) " + hql.substring(0, i), params); pager = TopiaFilterPagerUtil.newFilterPagerBean(); - pager.setRecords((int) count); + pager.setRecords((int) count2); pager.setPageSize(batchSize); TopiaFilterPagerUtil.computeRecordIndexesAndPagesNumber(pager); } catch (TopiaException e) { Modified: branches/topia-2.6.x/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaDAOTest.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaDAOTest.java 2012-09-13 04:51:15 UTC (rev 2662) +++ branches/topia-2.6.x/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaDAOTest.java 2012-09-13 09:23:35 UTC (rev 2663) @@ -107,7 +107,7 @@ Iterable<Person> allByLazy = dao.findAllLazyByQuery( 100, - "FROM " + dao.getTopiaEntityEnum().getImplementationFQN()); + "FROM " + dao.getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); List<Person> actual = Lists.newArrayList(); @@ -118,7 +118,7 @@ allByLazy = dao.findAllLazyByQuery( 54, - "FROM " + dao.getTopiaEntityEnum().getImplementationFQN()); + "FROM " + dao.getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); actual = Lists.newArrayList(); @@ -129,7 +129,7 @@ allByLazy = dao.findAllLazyByQuery( 49, - "FROM " + dao.getTopiaEntityEnum().getImplementationFQN()); + "FROM " + dao.getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); actual = Lists.newArrayList(); @@ -140,7 +140,7 @@ allByLazy = dao.findAllLazyByQuery( 101, - "FROM " + dao.getTopiaEntityEnum().getImplementationFQN()); + "FROM " + dao.getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); actual = Lists.newArrayList(); @@ -151,7 +151,7 @@ allByLazy = dao.findAllLazyByQuery( 102, - "FROM " + dao.getTopiaEntityEnum().getImplementationFQN()); + "FROM " + dao.getTopiaEntityEnum().getImplementationFQN() + " ORDER BY id"); actual = Lists.newArrayList();
participants (1)
-
tchemit@users.nuiton.org