|
38 | 38 | import org.neo4j.gds.similarity.SimilarityResult; |
39 | 39 | import org.neo4j.gds.similarity.filtering.NodeFilter; |
40 | 40 | import org.neo4j.gds.termination.TerminationFlag; |
41 | | -import org.neo4j.gds.wcc.WccStub; |
42 | 41 | import org.neo4j.gds.wcc.WccParameters; |
| 42 | +import org.neo4j.gds.wcc.WccStub; |
43 | 43 |
|
44 | 44 | import java.util.Objects; |
45 | 45 | import java.util.Optional; |
@@ -173,21 +173,32 @@ private void prepare() { |
173 | 173 | progressTracker.beginSubTask(); |
174 | 174 |
|
175 | 175 | components = initComponents(); |
176 | | - if (parameters.runWCC()) { |
177 | | - progressTracker.beginSubTask(); |
| 176 | + |
| 177 | + if (parameters.runWCC()){ |
| 178 | + prepareAsChildTask(); |
| 179 | + }else{ |
| 180 | + prepareAsLeaf(); |
178 | 181 | } |
179 | | - initNodeSpecificFields(); |
180 | 182 |
|
181 | | - sourceNodesStream = initSourceNodesStream(); |
| 183 | + progressTracker.endSubTask(); |
| 184 | + } |
182 | 185 |
|
183 | | - targetNodesStream = initTargetNodesStream(); |
| 186 | + private void prepareAsLeaf(){ |
| 187 | + setUpNodesAndFilters(); |
| 188 | + } |
184 | 189 |
|
185 | | - if (parameters.runWCC()) { |
186 | | - progressTracker.endSubTask(); |
187 | | - } |
| 190 | + private void prepareAsChildTask(){ |
| 191 | + progressTracker.beginSubTask(); |
| 192 | + setUpNodesAndFilters(); |
188 | 193 | progressTracker.endSubTask(); |
189 | 194 | } |
190 | 195 |
|
| 196 | + private void setUpNodesAndFilters(){ |
| 197 | + initNodeSpecificFields(); |
| 198 | + sourceNodesStream = initSourceNodesStream(); |
| 199 | + targetNodesStream = initTargetNodesStream(); |
| 200 | + } |
| 201 | + |
191 | 202 | private Stream<SimilarityResult> computeSimilarityResultStream() { |
192 | 203 | if (parameters.hasTopK()) { |
193 | 204 | var topKMap = computeTopKMap(); |
@@ -219,10 +230,8 @@ private LongUnaryOperator initComponents() { |
219 | 230 | } |
220 | 231 |
|
221 | 232 | // run WCC to determine components |
222 | | - progressTracker.beginSubTask(); |
223 | 233 | var wccParameters = new WccParameters(0D, concurrency); |
224 | | - var disjointSets = wccStub.wcc(graph, wccParameters, ProgressTracker.NULL_TRACKER, false); |
225 | | - progressTracker.endSubTask(); |
| 234 | + var disjointSets = wccStub.wcc(graph, wccParameters, progressTracker, false); |
226 | 235 | return disjointSets::setIdOf; |
227 | 236 | } |
228 | 237 |
|
|
0 commit comments