Skip to content

Commit b2552f3

Browse files
Apply minor refactoring
Co-authored-by: Ioannis Panagiotas <ioannis.panagiotas@neotechnology.com>
1 parent 27da70c commit b2552f3

File tree

7 files changed

+41
-55
lines changed

7 files changed

+41
-55
lines changed

procedures/pushback-procedures-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/BellmanFordStreamResultTransformer.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@
2727
import org.neo4j.gds.results.ResultTransformer;
2828
import org.neo4j.graphdb.RelationshipType;
2929

30-
import java.util.ArrayList;
3130
import java.util.Arrays;
32-
import java.util.stream.Collectors;
3331
import java.util.stream.Stream;
3432

3533
import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
@@ -77,16 +75,19 @@ private BellmanFordStreamResult mapRoute(
7775
boolean negativeCycle,
7876
PathFactoryFacade pathFactoryFacade
7977
) {
80-
var nodeIds = pathResult.nodeIds();
81-
for (int i = 0; i < nodeIds.length; i++) {
82-
nodeIds[i] = idMap.toOriginalNodeId(nodeIds[i]);
83-
}
8478
var relationshipType = RelationshipType.withName(formatWithLocale(
8579
RELATIONSHIP_TYPE_TEMPLATE,
8680
pathResult.index()
8781
));
8882

89-
var costs = pathResult.costs();
83+
var nodeIds = Arrays.stream(pathResult.nodeIds())
84+
.map(idMap::toOriginalNodeId)
85+
.boxed()
86+
.toList();
87+
88+
var costs = Arrays.stream(pathResult.costs())
89+
.boxed()
90+
.toList();
9091

9192
var path = pathFactoryFacade.createPath(
9293
nodeIds,
@@ -100,9 +101,8 @@ private BellmanFordStreamResult mapRoute(
100101
idMap.toOriginalNodeId(pathResult.sourceNode()),
101102
idMap.toOriginalNodeId(pathResult.targetNode()),
102103
pathResult.totalCost(),
103-
// 😿
104-
Arrays.stream(nodeIds).boxed().collect(Collectors.toCollection(() -> new ArrayList<>(nodeIds.length))),
105-
Arrays.stream(costs).boxed().collect(Collectors.toCollection(() -> new ArrayList<>(costs.length))),
104+
nodeIds,
105+
costs,
106106
path,
107107
negativeCycle
108108
);

procedures/pushback-procedures-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/PathFindingStreamResultTransformer.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import org.neo4j.gds.results.ResultTransformer;
2727
import org.neo4j.graphdb.RelationshipType;
2828

29-
import java.util.ArrayList;
3029
import java.util.Arrays;
31-
import java.util.stream.Collectors;
3230
import java.util.stream.Stream;
3331

3432
import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
@@ -55,24 +53,25 @@ public PathFindingStreamResultTransformer(
5553
@Override
5654
public Stream<PathFindingStreamResult> apply(PathFindingResult pathFindingResult) {
5755

58-
var resultStream = pathFindingResult.mapPaths(pathResult -> mapPath(pathResult,graph,pathFactoryFacade));
56+
var resultStream = pathFindingResult.mapPaths(pathResult -> mapPath(pathResult, graph, pathFactoryFacade));
5957

6058
closeableResourceRegistry.register(resultStream);
6159

6260
return resultStream;
6361
}
6462

65-
PathFindingStreamResult mapPath(PathResult pathResult, Graph graph, PathFactoryFacade pathFactoryFacade){
66-
var nodeIds = pathResult.nodeIds();
67-
var costs = pathResult.costs();
63+
private PathFindingStreamResult mapPath(PathResult pathResult, Graph graph, PathFactoryFacade pathFactoryFacade) {
64+
var nodeIds = Arrays.stream(pathResult.nodeIds())
65+
.map(graph::toOriginalNodeId)
66+
.boxed()
67+
.toList();
68+
var costs = Arrays.stream(pathResult.costs())
69+
.boxed()
70+
.toList();
6871
var pathIndex = pathResult.index();
6972

7073
var relationshipType = RelationshipType.withName(formatWithLocale(RELATIONSHIP_TYPE_TEMPLATE, pathIndex));
7174

72-
// convert internal ids to Neo ids
73-
for (int i = 0; i < nodeIds.length; i++) {
74-
nodeIds[i] = graph.toOriginalNodeId(nodeIds[i]);
75-
}
7675
var path = pathFactoryFacade.createPath(
7776
nodeIds,
7877
costs,
@@ -85,13 +84,8 @@ PathFindingStreamResult mapPath(PathResult pathResult, Graph graph, PathFactoryF
8584
graph.toOriginalNodeId(pathResult.sourceNode()),
8685
graph.toOriginalNodeId(pathResult.targetNode()),
8786
pathResult.totalCost(),
88-
// 😿
89-
Arrays.stream(nodeIds)
90-
.boxed()
91-
.collect(Collectors.toCollection(() -> new ArrayList<>(nodeIds.length))),
92-
Arrays.stream(costs)
93-
.boxed()
94-
.collect(Collectors.toCollection(() -> new ArrayList<>(costs.length))),
87+
nodeIds,
88+
costs,
9589
path
9690
);
9791
}

procedures/pushback-procedures-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/RandomWalkStreamResultTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
import java.util.List;
3030
import java.util.stream.Stream;
3131

32-
public class RandomWalkStreamResultTransformer implements ResultTransformer<Stream<long[]>, Stream<RandomWalkStreamResult>>{
32+
public class RandomWalkStreamResultTransformer implements ResultTransformer<Stream<long[]>, Stream<RandomWalkStreamResult>> {
3333

34-
private final static String RELATIONSHIP_TYPE_NAME = "NEXT";
34+
private static final String RELATIONSHIP_TYPE_NAME = "NEXT";
3535
private final Graph graph;
3636
private final CloseableResourceRegistry closeableResourceRegistry;
3737
private final PathFactoryFacade pathFactoryFacade;

procedures/pushback-procedures-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/TraversalStreamResultTransformer.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,27 @@
1919
*/
2020
package org.neo4j.gds.procedures.algorithms.pathfinding;
2121

22-
import org.neo4j.gds.api.CloseableResourceRegistry;
2322
import org.neo4j.gds.api.Graph;
2423
import org.neo4j.gds.collections.ha.HugeLongArray;
2524
import org.neo4j.gds.results.ResultTransformer;
2625
import org.neo4j.graphdb.RelationshipType;
2726

2827
import java.util.Arrays;
29-
import java.util.stream.Collectors;
3028
import java.util.stream.Stream;
3129

3230
public class TraversalStreamResultTransformer implements ResultTransformer<HugeLongArray, Stream<TraversalStreamResult>> {
3331

34-
private static String RELATIONSHIP_TYPE = "NEXT";
32+
private static final String RELATIONSHIP_TYPE = "NEXT";
3533
private final Graph graph;
36-
private final CloseableResourceRegistry closeableResourceRegistry;
3734
private final PathFactoryFacade pathFactoryFacade;
3835
private final long sourceNodeId;
3936

4037
public TraversalStreamResultTransformer(
4138
Graph graph,
42-
CloseableResourceRegistry closeableResourceRegistry,
4339
PathFactoryFacade pathFactoryFacade,
4440
long sourceNodeId
4541
) {
4642
this.graph = graph;
47-
this.closeableResourceRegistry = closeableResourceRegistry;
4843
this.pathFactoryFacade = pathFactoryFacade;
4944
this.sourceNodeId = sourceNodeId;
5045
}
@@ -53,11 +48,10 @@ public TraversalStreamResultTransformer(
5348
@Override
5449
public Stream<TraversalStreamResult> apply(HugeLongArray nodes) {
5550
var nodesArray = nodes.toArray();
56-
var nodeList = Arrays
57-
.stream(nodesArray)
58-
.boxed()
51+
var nodeList = Arrays.stream(nodesArray)
5952
.map(graph::toOriginalNodeId)
60-
.collect(Collectors.toList());
53+
.boxed()
54+
.toList();
6155

6256
var path = pathFactoryFacade.createPath(
6357
nodeList,
@@ -66,9 +60,9 @@ public Stream<TraversalStreamResult> apply(HugeLongArray nodes) {
6660

6761
return Stream.of(
6862
new TraversalStreamResult(
69-
sourceNodeId, // should be node[0]
70-
nodeList,
71-
path
63+
sourceNodeId, // should be node[0]
64+
nodeList,
65+
path
7266
)
7367
);
7468
}

procedures/pushback-procedures-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/TraversalStreamResultTransformerBuilder.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public TraversalStreamResultTransformer build(Graph graph, GraphStore graphStore
5656
);
5757
return new TraversalStreamResultTransformer(
5858
graph,
59-
closeableResourceRegistry,
6059
pathFactoryFacade,
6160
sourceNode
6261
);

procedures/pushback-procedures-facade/src/test/java/org/neo4j/gds/procedures/algorithms/pathfinding/TopologicalSortStreamResultTransformerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,16 @@ void shouldTransformNonEmptyResultWithDistances() {
6060
);
6161

6262
var topoSort = mock(TopologicalSortResult.class);
63-
var array = HugeAtomicDoubleArray.of(2,ParallelDoublePageCreator.of(new Concurrency(1), v-> 3.0*(1-v)));
63+
var array = HugeAtomicDoubleArray.of(4, ParallelDoublePageCreator.of(new Concurrency(1), v -> v + 1.0));
6464
when(topoSort.maxSourceDistances()).thenReturn(Optional.of(array));
65-
when(topoSort.sortedNodes()).thenReturn(HugeLongArray.of(3,0));
65+
when(topoSort.sortedNodes()).thenReturn(HugeLongArray.of(3, 0));
6666
when(graphMock.toOriginalNodeId(anyLong())).thenAnswer(invocation -> invocation.getArgument(0));
6767

6868
var streamResult = transformer.apply(topoSort).toList();
6969

7070
assertThat(streamResult).hasSize(2);
71-
assertThat(streamResult.getFirst()).isEqualTo(new TopologicalSortStreamResult(3,10.0));
72-
assertThat(streamResult.getLast()).isEqualTo(new TopologicalSortStreamResult(0,7.0));
71+
assertThat(streamResult.getFirst()).isEqualTo(new TopologicalSortStreamResult(3, 4.0));
72+
assertThat(streamResult.getLast()).isEqualTo(new TopologicalSortStreamResult(0, 1.0));
7373

7474
}
7575

@@ -84,14 +84,14 @@ void shouldTransformNonEmptyResultWithoutDistances() {
8484
var topoSort = mock(TopologicalSortResult.class);
8585

8686

87-
when(topoSort.sortedNodes()).thenReturn(HugeLongArray.of(3,0));
87+
when(topoSort.sortedNodes()).thenReturn(HugeLongArray.of(3, 0));
8888
when(graphMock.toOriginalNodeId(anyLong())).thenAnswer(invocation -> invocation.getArgument(0));
8989

9090
var streamResult = transformer.apply(topoSort).toList();
9191

9292
assertThat(streamResult).hasSize(2);
93-
assertThat(streamResult.getFirst()).isEqualTo(new TopologicalSortStreamResult(3,null));
94-
assertThat(streamResult.getLast()).isEqualTo(new TopologicalSortStreamResult(0,null));
93+
assertThat(streamResult.getFirst()).isEqualTo(new TopologicalSortStreamResult(3, null));
94+
assertThat(streamResult.getLast()).isEqualTo(new TopologicalSortStreamResult(0, null));
9595

9696
}
9797

procedures/pushback-procedures-facade/src/test/java/org/neo4j/gds/procedures/algorithms/pathfinding/TraversalStreamResultTransformerTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.neo4j.gds.procedures.algorithms.pathfinding;
2121

2222
import org.junit.jupiter.api.Test;
23-
import org.neo4j.gds.api.CloseableResourceRegistry;
2423
import org.neo4j.gds.api.Graph;
2524
import org.neo4j.gds.collections.ha.HugeLongArray;
2625
import org.neo4j.graphdb.Path;
@@ -37,25 +36,25 @@ class TraversalStreamResultTransformerTest {
3736
@Test
3837
void shouldTransformNonEmptyResult() {
3938
var graphMock = mock(Graph.class);
40-
var closeableResourceRegistryMock = mock(CloseableResourceRegistry.class);
4139
var pathFactoryFacadeMock = mock(PathFactoryFacade.class);
4240

4341
var transformer = new TraversalStreamResultTransformer(
4442
graphMock,
45-
closeableResourceRegistryMock,
4643
pathFactoryFacadeMock,
4744
10
4845
);
4946

50-
when(graphMock.toOriginalNodeId(anyLong())).thenAnswer(invocation -> invocation.getArgument(0));
47+
when(graphMock.toOriginalNodeId(anyLong()))
48+
// don't return the same original id as the input
49+
.thenAnswer(invocation -> ((long) invocation.getArgument(0)) + 19L);
5150
when(pathFactoryFacadeMock.createPath(any(long[].class), any(double[].class), any(), anyString()))
5251
.thenReturn(mock(Path.class));
5352

5453
var streamResult = transformer.apply(HugeLongArray.of(3,2,1,0)).toList();
5554

5655
assertThat(streamResult).hasSize(1);
5756
var result = streamResult.getFirst();
58-
assertThat(result.nodeIds()).containsExactly(3L,2L,1L,0L);
57+
assertThat(result.nodeIds()).containsExactly(22L, 21L, 20L, 19L);
5958
assertThat(result.sourceNode()).isEqualTo(10);
6059
}
6160

0 commit comments

Comments
 (0)