@Override public void close() { if (toIter instanceof OResultSet) { ((OResultSet) toIter).close(); } }
private Object convert(Object item) { if (item instanceof OResultSet) { return ((OResultSet) item).stream().collect(Collectors.toList()); } return item; }
@Override public int executeUpdate(final String sql) throws SQLException { try { oResultSet = executeCommand(sql); Optional<OResult> res = oResultSet.stream().findFirst(); if (res.isPresent()) { if (res.get().getProperty("count") != null) { return Math.toIntExact((Long) res.get().getProperty("count")); } else return 1; } else { return 0; } } finally { oResultSet.close(); } }
@Override public OResultSet executeSimple(OCommandContext ctx) { Object result; if (expression != null) { result = expression.execute((OResult) null, ctx); } else { Map<Object, Object> params = ctx.getInputParameters(); if (statement.originalStatement == null) { statement.setOriginalStatement(statement.toString()); } result = statement.execute(ctx.getDatabase(), params, ctx); } if (result instanceof OResultSet) { OInternalResultSet rs = new OInternalResultSet(); ((OResultSet) result).stream().forEach(x -> rs.add(x)); rs.setPlan(((OResultSet) result).getExecutionPlan().orElse(null)); ((OResultSet) result).close(); result = rs; } if (ctx != null) { if (ctx.getParent() != null) { ctx.getParent().setVariable(name.getStringValue(), result); } else { ctx.setVariable(name.getStringValue(), result); } } return new OInternalResultSet(); }
@Override public OResult next() { if (!hasNext()) { throw new IllegalStateException(); } OResult result = entity.next(); return result; }
@Override public boolean hasNext() { if (!executed) { return true; } return upstream.hasNext(); }
@Override public OIndexKeyCursor keyCursor() { final OResultSet result = getDatabase().indexQuery(getName(), String.format(QUERY_KEYS, name)); final OInternalResultSet copy = new OInternalResultSet();//TODO a raw array instead...? result.forEachRemaining(x -> copy.add(x)); result.close(); return new OIndexKeyCursor() { @Override public Object next(int prefetchSize) { if (!copy.hasNext()) return null; final OResult value = copy.next(); return value.getProperty("key"); } }; }
@Override public Optional<OExecutionPlan> getExecutionPlan() { return entity.getExecutionPlan(); }
private int doExecute(OIndex index, OCommandContext ctx, OExpression keyExp, OExpression valueExp) { int count = 0; Object key = keyExp.execute((OResult) null, ctx); Object value = valueExp.execute((OResult) null, ctx); if (value instanceof OIdentifiable) { index.put(key, (OIdentifiable) value); count++; } else if (value instanceof OResult && ((OResult) value).isElement()) { index.put(key, ((OResult) value).getElement().get()); count++; } else if (value instanceof OResultSet) { ((OResultSet) value).elementStream().forEach(x -> index.put(key, x)); } else if (OMultiValue.isMultiValue(value)) { Iterator iterator = OMultiValue.getMultiValueIterator(value); while (iterator.hasNext()) { Object item = iterator.next(); if (value instanceof OIdentifiable) { index.put(key, (OIdentifiable) value); count++; } else if (value instanceof OResult && ((OResult) value).isElement()) { index.put(key, ((OResult) value).getElement().get()); count++; } else { throw new OCommandExecutionException("Cannot insert into index " + value); } } } return count; }
@Override public OResult next() { OResultInternal result = (OResultInternal) source.next(); if (result != null) { calculate(result, ctx); } return result; }
@Override public boolean hasNext() { return upstream.hasNext(); }
res.forEachRemaining(x -> copy.add(x)); res.close();
@Override public Optional<OExecutionPlan> getExecutionPlan() { return finalResult == null ? Optional.empty() : finalResult.getExecutionPlan(); }
@Override public void close() { if (fromIter instanceof OResultSet) { ((OResultSet) fromIter).close(); } }
@ConsoleCommand(splitInWords = false, description = "Traverse records and display the results", onlineHelp = "SQL-Traverse") public void traverse(@ConsoleParameter(name = "query-text", description = "The traverse to execute") String iQueryText) { final int limit; if (iQueryText.toLowerCase(Locale.ENGLISH).contains(" limit ")) { // RESET CONSOLE FLAG limit = -1; } else { limit = Integer.parseInt(properties.get("limit")); } long start = System.currentTimeMillis(); OResultSet rs = currentDatabase.command("traverse " + iQueryText); setResultset(rs.stream().map(x -> x.toElement()).collect(Collectors.toList())); rs.close(); float elapsedSeconds = getElapsedSecs(start); dumpResultSet(limit); message("\n\n" + currentResultSet.size() + " item(s) found. Traverse executed in " + elapsedSeconds + " sec(s)."); }
@Override public OGremlinResult next() { OResult next = inner.next(); return new OGremlinResult(graph, next); }
@Override public boolean hasNext() { return upstream.hasNext(); }