@Override public Object get() { validValue(); return value; }
static KeyValuePreparedStatement del(List<Value> keys, BucketManager manager, Params params, String query) { return new DefaultKeyValuePreparedStatement(null, null, keys, PreparedStatementType.DEL, manager, params, null, query); }
DefaultKeyValuePreparedStatement(Value key, Value value, List<Value> keys, PreparedStatementType type, BucketManager manager, Params params, Duration ttl, String query) { this.key = key; this.value = value; this.keys = keys; this.type = type; this.manager = manager; this.params = params; this.paramsLeft = params.getParametersNames(); this.ttl = ttl; this.query = query; }
@Override public List<Value> query(String query, BucketManager manager) { validation(query, manager); String command = query.substring(0, 3); switch (command) { case "get": return getQueryParser.query(query, manager); case "rem": return removeQueryParser.query(query, manager); case "put": return putQueryParser.query(query, manager); default: throw new QueryException(String.format("The command was not recognized at the query %s ", query)); } }
@Override public KeyValuePreparedStatement prepare(String query, BucketManager manager) { validation(query, manager); String command = query.substring(0, 3); switch (command) { case "get": return getQueryParser.prepare(query, manager); case "rem": return removeQueryParser.prepare(query, manager); case "put": return putQueryParser.prepare(query, manager); default: throw new QueryException(String.format("The command was not recognized at the query %s ", query)); } }
List<Value> query(String query, BucketManager manager) { RemoveQuery delQuery = supplier.apply(query); Params params = new Params(); List<Value> values = delQuery.getKeys().stream().map(k -> Values.getValue(k, params)).collect(toList()); if (params.isNotEmpty()) { throw new QueryException("To run a query with a parameter use a PrepareStatement instead."); } List<Object> keys = values.stream().map(Value::get).collect(toList()); manager.remove(keys); return Collections.emptyList(); }
public KeyValuePreparedStatement prepare(String query, BucketManager manager) { PutQuery putQuery = supplier.apply(query); Params params = new Params(); Value key = Values.getValue(putQuery.getKey(), params); Value value = Values.getValue(putQuery.getValue(), params); Optional<Duration> ttl = putQuery.getTtl(); return DefaultKeyValuePreparedStatement.put(key, value, manager, params, ttl.orElse(null), query); } }
public KeyValuePreparedStatement prepare(String query, BucketManager manager) { RemoveQuery delQuery = supplier.apply(query); Params params = new Params(); List<Value> values = delQuery.getKeys().stream().map(k -> Values.getValue(k, params)).collect(toList()); return DefaultKeyValuePreparedStatement.del(values, manager, params, query); } }
public KeyValuePreparedStatement prepare(String query, BucketManager manager) { GetQuery getQuery = supplier.apply(query); Params params = new Params(); List<Value> values = getQuery.getKeys().stream().map(k -> Values.getValue(k, params)).collect(toList()); return DefaultKeyValuePreparedStatement.get(values, manager, params, query); } }
static org.jnosql.diana.api.Value getValue(Value<?> value, Params parameters) { Object result = get(value, parameters); if (result instanceof org.jnosql.diana.api.Value) { return org.jnosql.diana.api.Value.class.cast(result); } return org.jnosql.diana.api.Value.of(result); } }
Value add(String param) { ParamValue value = new ParamValue(param); parameters.add(value); return value; }
@Override public KeyValuePreparedStatement bind(String name, Object value) { Objects.requireNonNull(name, "name is required"); Objects.requireNonNull(value, "value is required"); paramsLeft.remove(name); params.bind(name, value); return this; }
@Override public Optional<Value> getSingleResult() { List<Value> entities = getResultList(); if (entities.isEmpty()) { return Optional.empty(); } if (entities.size() == 1) { return Optional.of(entities.get(0)); } throw new NonUniqueResultException("The select returns more than one entity, select: " + query); }
List<Value> query(String query, BucketManager manager) { GetQuery getQuery = supplier.apply(query); Params params = new Params(); List<Value> values = getQuery.getKeys().stream().map(k -> Values.getValue(k, params)).collect(toList()); if (params.isNotEmpty()) { throw new QueryException("To run a query with a parameter use a PrepareStatement instead."); } List<Object> keys = values.stream().map(Value::get).collect(toList()); List<Value> result = new ArrayList<>(); manager.get(keys).forEach(result::add); return result; }
@Override public <T> T get(TypeSupplier<T> typeSupplier) { validValue(); return Value.of(value).get(typeSupplier); }
static KeyValuePreparedStatement put(Value key, Value value, BucketManager manager, Params params, Duration ttl, String query) { return new DefaultKeyValuePreparedStatement(key, value, null, PreparedStatementType.PUT, manager, params, ttl, query); }
private static Object executeConvert(Params parameters, Object[] params) { Object value = get(Value.class.cast(params[0]), parameters); return org.jnosql.diana.api.Value.of(value) .get((Class<?>) params[1]); }
@Override public <T> T get(Class<T> clazz) { validValue(); return Value.of(value).get(clazz); }
static KeyValuePreparedStatement get(List<Value> keys, BucketManager manager, Params params, String query) { return new DefaultKeyValuePreparedStatement(null, null, keys, PreparedStatementType.GET, manager, params, null, query); }