Skip to content

Commit 417eff2

Browse files
authored
Fix hasLimit function and refactoring for mergeCurrentLimits (#275)
Signed-off-by: basseche <[email protected]>
1 parent b32f39d commit 417eff2

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public enum Applicability {
4343
}
4444

4545
public boolean hasLimits() {
46-
return !Double.isNaN(permanentLimit) || !CollectionUtils.isEmpty(temporaryLimits);
46+
return permanentLimit != null && !Double.isNaN(permanentLimit) || !CollectionUtils.isEmpty(temporaryLimits);
4747
}
4848

4949
public boolean limitsEquals(CurrentLimitsData other) {

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

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,24 +111,22 @@ public static void mergeCurrentLimits(Collection<OperationalLimitsGroup> operati
111111

112112
// Build temporary limit from side 1 and 2
113113
List<CurrentLimitsData> currentLimitsData1 = operationalLimitsGroups1.stream()
114-
.map(ElementUtils::operationalLimitsGroupToMapDataCurrentLimits).toList();
114+
.map(currentLimitsData ->
115+
ElementUtils.operationalLimitsGroupToMapDataCurrentLimits(currentLimitsData, SIDE1)).toList();
115116
ArrayList<CurrentLimitsData> currentLimitsData2 = new ArrayList<>(operationalLimitsGroups2.stream()
116-
.map(ElementUtils::operationalLimitsGroupToMapDataCurrentLimits).toList());
117+
.map(currentLimitsData ->
118+
ElementUtils.operationalLimitsGroupToMapDataCurrentLimits(currentLimitsData, SIDE2)).toList());
117119

118120
// combine 2 sides in one list
119121

120122
// simple case : one of the arrays are empty
121123
if (currentLimitsData2.isEmpty() && !currentLimitsData1.isEmpty()) {
122-
for (CurrentLimitsData currentLimitsData : currentLimitsData1) {
123-
mergedLimitsData.add(copyCurrentLimitsData(currentLimitsData, SIDE1));
124-
}
124+
mergedLimitsData.addAll(currentLimitsData1);
125125
build.accept(mergedLimitsData);
126126
return;
127127
}
128128
if (currentLimitsData1.isEmpty() && !currentLimitsData2.isEmpty()) {
129-
for (CurrentLimitsData currentLimitsData : currentLimitsData2) {
130-
mergedLimitsData.add(copyCurrentLimitsData(currentLimitsData, SIDE2));
131-
}
129+
mergedLimitsData.addAll(currentLimitsData2);
132130
build.accept(mergedLimitsData);
133131
return;
134132
}
@@ -141,33 +139,31 @@ public static void mergeCurrentLimits(Collection<OperationalLimitsGroup> operati
141139
CurrentLimitsData limitsData2 = l2.get();
142140
// Only side one has limits
143141
if (limitsData.hasLimits() && !limitsData2.hasLimits()) {
144-
mergedLimitsData.add(copyCurrentLimitsData(limitsData, SIDE1));
142+
mergedLimitsData.add(limitsData);
145143
// only side two has limits
146144
} else if (limitsData2.hasLimits() && !limitsData.hasLimits()) {
147-
mergedLimitsData.add(copyCurrentLimitsData(limitsData2, SIDE2));
145+
mergedLimitsData.add(limitsData2);
148146
} else {
149147
// both sides have limits and limits are equals
150148
if (limitsData.limitsEquals(limitsData2)) {
151149
mergedLimitsData.add(copyCurrentLimitsData(limitsData, EQUIPMENT));
152150
// both side have limits and they are different : create 2 different limit sets
153151
} else {
154152
// Side 1
155-
mergedLimitsData.add(copyCurrentLimitsData(limitsData, SIDE1));
153+
mergedLimitsData.add(limitsData);
156154
// Side 2
157-
mergedLimitsData.add(copyCurrentLimitsData(limitsData2, SIDE2));
155+
mergedLimitsData.add(limitsData2);
158156
}
159157
}
160158
// remove processed limits from side 2
161159
currentLimitsData2.remove(l2.get());
162160
} else {
163-
mergedLimitsData.add(copyCurrentLimitsData(limitsData, SIDE1));
161+
mergedLimitsData.add(limitsData);
164162
}
165163
}
166164

167165
// add remaining limits from side 2
168-
for (CurrentLimitsData limitsData : currentLimitsData2) {
169-
mergedLimitsData.add(copyCurrentLimitsData(limitsData, SIDE2));
170-
}
166+
mergedLimitsData.addAll(currentLimitsData2);
171167

172168
if (!mergedLimitsData.isEmpty()) {
173169
build.accept(mergedLimitsData);
@@ -262,6 +258,10 @@ public static CurrentLimitsData toMapDataCurrentLimits(CurrentLimits limits) {
262258
}
263259

264260
public static CurrentLimitsData operationalLimitsGroupToMapDataCurrentLimits(OperationalLimitsGroup operationalLimitsGroup) {
261+
return operationalLimitsGroupToMapDataCurrentLimits(operationalLimitsGroup, null);
262+
}
263+
264+
public static CurrentLimitsData operationalLimitsGroupToMapDataCurrentLimits(OperationalLimitsGroup operationalLimitsGroup, CurrentLimitsData.Applicability applicability) {
265265
if (operationalLimitsGroup == null || operationalLimitsGroup.getCurrentLimits().isEmpty()) {
266266
return null;
267267
}
@@ -278,6 +278,7 @@ public static CurrentLimitsData operationalLimitsGroupToMapDataCurrentLimits(Ope
278278
builder.temporaryLimits(toMapDataTemporaryLimit(currentLimits.getTemporaryLimits()));
279279
containsLimitsData = true;
280280
}
281+
builder.applicability(applicability);
281282

282283
return containsLimitsData ? builder.build() : null;
283284
}

0 commit comments

Comments
 (0)