2525import org .neo4j .gds .core .utils .progress .JobId ;
2626import org .neo4j .gds .core .utils .progress .ProgressLogger ;
2727
28- import static org . neo4j . gds . utils . StringFormatting . formatWithLocale ;
28+ import java . util . function . Supplier ;
2929
30- public class TaskProgressLogger extends BatchingProgressLogger {
30+ import static org . neo4j . gds . utils . StringFormatting . formatWithLocale ;
3131
32+ @ SuppressWarnings ("ClassCanBeRecord" )
33+ public final class TaskProgressLogger implements ProgressLogger {
34+ private final BatchingProgressLogger batchingProgressLogger ;
3235 private final Task baseTask ;
3336 private final TaskVisitor loggingLeafTaskVisitor ;
3437
35- TaskProgressLogger (LoggerForProgressTracking log , JobId jobId , Task baseTask , Concurrency concurrency ) {
36- super (log , jobId , baseTask , concurrency );
37- this .baseTask = baseTask ;
38- this .loggingLeafTaskVisitor = new LoggingLeafTaskVisitor (this );
38+ static TaskProgressLogger create (LoggerForProgressTracking log , JobId jobId , Task baseTask , Concurrency concurrency ) {
39+ var batchingProgressLogger = new BatchingProgressLogger (log , jobId , baseTask , concurrency );
40+ var loggingLeafTaskVisitor = new LoggingLeafTaskVisitor (batchingProgressLogger );
41+
42+ return new TaskProgressLogger (batchingProgressLogger , baseTask , loggingLeafTaskVisitor );
43+ }
44+
45+ static TaskProgressLogger create (LoggerForProgressTracking log , JobId jobId , Task baseTask , Concurrency concurrency , TaskVisitor leafTaskVisitor ) {
46+ var batchingProgressLogger = new BatchingProgressLogger (log , jobId , baseTask , concurrency );
47+
48+ return new TaskProgressLogger (batchingProgressLogger , baseTask , leafTaskVisitor );
3949 }
40- TaskProgressLogger (LoggerForProgressTracking log , JobId jobId , Task baseTask , Concurrency concurrency , TaskVisitor leafTaskVisitor ) {
41- super (log , jobId , baseTask , concurrency );
50+
51+ private TaskProgressLogger (BatchingProgressLogger batchingProgressLogger , Task baseTask , TaskVisitor loggingLeafTaskVisitor ) {
52+ this .batchingProgressLogger = batchingProgressLogger ;
4253 this .baseTask = baseTask ;
43- this .loggingLeafTaskVisitor = leafTaskVisitor ;
54+ this .loggingLeafTaskVisitor = loggingLeafTaskVisitor ;
4455 }
4556
4657 void logBeginSubTask (Task task , Task parentTask ) {
@@ -104,20 +115,13 @@ private String unboundedIterationsTaskName(
104115
105116 private String taskDescription (Task task , Task parentTask ) {
106117 String taskName ;
107- if (parentTask instanceof IterativeTask ) {
108- var iterativeParentTask = (IterativeTask ) parentTask ;
118+ if (parentTask instanceof IterativeTask iterativeParentTask ) {
109119 var iterativeTaskMode = iterativeParentTask .mode ();
110- switch (iterativeTaskMode ) {
111- case DYNAMIC :
112- case FIXED :
113- taskName = boundedIterationsTaskName (iterativeParentTask , task );
114- break ;
115- case OPEN :
116- taskName = unboundedIterationsTaskName (iterativeParentTask , task );
117- break ;
118- default :
119- throw new UnsupportedOperationException (formatWithLocale ("Enum value %s is not supported" , iterativeTaskMode ));
120- }
120+
121+ taskName = switch (iterativeTaskMode ) {
122+ case DYNAMIC , FIXED -> boundedIterationsTaskName (iterativeParentTask , task );
123+ case OPEN -> unboundedIterationsTaskName (iterativeParentTask , task );
124+ };
121125 } else {
122126 taskName = taskDescription (task );
123127 }
@@ -134,17 +138,58 @@ private void log100OnLeafTaskFinish(Task task) {
134138 task .visit (loggingLeafTaskVisitor );
135139 }
136140
137- private static final class LoggingLeafTaskVisitor implements TaskVisitor {
141+ @ Override
142+ public String getTask () {
143+ return batchingProgressLogger .getTask ();
144+ }
138145
139- private final ProgressLogger progressLogger ;
146+ @ Override
147+ public void setTask (String task ) {
148+ batchingProgressLogger .setTask (task );
149+ }
140150
141- private LoggingLeafTaskVisitor (ProgressLogger progressLogger ) {
142- this .progressLogger = progressLogger ;
143- }
151+ @ Override
152+ public void logProgress (Supplier <String > msgFactory ) {
153+ batchingProgressLogger .logProgress (msgFactory );
154+ }
144155
145- @ Override
146- public void visitLeafTask (LeafTask leafTask ) {
147- progressLogger .logFinishPercentage ();
148- }
156+ @ Override
157+ public void logProgress (long progress , Supplier <String > msgFactory ) {
158+ batchingProgressLogger .logProgress (progress , msgFactory );
159+ }
160+
161+ @ Override
162+ public void logMessage (Supplier <String > msg ) {
163+ batchingProgressLogger .logMessage (msg );
164+ }
165+
166+ @ Override
167+ public void logFinishPercentage () {
168+ batchingProgressLogger .logFinishPercentage ();
169+ }
170+
171+ @ Override
172+ public void logDebug (Supplier <String > msg ) {
173+ batchingProgressLogger .logDebug (msg );
174+ }
175+
176+ @ Override
177+ public void logWarning (String msg ) {
178+ batchingProgressLogger .logWarning (msg );
179+ }
180+
181+ @ Override
182+ public void logError (String msg ) {
183+ batchingProgressLogger .logError (msg );
184+ }
185+
186+ @ Override
187+ public long reset (long newTaskVolume ) {
188+ return batchingProgressLogger .reset (newTaskVolume );
189+ }
190+
191+ @ Override
192+ public void release () {
193+ batchingProgressLogger .release ();
149194 }
150195}
0 commit comments