@Override public <T> Iterable<T> query(Query<? extends BaseEntity> query, Class<T> entityClass) { return convertEntitiesForRead(getDatastoreReadWriter().run(query), entityClass); }
@Override public <T> Collection<T> findAllById(Iterable<?> ids, Class<T> entityClass) { List<Key> keysToFind = getKeysFromIds(ids, entityClass); return convertEntitiesForRead( getDatastoreReadWriter().get( keysToFind.toArray(new Key[keysToFind.size()])), entityClass); }
@Override public <T> Collection<T> findAllById(Iterable<?> ids, Class<T> entityClass) { List<Key> keysToFind = getKeysFromIds(ids, entityClass); return convertEntitiesForRead( getDatastoreReadWriter().get( keysToFind.toArray(new Key[keysToFind.size()])), entityClass); }
@Override public <T> Iterable<T> query(Query<? extends BaseEntity> query, Class<T> entityClass) { return convertEntitiesForRead(getDatastoreReadWriter().run(query), entityClass); }
/** * Finds objects by using a Cloud Datastore query. If the query is a key-query, then keys are * returned. * @param query the query to execute. * @param entityClass the type of object to retrieve. * @param <T> the type of object to retrieve. * @return a list of the objects found. If no keys could be found the list will be * empty. */ public <T> Iterable<?> queryKeysOrEntities(Query query, Class<T> entityClass) { QueryResults results = getDatastoreReadWriter().run(query); if (results.getResultClass() == Key.class) { return () -> results; } return convertEntitiesForRead(results, entityClass); }
/** * Finds objects by using a Cloud Datastore query. If the query is a key-query, then keys are * returned. * @param query the query to execute. * @param entityClass the type of object to retrieve. * @param <T> the type of object to retrieve. * @return a list of the objects found. If no keys could be found the list will be * empty. */ public <T> Iterable<?> queryKeysOrEntities(Query query, Class<T> entityClass) { QueryResults results = getDatastoreReadWriter().run(query); if (results.getResultClass() == Key.class) { return () -> results; } return convertEntitiesForRead(results, entityClass); }
private Slice executeSliceQuery(Object[] parameters) { EntityQuery.Builder builder = StructuredQuery.newEntityQueryBuilder() .setKind(this.datastorePersistentEntity.kindName()); StructuredQuery query = applyQueryBody(parameters, builder, false); List items = this.datastoreTemplate.query((query), (x) -> x); Integer limit = (query.getLimit() == null) ? null : query.getLimit() - 1; boolean exceedsLimit = false; if (limit != null) { //for slice queries we retrieve one additional item to check if the next slice exists //the additional item will not be converted on read exceedsLimit = items.size() > limit; if (exceedsLimit) { items = items.subList(0, limit); } } ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); Pageable pageable = paramAccessor.getPageable(); List entities = (List) this.datastoreTemplate .convertEntitiesForRead(items.iterator(), this.entityType).stream() .map((o) -> this.processRawObjectForProjection((T) o)).collect(Collectors.toList()); return new SliceImpl(entities, pageable, exceedsLimit); }
private Slice executeSliceQuery(Object[] parameters) { EntityQuery.Builder builder = StructuredQuery.newEntityQueryBuilder() .setKind(this.datastorePersistentEntity.kindName()); StructuredQuery query = applyQueryBody(parameters, builder, false); List items = this.datastoreTemplate.query((query), (x) -> x); Integer limit = (query.getLimit() == null) ? null : query.getLimit() - 1; boolean exceedsLimit = false; if (limit != null) { //for slice queries we retrieve one additional item to check if the next slice exists //the additional item will not be converted on read exceedsLimit = items.size() > limit; if (exceedsLimit) { items = items.subList(0, limit); } } ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); Pageable pageable = paramAccessor.getPageable(); List entities = (List) this.datastoreTemplate .convertEntitiesForRead(items.iterator(), this.entityType).stream() .map((o) -> this.processRawObjectForProjection((T) o)).collect(Collectors.toList()); return new SliceImpl(entities, pageable, exceedsLimit); }
@Override public <T> Collection<T> findAll(Class<T> entityClass, DatastoreQueryOptions queryOptions) { DatastorePersistentEntity<?> persistentEntity = this.datastoreMappingContext.getPersistentEntity(entityClass); EntityQuery.Builder builder = Query.newEntityQueryBuilder() .setKind(persistentEntity.kindName()); applyQueryOptions(builder, queryOptions, persistentEntity); return convertEntitiesForRead(getDatastoreReadWriter().run(builder.build()), entityClass); }
@Override public <T> Collection<T> findAll(Class<T> entityClass, DatastoreQueryOptions queryOptions) { DatastorePersistentEntity<?> persistentEntity = this.datastoreMappingContext.getPersistentEntity(entityClass); EntityQuery.Builder builder = Query.newEntityQueryBuilder() .setKind(persistentEntity.kindName()); applyQueryOptions(builder, queryOptions, persistentEntity); return convertEntitiesForRead(getDatastoreReadWriter().run(builder.build()), entityClass); }
private <T> void resolveDescendantProperties(DatastorePersistentEntity datastorePersistentEntity, BaseEntity entity, T convertedObject) { datastorePersistentEntity .doWithDescendantProperties((descendantPersistentProperty) -> { Class descendantType = descendantPersistentProperty .getComponentType(); EntityQuery descendantQuery = Query.newEntityQueryBuilder() .setKind(this.datastoreMappingContext .getPersistentEntity(descendantType).kindName()) .setFilter(PropertyFilter.hasAncestor((Key) entity.getKey())) .build(); datastorePersistentEntity.getPropertyAccessor(convertedObject) .setProperty(descendantPersistentProperty, // Converting the collection type. this.datastoreEntityConverter.getConversions() .convertOnRead( convertEntitiesForRead( getDatastoreReadWriter() .run(descendantQuery), descendantType), descendantPersistentProperty .getType(), descendantType)); }); }
private <T> void resolveDescendantProperties(DatastorePersistentEntity datastorePersistentEntity, BaseEntity entity, T convertedObject) { datastorePersistentEntity .doWithDescendantProperties((descendantPersistentProperty) -> { Class descendantType = descendantPersistentProperty .getComponentType(); EntityQuery descendantQuery = Query.newEntityQueryBuilder() .setKind(this.datastoreMappingContext .getPersistentEntity(descendantType).kindName()) .setFilter(PropertyFilter.hasAncestor((Key) entity.getKey())) .build(); datastorePersistentEntity.getPropertyAccessor(convertedObject) .setProperty(descendantPersistentProperty, // Converting the collection type. this.datastoreEntityConverter.getConversions() .convertOnRead( convertEntitiesForRead( getDatastoreReadWriter() .run(descendantQuery), descendantType), descendantPersistentProperty .getType(), descendantType)); }); }