8
8
9
9
import com .fasterxml .jackson .core .JsonProcessingException ;
10
10
import com .fasterxml .jackson .databind .ObjectMapper ;
11
- import com .powsybl .commons .reporter .ReporterModel ;
12
- import com .powsybl .commons .reporter .TypedValue ;
11
+ import com .powsybl .commons .report .*;
13
12
import com .powsybl .iidm .network .Network ;
14
13
import com .powsybl .loadflow .LoadFlowParameters ;
15
14
import com .powsybl .network .store .model .VariantInfos ;
76
75
import static org .gridsuite .study .server .dto .InfoTypeParameters .QUERY_PARAM_OPERATION ;
77
76
import static org .gridsuite .study .server .service .NetworkModificationTreeService .ROOT_NODE_NAME ;
78
77
import static org .gridsuite .study .server .utils .StudyUtils .handleHttpError ;
78
+ import static org .gridsuite .study .server .utils .StudyUtils .insertReportNode ;
79
79
80
80
/**
81
81
* @author Abdelsalem Hedhili <abdelsalem.hedhili at rte-france.com>
@@ -1590,12 +1590,12 @@ private void checkStudyContainsNode(UUID studyUuid, UUID nodeUuid) {
1590
1590
}
1591
1591
1592
1592
@ Transactional (readOnly = true )
1593
- public ReporterModel getSubReport (String subReportId , Set <String > severityLevels ) {
1593
+ public ReportNode getSubReport (String subReportId , Set <String > severityLevels ) {
1594
1594
return reportService .getSubReport (UUID .fromString (subReportId ), severityLevels );
1595
1595
}
1596
1596
1597
1597
@ Transactional (readOnly = true )
1598
- public List <ReporterModel > getNodeReport (UUID nodeUuid , String reportId , ReportType reportType , Set <String > severityLevels ) {
1598
+ public List <ReportNode > getNodeReport (UUID nodeUuid , String reportId , ReportType reportType , Set <String > severityLevels ) {
1599
1599
return getSubReporters (nodeUuid , UUID .fromString (reportId ), nodeUuid + "@" + reportType .reportKey , ReportNameMatchingType .EXACT_MATCHING , severityLevels );
1600
1600
}
1601
1601
@@ -1614,45 +1614,46 @@ private Pair<String, ReportNameMatchingType> getFiltersParamaters(UUID nodeUuid,
1614
1614
}
1615
1615
1616
1616
@ Transactional (readOnly = true )
1617
- public List <ReporterModel > getParentNodesReport (UUID nodeUuid , boolean nodeOnlyReport , ReportType reportType , Set <String > severityLevels ) {
1617
+ public List <ReportNode > getParentNodesReport (UUID nodeUuid , boolean nodeOnlyReport , ReportType reportType , Set <String > severityLevels ) {
1618
1618
Pair <String , ReportNameMatchingType > filtersParameters = getFiltersParamaters (nodeUuid , nodeOnlyReport , reportType );
1619
1619
AbstractNode nodeInfos = networkModificationTreeService .getNode (nodeUuid );
1620
- List <ReporterModel > subReporters = getSubReporters (nodeUuid , nodeInfos .getReportUuid (), filtersParameters .getFirst (), filtersParameters .getSecond (), severityLevels );
1620
+ List <ReportNode > subReporters = getSubReporters (nodeUuid , nodeInfos .getReportUuid (), filtersParameters .getFirst (), filtersParameters .getSecond (), severityLevels );
1621
1621
if (subReporters .isEmpty ()) {
1622
1622
return subReporters ;
1623
1623
} else if (nodeOnlyReport ) {
1624
1624
return List .of (subReporters .get (subReporters .size () - 1 ));
1625
1625
} else {
1626
- if (subReporters .get (0 ).getTaskKey ().equals (ROOT_NODE_NAME )) {
1626
+ if (subReporters .get (0 ).getMessageKey ().equals (ROOT_NODE_NAME )) {
1627
1627
return subReporters ;
1628
1628
}
1629
- Optional <UUID > parentUuid = networkModificationTreeService .getParentNodeUuid (UUID .fromString (subReporters .get (0 ).getTaskKey ()));
1629
+ Optional <UUID > parentUuid = networkModificationTreeService .getParentNodeUuid (UUID .fromString (subReporters .get (0 ).getMessageKey ()));
1630
1630
if (parentUuid .isEmpty ()) {
1631
1631
return subReporters ;
1632
1632
}
1633
- List <ReporterModel > parentReporters = self .getParentNodesReport (parentUuid .get (), false , reportType , severityLevels );
1633
+ List <ReportNode > parentReporters = self .getParentNodesReport (parentUuid .get (), false , reportType , severityLevels );
1634
1634
return Stream .concat (parentReporters .stream (), subReporters .stream ()).collect (Collectors .toList ());
1635
1635
}
1636
1636
}
1637
1637
1638
- private List <ReporterModel > getSubReporters (UUID nodeUuid , UUID reportUuid , String reportNameFilter , ReportNameMatchingType reportNameMatchingType , Set <String > severityLevels ) {
1639
- ReporterModel reporter = reportService .getReport (reportUuid , nodeUuid .toString (), reportNameFilter , reportNameMatchingType , severityLevels );
1640
- Map <String , List <ReporterModel >> subReportersByNode = new LinkedHashMap <>();
1641
- reporter .getSubReporters ().forEach (subReporter -> subReportersByNode .putIfAbsent (getNodeIdFromReportKey (subReporter ), new ArrayList <>()));
1642
- reporter .getSubReporters ().forEach (subReporter ->
1643
- subReportersByNode .get (getNodeIdFromReportKey (subReporter )).addAll (subReporter .getSubReporters ())
1644
- );
1638
+ private List <ReportNode > getSubReporters (UUID nodeUuid , UUID reportUuid , String reportNameFilter ,
1639
+ ReportNameMatchingType reportNameMatchingType , Set <String > severityLevels ) {
1640
+ ReportNode reporter = reportService .getReport (reportUuid , nodeUuid .toString (), reportNameFilter ,
1641
+ reportNameMatchingType , severityLevels );
1642
+ Map <String , List <ReportNode >> subReportersByNode = new LinkedHashMap <>();
1643
+ reporter .getChildren ().forEach (
1644
+ subReporter -> subReportersByNode .putIfAbsent (getNodeIdFromReportKey (subReporter ), new ArrayList <>()));
1645
+ reporter .getChildren ().forEach (subReporter -> subReportersByNode .get (getNodeIdFromReportKey (subReporter ))
1646
+ .addAll (subReporter .getChildren ()));
1645
1647
return subReportersByNode .keySet ().stream ().map (nodeId -> {
1646
- // For a node report, pass the reportId to the Front as taskValues, to allow direct access
1647
- Map <String , TypedValue > taskValues = Map .of ("id" , new TypedValue (reportUuid .toString (), "ID" ));
1648
- ReporterModel newSubReporter = new ReporterModel (nodeId , nodeId , taskValues );
1649
- subReportersByNode .get (nodeId ).forEach (newSubReporter ::addSubReporter );
1648
+ ReportNode newSubReporter = ReportNode .newRootReportNode ().withMessageTemplate (nodeId , nodeId )
1649
+ .withUntypedValue ("id" , reportUuid .toString ()).build ();
1650
+ subReportersByNode .get (nodeId ).forEach (child -> insertReportNode (newSubReporter , child ));
1650
1651
return newSubReporter ;
1651
1652
}).collect (Collectors .toList ());
1652
1653
}
1653
1654
1654
- private String getNodeIdFromReportKey (ReporterModel reporter ) {
1655
- return Arrays .stream (reporter .getTaskKey ().split ("@" )).findFirst ().orElseThrow ();
1655
+ private String getNodeIdFromReportKey (ReportNode reporter ) {
1656
+ return Arrays .stream (reporter .getMessageKey ().split ("@" )).findFirst ().orElseThrow ();
1656
1657
}
1657
1658
1658
1659
private void updateNode (UUID studyUuid , UUID nodeUuid , Optional <NetworkModificationResult > networkModificationResult ) {
0 commit comments