Skip to content

Commit 037da3a

Browse files
Updates LimitViolationBuilder to reflect changes in LimitViolation
Signed-off-by: nomus <mustafanoor715@gmail.com>
1 parent 343bf4a commit 037da3a

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

contingency/contingency-api/src/main/java/com/powsybl/contingency/violations/LimitViolationBuilder.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ public class LimitViolationBuilder {
2323

2424
private String subjectId;
2525
private String subjectName;
26+
private String operationalLimitsGroupId = "";
2627
private LimitViolationType type;
2728
private Double limit;
2829
private String limitName;
2930
private Integer duration;
3031
private double reduction = 1.0;
3132
private Double value;
3233
private ThreeSides side;
34+
private ViolationLocation violationLocation;
3335

3436
public LimitViolationBuilder type(LimitViolationType type) {
3537
this.type = requireNonNull(type);
@@ -46,6 +48,16 @@ public LimitViolationBuilder subjectName(String subjectName) {
4648
return this;
4749
}
4850

51+
public LimitViolationBuilder operationalLimitsGroupId(String id) {
52+
this.operationalLimitsGroupId = id;
53+
return this;
54+
}
55+
56+
public LimitViolationBuilder violationLocation(ViolationLocation location) {
57+
this.violationLocation = location;
58+
return this;
59+
}
60+
4961
public LimitViolationBuilder limitName(String name) {
5062
this.limitName = name;
5163
return this;
@@ -107,14 +119,14 @@ public LimitViolation build() {
107119
case CURRENT:
108120
requireNonNull(duration, "Acceptable duration must be defined.");
109121
requireNonNull(side, "Violation side must be defined.");
110-
return new LimitViolation(subjectId, subjectName, type, limitName, duration, limit, reduction, value, side);
122+
return new LimitViolation(subjectId, subjectName, operationalLimitsGroupId, type, limitName, duration, limit, reduction, value, side, violationLocation);
111123
case LOW_VOLTAGE:
112124
case HIGH_VOLTAGE:
113125
case LOW_SHORT_CIRCUIT_CURRENT:
114126
case HIGH_SHORT_CIRCUIT_CURRENT:
115127
case LOW_VOLTAGE_ANGLE:
116128
case HIGH_VOLTAGE_ANGLE:
117-
return new LimitViolation(subjectId, subjectName, type, limitName, Integer.MAX_VALUE, limit, reduction, value);
129+
return new LimitViolation(subjectId, subjectName, operationalLimitsGroupId, type, limitName, Integer.MAX_VALUE, limit, reduction, value, null, violationLocation);
118130
default:
119131
throw new UnsupportedOperationException(String.format("Building %s limits is not supported.", type.name()));
120132
}

contingency/contingency-api/src/test/java/com/powsybl/contingency/violations/LimitViolationBuilderTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.assertj.core.api.Assertions;
1212
import org.junit.jupiter.api.Test;
1313

14+
import java.util.List;
1415
import java.util.concurrent.TimeUnit;
1516

1617
import static org.junit.jupiter.api.Assertions.*;
@@ -63,12 +64,14 @@ void buildCurrentViolation() {
6364
.reduction(0.9)
6465
.side2()
6566
.duration(60)
67+
.operationalLimitsGroupId("group1")
6668
.build();
6769
assertEquals(TwoSides.TWO, violation2.getSideAsTwoSides());
6870
assertEquals("name", violation2.getSubjectName());
6971
assertEquals("limitName", violation2.getLimitName());
7072
assertEquals(0.9, violation2.getLimitReduction(), 0);
7173
assertEquals(60, violation2.getAcceptableDuration(), 0);
74+
assertEquals("group1", violation2.getOperationalLimitsGroupId());
7275
}
7376

7477
@Test
@@ -88,6 +91,21 @@ void buildLowVoltageViolation() {
8891
assertEquals(1.0, violation.getLimitReduction(), 0);
8992
}
9093

94+
@Test
95+
void buildHighVoltageViolationWithLocation() {
96+
ViolationLocation location = new BusBreakerViolationLocation(List.of("BUS1"));
97+
LimitViolation violation = LimitViolations.highVoltage()
98+
.subject("id")
99+
.limit(420)
100+
.value(450)
101+
.violationLocation(location)
102+
.build();
103+
assertEquals("id", violation.getSubjectId());
104+
assertSame(LimitViolationType.HIGH_VOLTAGE, violation.getLimitType());
105+
assertTrue(violation.getViolationLocation().isPresent());
106+
assertSame(location, violation.getViolationLocation().get());
107+
}
108+
91109
@Test
92110
void buildHighVoltageViolation() {
93111
LimitViolationBuilder builder = LimitViolations.highVoltage()

0 commit comments

Comments
 (0)