-
Notifications
You must be signed in to change notification settings - Fork 43
Migration guide v6.3.0
Starting from this release, Reporter
and and Report
interfaces have been merged into a ReportNode
interface, which contains the same features. The com.powsybl.commons.reporter
package has been renamed into com.powsybl.commons.report
, hence the corresponding imports are impacted.
- The root
ReportNode
can be build thanks to the builder provided byReportNode.newRootReportNode()
, - A
ReportNode
can be added within anotherReportNode
thanks to the adder provided byreportNode.newReportNode()
.
The mentioned adder and builder share the same methods, with the following correspondence to former ReportBuilder
methods:
-
withMessageTemplate(String messageKey, String messageTemplate)
corresponds toreportBuilder.withKey(messageKey).withDefaultMessage(messageTemplate)
- the
withTypedValue(key, value, type)
methods keep the same signature as in the formerReportBuilder
- the
withUntypedValue(key, value, type)
methods corresponds toreportBuilder.withValue(key, value, type)
-
withSeverity(TypedValue severity)
, which corresponds toreportBuilder.withSeverity(TypedValue severity)
-
withSeverity(String severity)
, which corresponds toreportBuilder.withSeverity(new TypedValue(severity, TypedValue.SEVERITY)
Here are some replacement examples to help you migrate:
reporter.report(Report.builder()
.withKey("keyId")
.withDefaultMessage("New report with typed value ${typedValue}, untyped value ${untypedValue} and severity ${reportSeverity}")
.withTypedValue("typedValue", 20, "type")
.withValue("untypedValue", 3.)
.withSeverity(TypedValue.INFO_SEVERITY)
.build());
with
ReportNode childReportNode = reportNode.newReportNode()
.withMessageTemplate("keyId", "New report with typed value ${typedValue}, untyped value ${untypedValue} and severity ${reportSeverity}")
.withTypedValue("typedValue", 20, "type")
.withUntypedValue("untypedValue", 3.)
.withSeverity(TypedValue.INFO_SEVERITY)
.add();
reporter.report(reportNode);
with
reporter.include(reportNode);
Note that the included ReportNode
needs to be a root.
Previously adding a report / sub-reporter with createSubReporter
/ report
, now adding a child ReportNode with an adder
Replace
Reporter subReporter = reporter.createSubReporter(taskKey, defaultName);
or
reporter.report(reportKey, defaultMessage);
with
ReportNode childReportNode = reportNode.newReportNode()
.withMessageTemplate(reportKey, defaultMessage)
.add();
The replacements are similar for the other Reporter::createSubReporter
and Reporter::report
methods.
Replace the root creation
Reporter reporter = new ReporterModel(taskKey, defaultName, Maps.of(valueKey, new TypedValue(value, type)));
with
ReportNode rootReportNode = ReportNode.newRootReportNode()
.withMessageTemplate(taskKey, defaultName)
.withTypedValue(valueKey, value, type)
.build();
As a side-effect, the ReporterContext
interface has been renamed into ReportNodeContext
, and all the methods have been renamed. You need to replace the call to
-
ReporterContext::peekReporter
byReportNodeContext::peekReportNode
-
ReporterContext::getReporter
byReportNodeContext::getReportNode
-
ReporterContext::pushReporter
byReportNodeContext::pushReportNode
-
ReporterContext::popReportNode
byReportNodeContext::popReportNode
The implementations have also been renamed:
-
SimpleReporterContext
intoSimpleReportNodeContext
-
MultiThreadReporterContext
intoMultiThreadReportNodeContext
Lastly, Networks::allowReporterContextMultiThreadAccess
has therefore been renamed into Networks::allowReportNodeContextMultiThreadAccess
.
In the LoadFlowParameters
, the default value of writeSlackBus
parameter is now true
. This is a functional change, that could lead to differences during unit and integration tests.
Some criteria used for contingency definition were moved in a dedicated new module: powsybl-iidm-criteria
.
If you used the following classes, you should add the new module in your project dependencies and update your import statements:
- previously in the
com.powsybl.contingency.contingency.list.criterion
package, now incom.powsybl.iidm.criteria
:Criterion
PropertyCriterion
RegexCriterion
SingleCountryCriterion
SingleNominalVoltageCriterion
ThreeNominalVoltageCriterion
TwoCountriesCriterion
TwoNominalVoltageCriterion
- previously in the
com.powsybl.contingency.json
package, now incom.powsybl.iidm.criteria.json
:CriterionDeserializer
CriterionSerializer
SecurityAnalysisProvider.run(…)
now takes an additional parameter: List<LimitReduction> limitReductions
. You need to add this parameter to your own SecurityAnalysisProvider implementations.