@Override public <T, V> Query<T> find(final String collection, final Class<T> clazz, final String property, final V value, final int offset, final int size) { return find(collection, clazz, property, value, offset, size, true); }
@Override public Query<T> createQuery() { return ds.find(entityClazz); }
@Override public <T, V> T get(final String collection, final Class<T> clazz, final V id) { final List<T> results = find(collection, clazz, "_id", id, 0, 1).asList(); if (results == null || results.isEmpty()) { return null; } return results.get(0); }
@Override public <T> long getCount(final Class<T> clazz) { return find(clazz).count(); }
@Override public Key<T> findOneId() { return findOneId(ds.find(entityClazz)); }
@Override public <T> long getCount(final T entity) { return find(ProxyHelper.unwrap(entity).getClass()).count(); }
@Override @SuppressWarnings("unchecked") public List<K> findIds() { return (List<K>) keysToIds(ds.find(entityClazz).asKeyList()); }
@Override public <T, V> WriteResult delete(final String kind, final Class<T> clazz, final V id, final DeleteOptions options) { return delete(find(kind, clazz).filter("_id", id), options); }
@Override public T findOne(final String key, final Object value) { return ds.find(entityClazz).filter(key, value).get(); }
@Override public <T, V> WriteResult delete(final Class<T> clazz, final Iterable<V> ids, final DeleteOptions options) { return delete(find(clazz).filter("_id" + " in", ids), options); }
@Override public long count(final String key, final Object value) { return count(ds.find(entityClazz).filter(key, value)); }
@Override public boolean exists(final String key, final Object value) { return exists(ds.find(entityClazz).filter(key, value)); }
@Override public <T, V> WriteResult delete(final String kind, final Class<T> clazz, final V id) { return delete(find(kind, clazz).filter("_id", id)); }
@Override public Key<T> findOneId(final String key, final Object value) { return findOneId(ds.find(entityClazz).filter(key, value)); }
@Override public <T, V> WriteResult delete(final Class<T> clazz, final Iterable<V> ids) { return delete(find(clazz).filter("_id" + " in", ids)); }
@Override @Deprecated public <T, V> WriteResult delete(final String kind, final Class<T> clazz, final V id, final WriteConcern wc) { return delete(find(kind, clazz).filter("_id", id), new DeleteOptions().writeConcern(wc)); }
@Override @SuppressWarnings("unchecked") public <T> T get(final T entity) { return (T) find(entity.getClass()).filter("_id", getMapper().getId(entity)).get(); }
@Override @SuppressWarnings("unchecked") public List<K> findIds(final String key, final Object value) { return (List<K>) keysToIds(ds.find(entityClazz).filter(key, value).asKeyList()); }
@Override public <T, V> T get(final Class<T> clazz, final V id) { return find(getCollection(clazz).getName(), clazz, "_id", id, 0, 1, true).get(); }
private Query<?> buildExistsQuery(final Object entityOrKey) { final Object unwrapped = ProxyHelper.unwrap(entityOrKey); final Key<?> key = getKey(unwrapped); final Object id = key.getId(); if (id == null) { throw new MappingException("Could not get id for " + unwrapped.getClass().getName()); } return find(key.getCollection(), key.getType()).filter("_id", key.getId()); }