@SuppressWarnings("unchecked") public List<T> getItems() { if (items == null) { Query newQuery = query.getPersistenceManager().newQuery(query); int offset = (page - 1) * pageSize; newQuery.setRange(offset, offset + pageSize); items = (List<T>) newQuery.executeWithMap(map); } return items; }
public Long getTotal() { if (total == null) { Query newQuery = query.getPersistenceManager().newQuery(query); newQuery.setOrdering(null); newQuery.setResult("COUNT(id)"); total = (Long) newQuery.executeWithMap(map); } return total; }
private void checkOidWithParam(Object param1, Query q, Object ... matches) { Object o1 = param1 == null ? null : q.getPersistenceManager().getObjectById(param1); Collection<?> c = (Collection<?>) q.execute(o1); for (int i = 0; i < matches.length; i++) { boolean match = false; for (Object o: c) { if (JDOHelper.getObjectId(o).equals(matches[i])) { match = true; break; } } assertTrue("p=" + i, match); } assertEquals(matches.length, c.size()); }
@SuppressWarnings("unchecked") @Test public void testIterator() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery(TestClass.class, "_int < 12345"); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); List<TestClass> r = (List<TestClass>) q.execute(); assertEquals(4, r.size()); Iterator<TestClass> iter = r.iterator(); //avoid call to hasNext() for (int i = 0; i < 4; i++) { iter.next(); } try { iter.next(); fail(); } catch (NoSuchElementException e) { //good } assertFalse(iter.hasNext()); pm.currentTransaction().rollback(); TestTools.closePM(); }
@Test public void testQueryOfString() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery("SELECT FROM " + TestClass.class.getName()); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); testDeclarative(q); testString(q); TestTools.closePM(pm); }
@SuppressWarnings("unchecked") private void checkQuery(String queryStr, int nRes) { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery("SELECT FROM " + TestClass.class.getName() + " WHERE " + queryStr); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); List<TestClass> r = (List<TestClass>) q.execute(); assertEquals(nRes, r.size()); for (TestClass tc: r) { //just check existence assertTrue(tc.getInt() >= 1); } pm.currentTransaction().rollback(); TestTools.closePM(); }
@Test public void testQueryOfClass() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery(TestClass.class); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); testDeclarative(q); testString(q); TestTools.closePM(pm); }
@SuppressWarnings("unchecked") @Test public void testSyntaxBracesAndOperators() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery("SELECT FROM " + TestClass.class.getName()); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); List<TestClass> r; // OR q.setFilter("_int < 12345 && (_short == 32000 || _string == 'xyz') && _int >= 123"); r = (List<TestClass>) q.execute(); assertEquals(2, r.size()); for (TestClass tc: r) { assertTrue("int="+tc.getInt(), tc.getInt() >= 123); } //again with "" q.setFilter("_int < 12345 && (_short == 32000 || _string == \"xyz\") && _int >= 123"); r = (List<TestClass>) q.execute(); assertEquals(2, r.size()); for (TestClass tc: r) { assertTrue("int="+tc.getInt(), tc.getInt() >= 123); } TestTools.closePM(pm); }
@Test public void testQuery() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery(); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); q.setClass(TestClass.class); testDeclarative(q); testString(q); TestTools.closePM(pm); }
@Test public void testQueryOfExtent() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Extent<?> ext = pm.getExtent(TestClass.class); Query q = pm.newQuery(ext); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); testDeclarative(q); testString(q); TestTools.closePM(pm); }
assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable());
/** * Create two sub-queries with different indices. * The result should not contain duplicates. */ @SuppressWarnings("unchecked") @Test public void testDualIndexingWithOrSplit() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); Query q = pm.newQuery("SELECT FROM " + TestClass.class.getName()); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); Collection<TestClass> r; // OR q.setFilter("_int < 12345 && (_short == 32000 || _string == 'xyz') && _int >= 123"); r = (Collection<TestClass>) q.execute(); int n = 0; for (TestClass tc: r) { assertTrue("int=" + tc.getInt(), tc.getInt() >= 123); assertTrue(tc.getInt() >= 123); n++; } assertEquals(2, n); TestTools.closePM(pm); } }
@Test public void testQueryWithNullArgs() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); try { pm.newQuery(""); fail(); } catch (NullPointerException e) { //good } try { pm.newQuery((String)null); fail(); } catch (NullPointerException e) { //good } Query q = pm.newQuery(TestClass.class, (String)null); q = pm.newQuery(TestClass.class, ""); assertEquals(pm, q.getPersistenceManager()); assertFalse(q.isUnmodifiable()); testDeclarative(q); testString(q); TestTools.closePM(pm); }