Skip to content

Commit 81a52ad

Browse files
committed
Move ShortestPathWriteStep to dedicated module
1 parent ac6a8a4 commit 81a52ad

File tree

3 files changed

+36
-28
lines changed

3 files changed

+36
-28
lines changed

applications/algorithms/path-finding/src/main/java/org/neo4j/gds/applications/algorithms/pathfinding/PathFindingAlgorithmsWriteModeBusinessFacade.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.neo4j.gds.mem.MemoryEstimation;
3939
import org.neo4j.gds.pathfinding.BellmanFordWriteStep;
4040
import org.neo4j.gds.pathfinding.KSpanningTreeWriteStep;
41+
import org.neo4j.gds.pathfinding.ShortestPathWriteStep;
4142
import org.neo4j.gds.paths.WritePathOptionsConfig;
4243
import org.neo4j.gds.paths.astar.config.ShortestPathAStarWriteConfig;
4344
import org.neo4j.gds.paths.bellmanford.AllShortestPathsBellmanFordWriteConfig;
@@ -294,10 +295,13 @@ private <CONFIGURATION extends AlgoBaseConfig & RelationshipWeightConfig & Write
294295
Computation<PathFindingResult> algorithm,
295296
ResultBuilder<CONFIGURATION, PathFindingResult, RESULT_TO_CALLER, RelationshipsWritten> resultBuilder
296297
) {
297-
var writeStep = new ShortestPathWriteStep<>(
298-
log,
298+
var writeStep = new ShortestPathWriteStep(
299299
writeRelationshipService,
300-
configuration
300+
configuration.writeRelationshipType(),
301+
configuration.writeNodeIds(),
302+
configuration.writeCosts(),
303+
configuration::resolveResultStore,
304+
configuration.jobId()
301305
);
302306

303307
return runAlgorithmAndWrite(

procedures/path-finding-write-steps/src/main/java/org/neo4j/gds/pathfinding/PathFindingWriteRelationshipSpecification.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
import java.util.List;
3030

31-
public final class PathFindingWriteRelationshipSpecification {
31+
final class PathFindingWriteRelationshipSpecification {
3232

3333
private static final String TOTAL_COST_KEY = "totalCost";
3434
private static final String NODE_IDS_KEY = "nodeIds";
@@ -39,13 +39,13 @@ public final class PathFindingWriteRelationshipSpecification {
3939
private final boolean writeNodeIds;
4040
private final boolean writeCosts;
4141

42-
public PathFindingWriteRelationshipSpecification(IdMap idMap, boolean writeNodeIds, boolean writeCosts) {
42+
PathFindingWriteRelationshipSpecification(IdMap idMap, boolean writeNodeIds, boolean writeCosts) {
4343
this.idMap = idMap;
4444
this.writeNodeIds = writeNodeIds;
4545
this.writeCosts = writeCosts;
4646
}
4747

48-
public List<String> createKeys() {
48+
List<String> createKeys() {
4949
if (writeNodeIds && writeCosts) {
5050
return List.of(
5151
TOTAL_COST_KEY,
@@ -68,7 +68,7 @@ public List<String> createKeys() {
6868
return List.of(TOTAL_COST_KEY);
6969
}
7070

71-
public List<ValueType> createTypes() {
71+
List<ValueType> createTypes() {
7272
if (writeNodeIds && writeCosts) {
7373
return List.of(
7474
ValueType.DOUBLE,
@@ -124,7 +124,7 @@ private long[] toOriginalIds( long[] internalIds) {
124124
return internalIds;
125125
}
126126

127-
public ExportedRelationship createRelationship(PathResult pathResult){
127+
ExportedRelationship createRelationship(PathResult pathResult){
128128
return new ExportedRelationship(
129129
pathResult.sourceNode(),
130130
pathResult.targetNode(),

applications/algorithms/path-finding/src/main/java/org/neo4j/gds/applications/algorithms/pathfinding/ShortestPathWriteStep.java renamed to procedures/path-finding-write-steps/src/main/java/org/neo4j/gds/pathfinding/ShortestPathWriteStep.java

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,40 +17,46 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.applications.algorithms.pathfinding;
20+
package org.neo4j.gds.pathfinding;
2121

2222
import org.neo4j.gds.api.Graph;
2323
import org.neo4j.gds.api.GraphStore;
2424
import org.neo4j.gds.api.ResultStore;
2525
import org.neo4j.gds.applications.algorithms.machinery.WriteRelationshipService;
2626
import org.neo4j.gds.applications.algorithms.machinery.WriteStep;
2727
import org.neo4j.gds.applications.algorithms.metadata.RelationshipsWritten;
28-
import org.neo4j.gds.config.JobIdConfig;
29-
import org.neo4j.gds.config.WriteRelationshipConfig;
3028
import org.neo4j.gds.core.utils.progress.JobId;
31-
import org.neo4j.gds.logging.Log;
32-
import org.neo4j.gds.pathfinding.PathFindingWriteRelationshipSpecification;
33-
import org.neo4j.gds.paths.WritePathOptionsConfig;
3429
import org.neo4j.gds.paths.dijkstra.PathFindingResult;
3530

31+
import java.util.Optional;
32+
import java.util.function.Function;
33+
3634

3735
/**
3836
* This is relationship writes as needed by path finding algorithms (for now).
3937
*/
40-
class ShortestPathWriteStep<CONFIGURATION extends WriteRelationshipConfig & WritePathOptionsConfig & JobIdConfig> implements
41-
WriteStep<PathFindingResult, RelationshipsWritten> {
42-
private final Log log;
38+
public class ShortestPathWriteStep implements WriteStep<PathFindingResult, RelationshipsWritten> {
4339
private final WriteRelationshipService writeRelationshipService;
44-
private final CONFIGURATION configuration;
40+
private final String writeRelationshipType;
41+
private final boolean writeNodeIds;
42+
private final boolean writeCosts;
43+
private final Function<ResultStore, Optional<ResultStore>> resultStoreResolver;
44+
private final JobId jobId;
4545

46-
ShortestPathWriteStep(
47-
Log log,
46+
public ShortestPathWriteStep(
4847
WriteRelationshipService writeRelationshipService,
49-
CONFIGURATION configuration
48+
String writeRelationshipType,
49+
boolean writeNodeIds,
50+
boolean writeCosts,
51+
Function<ResultStore, Optional<ResultStore>> resultStoreResolver,
52+
JobId jobId
5053
) {
51-
this.log = log;
5254
this.writeRelationshipService = writeRelationshipService;
53-
this.configuration = configuration;
55+
this.writeRelationshipType = writeRelationshipType;
56+
this.writeNodeIds = writeNodeIds;
57+
this.writeCosts = writeCosts;
58+
this.resultStoreResolver = resultStoreResolver;
59+
this.jobId = jobId;
5460
}
5561

5662
/**
@@ -65,8 +71,6 @@ public RelationshipsWritten execute(
6571
PathFindingResult result,
6672
JobId jobId
6773
) {
68-
var writeNodeIds = configuration.writeNodeIds();
69-
var writeCosts = configuration.writeCosts();
7074

7175
var specification = new PathFindingWriteRelationshipSpecification(graph,writeNodeIds,writeCosts);
7276
var keys = specification.createKeys();
@@ -85,14 +89,14 @@ public RelationshipsWritten execute(
8589

8690
// the final result is the side effect of writing to the database, plus this metadata
8791
return writeRelationshipService.writeFromRelationshipStream(
88-
configuration.writeRelationshipType(),
92+
writeRelationshipType,
8993
keys,
9094
types,
9195
relationshipStream,
9296
graph,
9397
"Write shortest Paths",
94-
configuration.resolveResultStore(resultStore),
95-
configuration.jobId()
98+
resultStoreResolver.apply(resultStore),
99+
this.jobId
96100
);
97101
}
98102
}

0 commit comments

Comments
 (0)