Skip to content

Commit 6efff34

Browse files
Minor tweak
1 parent cb4ddd1 commit 6efff34

File tree

7 files changed

+131
-83
lines changed

7 files changed

+131
-83
lines changed

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
25-
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
26-
import org.neo4j.gds.core.utils.ProgressTimer;
2725
import org.neo4j.gds.core.utils.progress.JobId;
2826
import org.neo4j.gds.pathfinding.BellmanFordWriteStep;
2927
import org.neo4j.gds.paths.bellmanford.BellmanFordResult;
@@ -32,7 +30,6 @@
3230
import org.neo4j.gds.results.ResultTransformer;
3331

3432
import java.util.Map;
35-
import java.util.concurrent.atomic.AtomicLong;
3633
import java.util.stream.Stream;
3734

3835
class BellmanFordWriteResultTransformer implements ResultTransformer<TimedAlgorithmResult<BellmanFordResult>, Stream<BellmanFordWriteResult>> {
@@ -65,26 +62,23 @@ class BellmanFordWriteResultTransformer implements ResultTransformer<TimedAlgori
6562
@Override
6663
public Stream<BellmanFordWriteResult> apply(TimedAlgorithmResult<BellmanFordResult> algorithmResult) {
6764

68-
RelationshipsWritten relationshipsWritten;
69-
var writeMillis = new AtomicLong();
7065
var result = algorithmResult.result();
71-
try (var ignored = ProgressTimer.start(writeMillis::set)) {
72-
relationshipsWritten = writeStep.execute(
73-
graph,
74-
graphStore,
75-
resultStore,
76-
result,
77-
jobId
78-
);
79-
}
66+
var writeRelationshipsMetadata = WriteStepExecute.executeWriteRelationshipStep(
67+
writeStep,
68+
graph,
69+
graphStore,
70+
jobId,
71+
result,
72+
resultStore
73+
);
8074

8175
return Stream.of(
8276
new BellmanFordWriteResult(
8377
0,
8478
algorithmResult.computeMillis(),
85-
writeMillis.get(),
79+
writeRelationshipsMetadata.writeMillis(),
8680
0,
87-
relationshipsWritten.value(),
81+
writeRelationshipsMetadata.relationshipsWritten(),
8882
result.containsNegativeCycle(),
8983
configuration
9084
)

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

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,14 @@
2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
25-
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
26-
import org.neo4j.gds.core.utils.ProgressTimer;
2725
import org.neo4j.gds.core.utils.progress.JobId;
2826
import org.neo4j.gds.pathfinding.PrizeCollectingSteinerTreeWriteStep;
29-
import org.neo4j.gds.procedures.algorithms.pathfinding.PrizeCollectingSteinerTreeWriteResult;
3027
import org.neo4j.gds.pricesteiner.PrizeSteinerTreeResult;
28+
import org.neo4j.gds.procedures.algorithms.pathfinding.PrizeCollectingSteinerTreeWriteResult;
3129
import org.neo4j.gds.result.TimedAlgorithmResult;
3230
import org.neo4j.gds.results.ResultTransformer;
3331

3432
import java.util.Map;
35-
import java.util.concurrent.atomic.AtomicLong;
3633
import java.util.stream.Stream;
3734

3835
public class PCSTWriteResultTransformer implements ResultTransformer<TimedAlgorithmResult<PrizeSteinerTreeResult>, Stream<PrizeCollectingSteinerTreeWriteResult>> {
@@ -64,28 +61,25 @@ public PCSTWriteResultTransformer(
6461
@Override
6562
public Stream<PrizeCollectingSteinerTreeWriteResult> apply(TimedAlgorithmResult<PrizeSteinerTreeResult> algorithmResult) {
6663

67-
RelationshipsWritten relationshipsWritten;
68-
var writeMillis = new AtomicLong();
6964
var result = algorithmResult.result();
70-
try (var ignored = ProgressTimer.start(writeMillis::set)) {
71-
relationshipsWritten = writeStep.execute(
72-
graph,
73-
graphStore,
74-
resultStore,
75-
result,
76-
jobId
77-
);
78-
}
65+
var writeRelationshipsMetadata = WriteStepExecute.executeWriteRelationshipStep(
66+
writeStep,
67+
graph,
68+
graphStore,
69+
jobId,
70+
result,
71+
resultStore
72+
);
7973

8074
return Stream.of(
8175
new PrizeCollectingSteinerTreeWriteResult(
8276
0,
8377
algorithmResult.computeMillis(),
84-
writeMillis.get(),
78+
writeRelationshipsMetadata.writeMillis(),
8579
result.effectiveNodeCount(),
8680
result.totalWeight(),
8781
result.sumOfPrizes(),
88-
relationshipsWritten.value(),
82+
writeRelationshipsMetadata.relationshipsWritten(),
8983
configuration
9084
)
9185
);

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
25-
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
26-
import org.neo4j.gds.core.utils.ProgressTimer;
2725
import org.neo4j.gds.core.utils.progress.JobId;
2826
import org.neo4j.gds.pathfinding.ShortestPathWriteStep;
2927
import org.neo4j.gds.paths.dijkstra.PathFindingResult;
@@ -32,7 +30,6 @@
3230
import org.neo4j.gds.results.ResultTransformer;
3331

3432
import java.util.Map;
35-
import java.util.concurrent.atomic.AtomicLong;
3633
import java.util.stream.Stream;
3734

3835
class ShortestPathWriteResultTransformer implements ResultTransformer<TimedAlgorithmResult<PathFindingResult>, Stream<StandardWriteRelationshipsResult>> {
@@ -64,26 +61,23 @@ class ShortestPathWriteResultTransformer implements ResultTransformer<TimedAlgor
6461
@Override
6562
public Stream<StandardWriteRelationshipsResult> apply(TimedAlgorithmResult<PathFindingResult> algorithmResult) {
6663

67-
RelationshipsWritten relationshipsWritten;
68-
var writeMillis = new AtomicLong();
6964
var result = algorithmResult.result();
70-
try (var ignored = ProgressTimer.start(writeMillis::set)) {
71-
relationshipsWritten = writeStep.execute(
72-
graph,
73-
graphStore,
74-
resultStore,
75-
result,
76-
jobId
77-
);
78-
}
65+
var writeRelationshipsMetadata = WriteStepExecute.executeWriteRelationshipStep(
66+
writeStep,
67+
graph,
68+
graphStore,
69+
jobId,
70+
result,
71+
resultStore
72+
);
7973

8074
return Stream.of(
8175
new StandardWriteRelationshipsResult(
8276
0,
8377
algorithmResult.computeMillis(),
8478
0,
85-
writeMillis.get(),
86-
relationshipsWritten.value(),
79+
writeRelationshipsMetadata.writeMillis(),
80+
writeRelationshipsMetadata.relationshipsWritten(),
8781
configurationMap
8882
)
8983
);

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

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
25-
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
26-
import org.neo4j.gds.core.utils.ProgressTimer;
2725
import org.neo4j.gds.core.utils.progress.JobId;
2826
import org.neo4j.gds.pathfinding.SpanningTreeWriteStep;
2927
import org.neo4j.gds.procedures.algorithms.pathfinding.SpanningTreeWriteResult;
@@ -32,7 +30,6 @@
3230
import org.neo4j.gds.spanningtree.SpanningTree;
3331

3432
import java.util.Map;
35-
import java.util.concurrent.atomic.AtomicLong;
3633
import java.util.stream.Stream;
3734

3835
public class SpanningTreeWriteResultTransformer implements ResultTransformer<TimedAlgorithmResult<SpanningTree>, Stream<SpanningTreeWriteResult>> {
@@ -64,26 +61,22 @@ public SpanningTreeWriteResultTransformer(
6461
@Override
6562
public Stream<SpanningTreeWriteResult> apply(TimedAlgorithmResult<SpanningTree> algorithmResult) {
6663

67-
RelationshipsWritten relationshipsWritten;
68-
var writeMillis = new AtomicLong();
6964
var result = algorithmResult.result();
70-
try (var ignored = ProgressTimer.start(writeMillis::set)) {
71-
relationshipsWritten = writeStep.execute(
72-
graph,
73-
graphStore,
74-
resultStore,
75-
result,
76-
jobId
77-
);
78-
}
79-
65+
var writeRelationshipsMetadata = WriteStepExecute.executeWriteRelationshipStep(
66+
writeStep,
67+
graph,
68+
graphStore,
69+
jobId,
70+
result,
71+
resultStore
72+
);
8073
return Stream.of(
8174
new SpanningTreeWriteResult(
8275
0,
8376
algorithmResult.computeMillis(),
84-
writeMillis.get(),
77+
writeRelationshipsMetadata.writeMillis(),
8578
result.effectiveNodeCount(),
86-
relationshipsWritten.value(),
79+
writeRelationshipsMetadata.relationshipsWritten(),
8780
result.totalWeight(),
8881
configuration
8982
)

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

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
25-
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
26-
import org.neo4j.gds.core.utils.ProgressTimer;
2725
import org.neo4j.gds.core.utils.progress.JobId;
2826
import org.neo4j.gds.pathfinding.SteinerTreeWriteStep;
2927
import org.neo4j.gds.procedures.algorithms.pathfinding.SteinerWriteResult;
@@ -32,7 +30,6 @@
3230
import org.neo4j.gds.steiner.SteinerTreeResult;
3331

3432
import java.util.Map;
35-
import java.util.concurrent.atomic.AtomicLong;
3633
import java.util.stream.Stream;
3734

3835
public class SteinerTreeWriteResultTransformer implements ResultTransformer<TimedAlgorithmResult<SteinerTreeResult>, Stream<SteinerWriteResult>> {
@@ -63,29 +60,25 @@ public SteinerTreeWriteResultTransformer(
6360

6461
@Override
6562
public Stream<SteinerWriteResult> apply(TimedAlgorithmResult<SteinerTreeResult> algorithmResult) {
66-
67-
RelationshipsWritten relationshipsWritten;
68-
var writeMillis = new AtomicLong();
6963
var result = algorithmResult.result();
70-
try (var ignored = ProgressTimer.start(writeMillis::set)) {
71-
relationshipsWritten = writeStep.execute(
72-
graph,
73-
graphStore,
74-
resultStore,
75-
result,
76-
jobId
77-
);
78-
}
64+
var writeRelationshipsMetadata = WriteStepExecute.executeWriteRelationshipStep(
65+
writeStep,
66+
graph,
67+
graphStore,
68+
jobId,
69+
result,
70+
resultStore
71+
);
7972

8073
return Stream.of(
8174
new SteinerWriteResult(
8275
0,
8376
algorithmResult.computeMillis(),
84-
writeMillis.get(),
77+
writeRelationshipsMetadata.writeMillis(),
8578
result.effectiveNodeCount(),
8679
result.effectiveTargetNodesCount(),
8780
result.totalCost(),
88-
relationshipsWritten.value(),
81+
writeRelationshipsMetadata.relationshipsWritten(),
8982
configuration
9083
)
9184
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (c) "Neo4j"
3+
* Neo4j Sweden AB [http://neo4j.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Neo4j is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
package org.neo4j.gds.procedures.algorithms.pathfinding.write;
21+
22+
record WriteRelationshipMetadata(long relationshipsWritten, long writeMillis) {
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright (c) "Neo4j"
3+
* Neo4j Sweden AB [http://neo4j.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Neo4j is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
package org.neo4j.gds.procedures.algorithms.pathfinding.write;
21+
22+
import org.neo4j.gds.api.Graph;
23+
import org.neo4j.gds.api.GraphStore;
24+
import org.neo4j.gds.api.ResultStore;
25+
import org.neo4j.gds.applications.algorithms.machinery.WriteStep;
26+
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
27+
import org.neo4j.gds.core.utils.ProgressTimer;
28+
import org.neo4j.gds.core.utils.progress.JobId;
29+
30+
import java.util.concurrent.atomic.AtomicLong;
31+
32+
public final class WriteStepExecute {
33+
34+
private WriteStepExecute() {}
35+
36+
static <RESULT_FROM_ALGORITHM> WriteRelationshipMetadata executeWriteRelationshipStep(
37+
WriteStep<RESULT_FROM_ALGORITHM,RelationshipsWritten> writeStep,
38+
Graph graph,
39+
GraphStore graphStore,
40+
JobId jobId,
41+
RESULT_FROM_ALGORITHM algorithmResult,
42+
ResultStore resultStore
43+
) {
44+
RelationshipsWritten relationshipsWritten;
45+
var writeMillis = new AtomicLong();
46+
try (var ignored = ProgressTimer.start(writeMillis::set)) {
47+
relationshipsWritten = writeStep.execute(
48+
graph,
49+
graphStore,
50+
resultStore,
51+
algorithmResult,
52+
jobId
53+
);
54+
}
55+
return new WriteRelationshipMetadata(relationshipsWritten.value(), writeMillis.get());
56+
}
57+
}

0 commit comments

Comments
 (0)