Skip to content

Commit 2a847db

Browse files
no need for a consumer when we can return
1 parent d511ad4 commit 2a847db

File tree

5 files changed

+23
-32
lines changed

5 files changed

+23
-32
lines changed

src/main/java/org/gridsuite/network/map/dto/common/CurrentLimitsData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
import com.fasterxml.jackson.annotation.JsonInclude;
1010
import lombok.Builder;
11+
import lombok.Data;
1112
import lombok.EqualsAndHashCode;
12-
import lombok.Getter;
1313
import lombok.With;
1414
import org.springframework.util.CollectionUtils;
1515

@@ -22,7 +22,7 @@
2222
*/
2323
@Builder
2424
@With
25-
@Getter
25+
@Data
2626
@EqualsAndHashCode
2727
public class CurrentLimitsData {
2828
// may be null in case we just need the selected limit set and don't really need its name/id

src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ private static LineFormInfos toFormInfos(Identifiable<?> identifiable) {
6565
.b1(line.getB1())
6666
.g2(line.getG2())
6767
.b2(line.getB2())
68-
.properties(getProperties(line))
6968
.selectedOperationalLimitsGroup1(line.getSelectedOperationalLimitsGroupId1().orElse(null))
70-
.selectedOperationalLimitsGroup2(line.getSelectedOperationalLimitsGroupId2().orElse(null));
71-
72-
mergeCurrentLimits(line.getOperationalLimitsGroups1(), line.getOperationalLimitsGroups2(), builder::currentLimits);
69+
.selectedOperationalLimitsGroup2(line.getSelectedOperationalLimitsGroupId2().orElse(null))
70+
.currentLimits(mergeCurrentLimits(line.getOperationalLimitsGroups1(), line.getOperationalLimitsGroups2()))
71+
.properties(getProperties(line));
7372

7473
buildCurrentLimits(line.getOperationalLimitsGroups1(), builder::currentLimits1);
7574
buildCurrentLimits(line.getOperationalLimitsGroups2(), builder::currentLimits2);

src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ private static TwoWindingsTransformerFormInfos toFormInfos(Identifiable<?> ident
6666
.g(twoWT.getG())
6767
.ratedU1(twoWT.getRatedU1())
6868
.ratedU2(twoWT.getRatedU2())
69+
.selectedOperationalLimitsGroup1(twoWT.getSelectedOperationalLimitsGroupId1().orElse(null))
70+
.selectedOperationalLimitsGroup2(twoWT.getSelectedOperationalLimitsGroupId2().orElse(null))
71+
.currentLimits(mergeCurrentLimits(twoWT.getOperationalLimitsGroups1(), twoWT.getOperationalLimitsGroups2()))
6972
.properties(getProperties(twoWT));
7073

7174
builder.busOrBusbarSectionId1(getBusOrBusbarSection(terminal1))
@@ -77,10 +80,6 @@ private static TwoWindingsTransformerFormInfos toFormInfos(Identifiable<?> ident
7780
builder.q2(nullIfNan(terminal2.getQ()));
7881
builder.i1(nullIfNan(terminal1.getI()));
7982
builder.i2(nullIfNan(terminal2.getI()));
80-
builder.selectedOperationalLimitsGroup1(twoWT.getSelectedOperationalLimitsGroupId1().orElse(null));
81-
builder.selectedOperationalLimitsGroup2(twoWT.getSelectedOperationalLimitsGroupId2().orElse(null));
82-
83-
mergeCurrentLimits(twoWT.getOperationalLimitsGroups1(), twoWT.getOperationalLimitsGroups2(), builder::currentLimits);
8483

8584
buildCurrentLimits(twoWT.getOperationalLimitsGroups1(), builder::currentLimits1);
8685
buildCurrentLimits(twoWT.getOperationalLimitsGroups2(), builder::currentLimits2);

src/main/java/org/gridsuite/network/map/dto/utils/ElementUtils.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.gridsuite.network.map.dto.common.*;
1414
import org.gridsuite.network.map.dto.definition.extension.*;
1515
import org.gridsuite.network.map.dto.definition.threewindingstransformer.ThreeWindingsTransformerTabInfos;
16+
import org.springframework.lang.Nullable;
1617
import org.springframework.util.CollectionUtils;
1718

1819
import java.util.ArrayList;
@@ -97,11 +98,9 @@ public static void buildCurrentLimits(Collection<OperationalLimitsGroup> current
9798
* Combine 2 sides in one list.
9899
* @return id of the selected operation limits group 1 and 2 if they have been renamed
99100
*/
100-
public static void mergeCurrentLimits(Collection<OperationalLimitsGroup> operationalLimitsGroups1,
101-
Collection<OperationalLimitsGroup> operationalLimitsGroups2,
102-
Consumer<List<CurrentLimitsData>> build) {
103-
List<CurrentLimitsData> mergedLimitsData = new ArrayList<>();
104-
101+
@Nullable
102+
public static List<CurrentLimitsData> mergeCurrentLimits(final Collection<OperationalLimitsGroup> operationalLimitsGroups1,
103+
final Collection<OperationalLimitsGroup> operationalLimitsGroups2) {
105104
// Build temporary limit from side 1 and 2
106105
final List<CurrentLimitsData> currentLimitsData1 = operationalLimitsGroups1.stream()
107106
.map(ElementUtils::operationalLimitsGroupToMapDataCurrentLimits).toList();
@@ -112,20 +111,19 @@ public static void mergeCurrentLimits(Collection<OperationalLimitsGroup> operati
112111
// simple case : one of the arrays are empty
113112
if (currentLimitsData2.isEmpty() && !currentLimitsData1.isEmpty()) {
114113
for (final CurrentLimitsData currentLimitsData : currentLimitsData1) {
115-
mergedLimitsData.add(currentLimitsData.withApplicability(SIDE1));
114+
currentLimitsData.setApplicability(SIDE1);
116115
}
117-
build.accept(mergedLimitsData);
118-
return;
116+
return currentLimitsData1;
119117
}
120118
if (currentLimitsData1.isEmpty() && !currentLimitsData2.isEmpty()) {
121119
for (final CurrentLimitsData currentLimitsData : currentLimitsData2) {
122-
mergedLimitsData.add(currentLimitsData.withApplicability(SIDE2));
120+
currentLimitsData.setApplicability(SIDE2);
123121
}
124-
build.accept(mergedLimitsData);
125-
return;
122+
return currentLimitsData2;
126123
}
127124

128125
// more complex case
126+
List<CurrentLimitsData> mergedLimitsData = new ArrayList<>(currentLimitsData1.size() + currentLimitsData2.size());
129127
for (final CurrentLimitsData limitsData : currentLimitsData1) {
130128
final Optional<CurrentLimitsData> l2 = currentLimitsData2.stream().filter(l -> l.getId().equals(limitsData.getId())).findFirst();
131129
if (l2.isPresent()) {
@@ -151,9 +149,7 @@ public static void mergeCurrentLimits(Collection<OperationalLimitsGroup> operati
151149
mergedLimitsData.add(limitsData.withApplicability(SIDE2));
152150
}
153151

154-
if (!mergedLimitsData.isEmpty()) {
155-
build.accept(mergedLimitsData);
156-
}
152+
return mergedLimitsData.isEmpty() ? null : mergedLimitsData;
157153
}
158154

159155
public static Optional<StandbyAutomatonInfos> toStandbyAutomaton(StaticVarCompensator staticVarCompensator) {

src/test/java/org/gridsuite/network/map/utils/ElementUtilsTest.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.util.Collection;
2424
import java.util.List;
2525
import java.util.concurrent.atomic.AtomicReference;
26-
import java.util.function.Consumer;
2726
import java.util.stream.Stream;
2827

2928
@ExtendWith({ SoftAssertionsExtension.class, MockitoExtension.class })
@@ -161,19 +160,17 @@ void nonNanPermLimitAndNonEmptyTempLimit() {
161160
}
162161
}
163162

164-
/** Tests for {@link ElementUtils#mergeCurrentLimits(Collection, Collection, Consumer)} */
163+
/** Tests for {@link ElementUtils#mergeCurrentLimits(Collection, Collection)} */
165164
@Nested
166-
@DisplayName("fn mergeCurrentLimits(…, …, …)")
165+
@DisplayName("fn mergeCurrentLimits(…, …)")
167166
class MergeCurrentLimitsTest {
168167
@ParameterizedTest(name = ParameterizedTest.INDEX_PLACEHOLDER)
169168
@MethodSource("mergeCurrentLimitsTestData")
170169
void shouldNotThrow(
171170
final Collection<OperationalLimitsGroup> olg1,
172171
final Collection<OperationalLimitsGroup> olg2,
173172
final List<CurrentLimitsData> expected) {
174-
AtomicReference<List<CurrentLimitsData>> results = new AtomicReference<>();
175-
ElementUtils.mergeCurrentLimits(olg1, olg2, results::set);
176-
assertThat(results.get()).as("Result").isEqualTo(expected);
173+
assertThat(ElementUtils.mergeCurrentLimits(olg1, olg2)).as("Result").isEqualTo(expected);
177174
}
178175

179176
private static Stream<Arguments> mergeCurrentLimitsTestData() {
@@ -275,8 +272,8 @@ void shouldThrowOnNanLimit(final SoftAssertions softly) {
275272
final var l1 = List.of(MockUtils.mockOperationalLimitsGroup("group1", Double.NaN, List.of(MockUtils.mockTemporaryLimits(100, "temporary1", 50.0), MockUtils.mockTemporaryLimits(150, "temporary2", 70.0))));
276273
final var l2 = List.of(MockUtils.mockOperationalLimitsGroup("group1", 220.0, List.of(MockUtils.mockTemporaryLimits(100, "temporary1", 50.0), MockUtils.mockTemporaryLimits(150, "temporary2", 70.0))));
277274
AtomicReference<List<CurrentLimitsData>> results = new AtomicReference<>();
278-
softly.assertThatNullPointerException().isThrownBy(() -> ElementUtils.mergeCurrentLimits(l1, l2, results::set));
279-
softly.assertThatNullPointerException().isThrownBy(() -> ElementUtils.mergeCurrentLimits(l2, l1, results::set));
275+
softly.assertThatNullPointerException().isThrownBy(() -> ElementUtils.mergeCurrentLimits(l1, l2));
276+
softly.assertThatNullPointerException().isThrownBy(() -> ElementUtils.mergeCurrentLimits(l2, l1));
280277
}
281278

282279
// TODO what to do when one side has duplicate ID?

0 commit comments

Comments
 (0)