public static <T> Cursor<T> getReader(Box<T> box) { return box.getReader(); }
/** Used by tests */ int getPropertyId(String propertyName) { Cursor<T> reader = getReader(); try { return reader.getPropertyId(propertyName); } finally { releaseReader(reader); } }
/** * Returns the count of all stored objects in this box or the given maxCount, whichever is lower. * * @param maxCount maximum value to count or 0 (zero) to have no maximum limit */ public long count(long maxCount) { Cursor<T> reader = getReader(); try { return reader.count(maxCount); } finally { releaseReader(reader); } }
/** * Get the stored objects for the given IDs. * * @return null if not found */ public List<T> get(long[] ids) { ArrayList<T> list = new ArrayList<>(ids.length); Cursor<T> reader = getReader(); try { for (Long id : ids) { T entity = reader.get(id); if (entity != null) { list.add(entity); } } } finally { releaseReader(reader); } return list; }
/** * Get the stored objects for the given IDs. * * @return null if not found */ public List<T> get(Iterable<Long> ids) { ArrayList<T> list = new ArrayList<>(); Cursor<T> reader = getReader(); try { for (Long id : ids) { T entity = reader.get(id); if (entity != null) { list.add(entity); } } } finally { releaseReader(reader); } return list; }
public synchronized EntityInfo getEntityInfo() { if (entityInfo == null) { Cursor<T> reader = getReader(); try { entityInfo = reader.getEntityInfo(); } finally { releaseReader(reader); } } return entityInfo; }
/** * Get the stored objects for the given IDs as a Map with IDs as keys, and entities as values. * IDs for which no entity is found will be put in the map with null values. * * @return null if not found */ public Map<Long, T> getMap(Iterable<Long> ids) { HashMap<Long, T> map = new HashMap<>(); Cursor<T> reader = getReader(); try { for (Long id : ids) { map.put(id, reader.get(id)); } } finally { releaseReader(reader); } return map; }
/** * Get the stored object for the given ID. * * @return null if not found */ public T get(long id) { Cursor<T> reader = getReader(); try { return reader.get(id); } finally { releaseReader(reader); } }
@Internal public List<T> internalGetBacklinkEntities(int entityId, Property relationIdProperty, long key) { Cursor<T> reader = getReader(); try { return reader.getBacklinkEntities(entityId, relationIdProperty, key); } finally { releaseReader(reader); } }
/** * Returns all stored Objects in this Box. */ public List<T> getAll() { Cursor<T> cursor = getReader(); try { T first = cursor.first(); if (first == null) { return Collections.emptyList(); } else { ArrayList<T> list = new ArrayList<>(); list.add(first); while (true) { T next = cursor.next(); if (next != null) { list.add(next); } else { break; } } return list; } } finally { releaseReader(cursor); } }
@Internal public List<T> internalGetRelationEntities(int sourceEntityId, int relationId, long key, boolean backlink) { Cursor<T> reader = getReader(); try { return reader.getRelationEntities(sourceEntityId, relationId, key, backlink); } finally { releaseReader(reader); } }
public String getReaderDebugInfo() { Cursor<T> reader = getReader(); try { return reader + " with " + reader.getTx() + "; store's commit count: " + getStore().commitCount; } finally { releaseReader(reader); } }
@Internal public <RESULT> RESULT internalCallWithReaderHandle(CallWithHandle<RESULT> task) { Cursor<T> reader = getReader(); try { return task.call(reader.internalHandle()); } finally { releaseReader(reader); } }
@Test public void testCloseThreadResources() { Box<TestEntity> box = store.boxFor(TestEntity.class); Cursor<TestEntity> reader = box.getReader(); box.releaseReader(reader); Cursor<TestEntity> reader2 = box.getReader(); box.releaseReader(reader2); assertSame(reader, reader2); store.closeThreadResources(); Cursor<TestEntity> reader3 = box.getReader(); box.releaseReader(reader3); assertNotSame(reader, reader3); }