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
2222import org .neo4j .gds .api .Graph ;
2323import org .neo4j .gds .api .GraphStore ;
2424import org .neo4j .gds .api .ResultStore ;
2525import org .neo4j .gds .applications .algorithms .machinery .WriteRelationshipService ;
2626import org .neo4j .gds .applications .algorithms .machinery .WriteStep ;
2727import org .neo4j .gds .applications .algorithms .metadata .RelationshipsWritten ;
28- import org .neo4j .gds .config .JobIdConfig ;
29- import org .neo4j .gds .config .WriteRelationshipConfig ;
3028import 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 ;
3429import 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