6
6
*/
7
7
package org .gridsuite .shortcircuit .server .reports ;
8
8
9
- import com .powsybl .commons .reporter .Report ;
10
- import com .powsybl .commons .reporter .Reporter ;
11
- import com .powsybl .commons .reporter .ReporterModel ;
12
- import com .powsybl .commons .reporter .TypedValue ;
9
+ import com .powsybl .commons .report .*;
10
+ import jdk .javadoc .doclet .Reporter ;
13
11
import lombok .NonNull ;
14
12
import lombok .extern .slf4j .Slf4j ;
15
13
import org .gridsuite .shortcircuit .server .service .ShortCircuitRunContext ;
38
36
public abstract class AbstractReportMapper {
39
37
/**
40
38
* Will try to modify the reporter
41
- * @param reporter the reporter to modify
39
+ * @param reportNode reportNode to modify
42
40
* @return the result
43
41
*
44
42
* @implNote currently support only some implementations of {@link Reporter}
45
43
*/
46
- public Reporter processReporter (@ NonNull final Reporter reporter ) {
47
- if (reporter instanceof ReporterModel reporterModel && reporterModel . getTaskKey ()
44
+ public ReportNode processReporter (@ NonNull final ReportNode reportNode ) {
45
+ if (reportNode . getMessageKey () != null && reportNode . getMessageKey ()
48
46
.matches ("^([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}@)?.*ShortCircuitAnalysis$" )) {
49
47
log .debug ("ShortCircuitAnalysis root node found, will modify it!" );
50
- return forUuidAtShortCircuitAnalysis (reporterModel );
48
+ return forUuidAtShortCircuitAnalysis (reportNode );
51
49
} else {
52
- log .trace ("Unrecognized Reporter: {}" , reporter );
53
- return reporter ;
50
+ log .trace ("Unrecognized ReportNode: {}" , reportNode );
51
+ return reportNode ;
52
+ }
53
+ }
54
+
55
+ public static void insertReportNode (ReportNode parent , ReportNode child ) {
56
+ ReportNodeAdder adder = parent .newReportNode ().withMessageTemplate (child .getMessageKey (), child .getMessageTemplate ());
57
+ for (Map .Entry <String , TypedValue > valueEntry : child .getValues ().entrySet ()) {
58
+ adder .withUntypedValue (valueEntry .getKey (), valueEntry .getValue ().toString ());
59
+ }
60
+ TypedValue severity = child .getValue (ReportConstants .REPORT_SEVERITY_KEY ).orElse (null );
61
+ if (severity != null ) {
62
+ adder .withSeverity (severity );
63
+ }
64
+ ReportNode insertedChild = adder .add ();
65
+ if (child .getChildren () != null ) {
66
+ child .getChildren ().forEach (grandChild -> insertReportNode (insertedChild , grandChild ));
54
67
}
55
68
}
56
69
@@ -59,32 +72,37 @@ public Reporter processReporter(@NonNull final Reporter reporter) {
59
72
*
60
73
* @implNote we assume there will always be at least one modification
61
74
*/
62
- protected Reporter forUuidAtShortCircuitAnalysis (@ NonNull final ReporterModel reporterModel ) {
63
- final ReporterModel newReporter = new ReporterModel (reporterModel .getTaskKey (), reporterModel .getDefaultName (), reporterModel .getTaskValues ());
64
- reporterModel .getReports ().forEach (newReporter ::report );
65
- reporterModel .getSubReporters ().forEach (reporter -> {
66
- if (reporter .getTaskKey () != null && reporter .getTaskKey ().endsWith ("ShortCircuitAnalysis" )) {
67
- newReporter .addSubReporter (forShortCircuitAnalysis (reporter ));
75
+ protected ReportNode forUuidAtShortCircuitAnalysis (@ NonNull final ReportNode reportNode ) {
76
+ ReportNodeBuilder builder = ReportNode .newRootReportNode ()
77
+ .withMessageTemplate (reportNode .getMessageKey (), reportNode .getMessageTemplate ());
78
+ reportNode .getValues ().entrySet ().forEach (entry -> builder .withTypedValue (entry .getKey (), entry .getValue ().getValue ().toString (), entry .getValue ().getType ()));
79
+ final ReportNode newReportNode = builder .build ();
80
+
81
+ reportNode .getChildren ().forEach (child -> {
82
+ if (child .getMessageKey () != null && child .getMessageKey ().endsWith ("ShortCircuitAnalysis" )) {
83
+ insertReportNode (newReportNode , forShortCircuitAnalysis (child ));
68
84
} else {
69
- newReporter . addSubReporter ( reporter );
85
+ insertReportNode ( newReportNode , child );
70
86
}
71
87
});
72
- return newReporter ;
88
+ return newReportNode ;
73
89
}
74
90
75
91
/**
76
92
* Modify node with key {@code ShortCircuitAnalysis}
77
93
*/
78
- protected abstract ReporterModel forShortCircuitAnalysis (@ NonNull final ReporterModel reporterModel );
94
+ protected abstract ReportNode forShortCircuitAnalysis (@ NonNull final ReportNode reportNode );
79
95
80
96
/**
81
- * Copy the report , but with {@link TypedValue#TRACE_SEVERITY} severity
82
- * @param reporterModel the {@link ReporterModel reporter} to which add the modified {@link Report }
83
- * @param report the report to copy with {@code TRACE} severity
97
+ * Copy the reportNode , but with {@link TypedValue#TRACE_SEVERITY} severity
98
+ * @param reportNode the {@link ReportNode reporter} to which add the modified {@link ReportNode }
99
+ * @param child the report to copy with {@code TRACE} severity
84
100
*/
85
- static void copyReportAsTrace (@ NonNull final ReporterModel reporterModel , @ NonNull final Report report ) {
86
- final Map <String , TypedValue > values = new HashMap <>(report .getValues ());
87
- values .put (Report .REPORT_SEVERITY_KEY , TypedValue .TRACE_SEVERITY );
88
- reporterModel .report (new Report (report .getReportKey (), report .getDefaultMessage (), values ));
101
+ static void copyReportAsTrace (@ NonNull final ReportNode reportNode , @ NonNull final ReportNode child ) {
102
+ final Map <String , TypedValue > values = new HashMap <>(child .getValues ());
103
+ values .put (ReportConstants .REPORT_SEVERITY_KEY , TypedValue .TRACE_SEVERITY );
104
+ ReportNodeAdder adder = reportNode .newReportNode ().withMessageTemplate (child .getMessageKey (), child .getMessageTemplate ());
105
+ values .entrySet ().forEach (entry -> adder .withTypedValue (entry .getKey (), entry .getValue ().getValue ().toString (), entry .getValue ().getType ()));
106
+ adder .add ();
89
107
}
90
108
}
0 commit comments