private void writeJsonResult(Reporter reporter, String[] header, JsonGenerator jsonGenerator, Result.ResultRow row, ExportConfig config) throws IOException { jsonGenerator.writeStartObject(); for (int col = 0; col < header.length; col++) { String keyName = header[col]; Object value = row.get(keyName); write(reporter, jsonGenerator, config, keyName, value, true); } jsonGenerator.writeEndObject(); }
@Override public boolean visit(Result.ResultRow row) throws RuntimeException { nodeMap.put(row.getNumber("id").longValue(),nodes); nodes++; return true; } }
@Test public void eagerResultVisit() throws Exception { Result result = database.execute( "MATCH (n) RETURN n.c" ); List<String> values = new ArrayList<>(); result.accept( (Result.ResultVisitor<Exception>) row -> { values.add( row.getString( "n.c" ) ); return false; } ); assertThat( values, hasSize( 2 ) ); assertThat( values, containsInAnyOrder( "d", "y" ) ); }
LongSet ids = new LongHashSet(); result.accept((Result.ResultVisitor<Exception>) resultRow -> { long item = resultRow.getNumber("item").longValue(); long id = resultRow.getNumber("category").longValue(); ids.add(id); double weight = resultRow.getNumber("weight").doubleValue(); map.compute(item, (key, agg) -> { if (agg == null) agg = new LongDoubleHashMap();
private void writeMeta( JsonGenerator out, Iterable<String> columns, Result.ResultRow row ) throws IOException { out.writeArrayFieldStart( "meta" ); try { /* * The way we've designed this JSON serialization is by injecting a custom codec * to write the entities. Unfortunately, there seems to be no way to control state * inside the JsonGenerator, and so we need to make a second call to write out the * meta information, directly to the injected codec. This is not very pretty, * but time is expensive, and redesigning one of three server serialization * formats is not a priority. */ Neo4jJsonCodec codec = (Neo4jJsonCodec) out.getCodec(); for ( String key : columns ) { codec.writeMeta( out, row.get( key ) ); } } finally { out.writeEndArray(); } } }
@Override public void write( JsonGenerator out, Iterable<String> columns, Result.ResultRow row, TransactionStateChecker txStateChecker ) throws IOException { out.writeArrayFieldStart( "row" ); try { for ( String key : columns ) { out.writeObject( row.get( key ) ); } } finally { out.writeEndArray(); writeMeta( out, columns, row ); } }
@Override public void write( JsonGenerator out, Iterable<String> columns, Result.ResultRow row, TransactionStateChecker txStateChecker ) throws IOException { RepresentationFormat format = new StreamingJsonFormat.StreamingRepresentationFormat( out, null ); out.writeArrayFieldStart( "rest" ); try { for ( String key : columns ) { write( out, format, row.get( key ), txStateChecker ); } } finally { out.writeEndArray(); } }
private Object getProperty(Result.ResultRow row, String propertyName) { try { return row.get(propertyName); } catch (IllegalArgumentException e) { return null; } }
public CypherAdapterRecord reset( Result.ResultRow cypherRecord ) { for ( int i = 0; i < fields.length; i++ ) { fields[i] = cypherRecord.get( fieldNames[i] ); } return this; } }
@Override protected Object underlyingObjectToObject( String key ) { return row.get( key ); } };
private Object getProperty(Result.ResultRow row, String propertyName) { try { return row.get(propertyName); } catch (IllegalArgumentException e) { return null; } }
@Override public boolean visit(Result.ResultRow res) throws RuntimeException { totalRelationships++; long source = ((Number) res.get("source")).longValue(); if (lastSource != source) { sourceIndex = algoIdGenerator.getOrCreateAlgoNodeId(source); relData.set(relDataIdx++,-sourceIndex - 1); lastSource = source; } long target = ((Number) res.get("target")).longValue(); if (lastTarget != target) { targetIndex = algoIdGenerator.getOrCreateAlgoNodeId(target); lastTarget = target; } if (weighted) { Number weightValue = res.getNumber("weight"); if (weightValue != null) { int weight = weightValue.intValue(); if (weight != defaultWeight) { long key = ((long) sourceIndex) << 32 | targetIndex; weights.put(key, weight); } } } relData.set(relDataIdx++,targetIndex); sourceDegreeData.increment(sourceIndex); return true; }
public ProgressInfo dump(Result result, Writer writer, Reporter reporter, ExportConfig config) throws Exception { try (Transaction tx = db.beginTx()) { CSVWriter out = getCsvWriter(writer, config); String[] header = writeResultHeader(result, out); String[] data = new String[header.length]; result.accept((row) -> { for (int col = 0; col < header.length; col++) { Object value = row.get(header[col]); data[col] = FormatUtils.toString(value); reporter.update(value instanceof Node ? 1: 0,value instanceof Relationship ? 1: 0 , value instanceof PropertyContainer ? 0 : 1); } out.writeNext(data, applyQuotesToAll); reporter.nextRow(); return true; }); tx.success(); reporter.done(); writer.close(); return reporter.getTotal(); } }
private void writeMeta( JsonGenerator out, Iterable<String> columns, Result.ResultRow row ) throws IOException { out.writeArrayFieldStart( "meta" ); try { /* * The way we've designed this JSON serialization is by injecting a custom codec * to write the entities. Unfortunately, there seems to be no way to control state * inside the JsonGenerator, and so we need to make a second call to write out the * meta information, directly to the injected codec. This is not very pretty, * but time is expensive, and redesigning one of three server serialization * formats is not a priority. */ Neo4jJsonCodec codec = (Neo4jJsonCodec) out.getCodec(); for ( String key : columns ) { codec.writeMeta( out, row.get( key ) ); } } finally { out.writeEndArray(); } } }
@Override public void write( JsonGenerator out, Iterable<String> columns, Result.ResultRow row, TransactionStateChecker txStateChecker ) throws IOException { out.writeArrayFieldStart( "row" ); try { for ( String key : columns ) { out.writeObject( row.get( key ) ); } } finally { out.writeEndArray(); writeMeta( out, columns, row ); } }
@Override public void write( JsonGenerator out, Iterable<String> columns, Result.ResultRow row, TransactionStateChecker txStateChecker ) throws IOException { RepresentationFormat format = new StreamingJsonFormat.StreamingRepresentationFormat( out, null ); out.writeArrayFieldStart( "rest" ); try { for ( String key : columns ) { write( out, format, row.get( key ), txStateChecker ); } } finally { out.writeEndArray(); } }
@Override protected Object underlyingObjectToObject( String key ) { return row.get( key ); } };
@Test( expected = QueryExecutionException.class ) public void dirtyContextDuringResultVisitResultInUnstableSnapshotException() throws Exception { Result result = database.execute( "MATCH (n) RETURN n.c" ); List<String> values = new ArrayList<>(); result.accept( (Result.ResultVisitor<Exception>) row -> { testCursorContext.markAsDirty(); values.add( row.getString( "n.c" ) ); return false; } ); }