/** * Convert collection-like param from the query method into an array of compatible types * for Datastore. * @param param the raw param * @return an array of a compatible type. */ protected Object[] convertCollectionParamToCompatibleArray(List<?> param) { List converted = param.stream() .map((x) -> this.datastoreTemplate.getDatastoreEntityConverter().getConversions().convertOnWriteSingle(x) .get()) .collect(Collectors.toList()); return converted.toArray( (Object[]) Array.newInstance(converted.isEmpty() ? String.class // if there are no items in the param : converted.get(0).getClass(), converted.size())); }
/** * Convert collection-like param from the query method into an array of compatible types * for Datastore. * @param param the raw param * @return an array of a compatible type. */ protected Object[] convertCollectionParamToCompatibleArray(List<?> param) { List converted = param.stream() .map((x) -> this.datastoreTemplate.getDatastoreEntityConverter().getConversions().convertOnWriteSingle(x) .get()) .collect(Collectors.toList()); return converted.toArray( (Object[]) Array.newInstance(converted.isEmpty() ? String.class // if there are no items in the param : converted.get(0).getClass(), converted.size())); }
@Override public <V> void writeMap(Key datastoreKey, Map<String, V> map) { Assert.notNull(datastoreKey, "A non-null Key is required."); Assert.notNull(map, "A non-null map is required."); Builder builder = Entity.newBuilder(datastoreKey); map.forEach( (key, value) -> builder.set(key, this.datastoreEntityConverter.getConversions().convertOnWriteSingle(value))); Entity entity = builder.build(); getDatastoreReadWriter().put(entity); }
@Override public <V> void writeMap(Key datastoreKey, Map<String, V> map) { Assert.notNull(datastoreKey, "A non-null Key is required."); Assert.notNull(map, "A non-null map is required."); Builder builder = Entity.newBuilder(datastoreKey); map.forEach( (key, value) -> builder.set(key, this.datastoreEntityConverter.getConversions().convertOnWriteSingle(value))); Entity entity = builder.build(); getDatastoreReadWriter().put(entity); }
case SIMPLE_PROPERTY: filter = PropertyFilter.eq(fieldName, converter.convertOnWriteSingle(it.next())); equalityComparedFields.add(fieldName); break; case GREATER_THAN_EQUAL: filter = PropertyFilter.ge(fieldName, converter.convertOnWriteSingle(it.next())); break; case GREATER_THAN: filter = PropertyFilter.gt(fieldName, converter.convertOnWriteSingle(it.next())); break; case LESS_THAN_EQUAL: filter = PropertyFilter.le(fieldName, converter.convertOnWriteSingle(it.next())); break; case LESS_THAN: filter = PropertyFilter.lt(fieldName, converter.convertOnWriteSingle(it.next())); break; default:
private GqlQuery<? extends BaseEntity> bindArgsToGqlQuery(String gql, List<String> tags, List vals) { Builder builder = GqlQuery.newGqlQueryBuilder(gql); builder.setAllowLiteral(true); if (tags.size() != vals.size()) { throw new DatastoreDataException("Annotated GQL Query Method " + this.queryMethod.getName() + " has " + tags.size() + " tags but a different number of parameter values: " + vals.size()); } for (int i = 0; i < tags.size(); i++) { Object val = vals.get(i); Object boundVal; if (ValueUtil.isCollectionLike(val.getClass())) { boundVal = convertCollectionParamToCompatibleArray((List) ValueUtil.toListIfArray(val)); } else { boundVal = this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnWriteSingle(val).get(); } DatastoreNativeTypes.bindValueToGqlBuilder(builder, tags.get(i), boundVal); } return builder.build(); }
private GqlQuery<? extends BaseEntity> bindArgsToGqlQuery(String gql, List<String> tags, List vals) { Builder builder = GqlQuery.newGqlQueryBuilder(gql); builder.setAllowLiteral(true); if (tags.size() != vals.size()) { throw new DatastoreDataException("Annotated GQL Query Method " + this.queryMethod.getName() + " has " + tags.size() + " tags but a different number of parameter values: " + vals.size()); } for (int i = 0; i < tags.size(); i++) { Object val = vals.get(i); Object boundVal; if (ValueUtil.isCollectionLike(val.getClass())) { boundVal = convertCollectionParamToCompatibleArray((List) ValueUtil.toListIfArray(val)); } else { boundVal = this.datastoreTemplate.getDatastoreEntityConverter().getConversions() .convertOnWriteSingle(val).get(); } DatastoreNativeTypes.bindValueToGqlBuilder(builder, tags.get(i), boundVal); } return builder.build(); }
case SIMPLE_PROPERTY: filter = PropertyFilter.eq(fieldName, converter.convertOnWriteSingle(it.next())); equalityComparedFields.add(fieldName); break; case GREATER_THAN_EQUAL: filter = PropertyFilter.ge(fieldName, converter.convertOnWriteSingle(it.next())); break; case GREATER_THAN: filter = PropertyFilter.gt(fieldName, converter.convertOnWriteSingle(it.next())); break; case LESS_THAN_EQUAL: filter = PropertyFilter.le(fieldName, converter.convertOnWriteSingle(it.next())); break; case LESS_THAN: filter = PropertyFilter.lt(fieldName, converter.convertOnWriteSingle(it.next())); break; default: