private CypherResult doExecuteQuery(String query, boolean canProfile) { long time = System.currentTimeMillis(); Transaction tx = gdb.beginTx(); javax.transaction.Transaction resumeTx; try { resumeTx = suspendTx(query); ExecutionResult result = canProfile ? executionEngine.profile(query) : executionEngine.execute(query); final Collection<Map<String, Object>> data = IteratorUtil.asCollection(result); time = System.currentTimeMillis() - time; resumeTransaction(resumeTx); CypherResult cypherResult = new CypherResult( result.columns(), data, result.getQueryStatistics(), time, canProfile ? result.executionPlanDescription() : null, prettify(query)); tx.success(); return cypherResult; } finally { tx.close(); } }
@Test public void find_john_has_seen() { ExecutionEngine engine = new ExecutionEngine(graphDb); String cql = "start user=node:users(name = \"John Johnson\")" + "match (user)-[:HAS_SEEN]->(movie)" + "return movie;"; ExecutionResult result = engine.execute(cql); logger.info("Execution result:" + result.toString()); for (Map<String, Object> row : result) { logger.info("Row:" + row); } List<String> columns = result.columns(); for (String column : columns) { logger.info("Column:" + column); Iterator<Object> columnValues = result.columnAs(column); while (columnValues.hasNext()) { logger.info("Value:" + columnValues.next()); } } }