Skip to content

Commit 27efb12

Browse files
committed
SA results: add locationId to entities and dtos.
Signed-off-by: AAJELLAL <[email protected]>
1 parent c0a8b15 commit 27efb12

17 files changed

+236
-18
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@
4747
<liquibase-hibernate-package>org.gridsuite.securityanalysis.server</liquibase-hibernate-package>
4848
<db-util.version>1.0.5</db-util.version>
4949
<mockwebserver3.version>5.0.0-alpha.14</mockwebserver3.version>
50+
<!-- FIXME: powsybl-ws-commons modules'version is overloaded in the dependencies section
51+
The overloads and this property below have to be removed at next powsybl-ws-dependencies.version upgrade -->
52+
<powsybl-ws-commons.version>1.17.0</powsybl-ws-commons.version>
5053
</properties>
5154

5255
<build>
@@ -144,6 +147,8 @@
144147
<dependency>
145148
<groupId>com.powsybl</groupId>
146149
<artifactId>powsybl-ws-commons</artifactId>
150+
<version>${powsybl-ws-commons.version}</version>
151+
147152
</dependency>
148153
<dependency>
149154
<groupId>org.springframework.cloud</groupId>

src/main/java/org/gridsuite/securityanalysis/server/dto/PreContingencyLimitViolationResultDTO.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,20 @@
2424
public class PreContingencyLimitViolationResultDTO {
2525

2626
private String subjectId;
27+
private String locationId;
2728
private String status;
2829
private LimitViolationDTO limitViolation;
2930

3031
public static PreContingencyLimitViolationResultDTO toDto(PreContingencyLimitViolationEntity preContingencyLimitViolation) {
3132
String subjectId = preContingencyLimitViolation.getSubjectLimitViolation() != null
3233
? preContingencyLimitViolation.getSubjectLimitViolation().getSubjectId()
3334
: null;
34-
35+
String locationId = preContingencyLimitViolation.getSubjectLimitViolation() != null
36+
? preContingencyLimitViolation.getSubjectLimitViolation().getLocationId()
37+
: null;
3538
return PreContingencyLimitViolationResultDTO.builder()
3639
.subjectId(subjectId)
40+
.locationId(locationId)
3741
.status(preContingencyLimitViolation.getResult().getPreContingencyStatus())
3842
.limitViolation(LimitViolationDTO.toDto(preContingencyLimitViolation))
3943
.build();

src/main/java/org/gridsuite/securityanalysis/server/dto/SubjectLimitViolationDTO.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
@Builder
2222
public class SubjectLimitViolationDTO {
2323
private String subjectId;
24+
private String locationId;
2425

2526
private LimitViolationDTO limitViolation;
2627

@@ -29,8 +30,13 @@ public static SubjectLimitViolationDTO toDto(ContingencyLimitViolationEntity lim
2930
? limitViolation.getSubjectLimitViolation().getSubjectId()
3031
: null;
3132

33+
String locationId = limitViolation.getSubjectLimitViolation() != null
34+
? limitViolation.getSubjectLimitViolation().getLocationId()
35+
: null;
36+
3237
return SubjectLimitViolationDTO.builder()
3338
.subjectId(subjectId)
39+
.locationId(locationId)
3440
.limitViolation(LimitViolationDTO.toDto(limitViolation))
3541
.build();
3642
}

src/main/java/org/gridsuite/securityanalysis/server/dto/SubjectLimitViolationResultDTO.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
public class SubjectLimitViolationResultDTO {
2929
private String subjectId;
3030

31+
private String locationId;
32+
3133
private List<ContingencyLimitViolationDTO> contingencies;
3234

3335
public static SubjectLimitViolationResultDTO toDto(SubjectLimitViolationEntity subjectLimitViolation) {
@@ -37,6 +39,7 @@ public static SubjectLimitViolationResultDTO toDto(SubjectLimitViolationEntity s
3739

3840
return SubjectLimitViolationResultDTO.builder()
3941
.subjectId(subjectLimitViolation.getSubjectId())
42+
.locationId(subjectLimitViolation.getLocationId())
4043
.contingencies(contingencies)
4144
.build();
4245
}

src/main/java/org/gridsuite/securityanalysis/server/entities/ContingencyEntity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.gridsuite.securityanalysis.server.entities;
88

9+
import com.powsybl.iidm.network.Network;
910
import com.powsybl.security.results.PostContingencyResult;
1011
import jakarta.persistence.*;
1112
import lombok.Getter;
@@ -64,11 +65,11 @@ private void setContingencyLimitViolations(List<ContingencyLimitViolationEntity>
6465
}
6566
}
6667

67-
public static ContingencyEntity toEntity(PostContingencyResult postContingencyResult, Map<String, SubjectLimitViolationEntity> subjectLimitViolationsBySubjectId) {
68+
public static ContingencyEntity toEntity(Network network, PostContingencyResult postContingencyResult, Map<String, SubjectLimitViolationEntity> subjectLimitViolationsBySubjectId) {
6869
List<ContingencyElementEmbeddable> contingencyElements = postContingencyResult.getContingency().getElements().stream().map(contingencyElement -> ContingencyElementEmbeddable.toEntity(contingencyElement)).collect(Collectors.toList());
6970

7071
List<ContingencyLimitViolationEntity> contingencyLimitViolations = postContingencyResult.getLimitViolationsResult().getLimitViolations().stream()
71-
.map(limitViolation -> ContingencyLimitViolationEntity.toEntity(limitViolation, subjectLimitViolationsBySubjectId.get(limitViolation.getSubjectId())))
72+
.map(limitViolation -> ContingencyLimitViolationEntity.toEntity(network, limitViolation, subjectLimitViolationsBySubjectId.get(limitViolation.getSubjectId())))
7273
.collect(Collectors.toList());
7374
return new ContingencyEntity(postContingencyResult.getContingency().getId(), postContingencyResult.getStatus().name(), contingencyElements, contingencyLimitViolations);
7475
}

src/main/java/org/gridsuite/securityanalysis/server/entities/ContingencyLimitViolationEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
*/
77
package org.gridsuite.securityanalysis.server.entities;
88

9+
import com.powsybl.iidm.network.Network;
910
import com.powsybl.security.LimitViolation;
11+
import com.powsybl.ws.commons.computation.utils.ComputationResultUtils;
1012
import jakarta.persistence.*;
1113
import lombok.*;
1214
import lombok.experimental.FieldNameConstants;
@@ -30,7 +32,8 @@ public class ContingencyLimitViolationEntity extends AbstractLimitViolationEntit
3032
@Setter
3133
private ContingencyEntity contingency;
3234

33-
public static ContingencyLimitViolationEntity toEntity(LimitViolation limitViolation, SubjectLimitViolationEntity subjectLimitViolation) {
35+
public static ContingencyLimitViolationEntity toEntity(Network network, LimitViolation limitViolation, SubjectLimitViolationEntity subjectLimitViolation) {
36+
subjectLimitViolation.setLocationId(ComputationResultUtils.getViolationLocationId(limitViolation, network));
3437
ContingencyLimitViolationEntity contingencyLimitViolationEntity = ContingencyLimitViolationEntity.builder()
3538
.limit(limitViolation.getLimit())
3639
.limitName(limitViolation.getLimitName())

src/main/java/org/gridsuite/securityanalysis/server/entities/PreContingencyLimitViolationEntity.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
*/
77
package org.gridsuite.securityanalysis.server.entities;
88

9+
import com.powsybl.iidm.network.Network;
910
import com.powsybl.security.LimitViolation;
1011
import com.powsybl.security.results.PreContingencyResult;
12+
import com.powsybl.ws.commons.computation.utils.ComputationResultUtils;
1113
import jakarta.persistence.Entity;
1214
import jakarta.persistence.FetchType;
1315
import jakarta.persistence.ManyToOne;
@@ -40,11 +42,12 @@ public class PreContingencyLimitViolationEntity extends AbstractLimitViolationEn
4042
@Setter
4143
SecurityAnalysisResultEntity result;
4244

43-
public static List<PreContingencyLimitViolationEntity> toEntityList(PreContingencyResult preContingencyResult, Map<String, SubjectLimitViolationEntity> subjectLimitViolationsBySubjectId) {
44-
return preContingencyResult.getLimitViolationsResult().getLimitViolations().stream().map(limitViolation -> toEntity(limitViolation, subjectLimitViolationsBySubjectId.get(limitViolation.getSubjectId()))).collect(Collectors.toList());
45+
public static List<PreContingencyLimitViolationEntity> toEntityList(Network network, PreContingencyResult preContingencyResult, Map<String, SubjectLimitViolationEntity> subjectLimitViolationsBySubjectId) {
46+
return preContingencyResult.getLimitViolationsResult().getLimitViolations().stream().map(limitViolation -> toEntity(network, limitViolation, subjectLimitViolationsBySubjectId.get(limitViolation.getSubjectId()))).collect(Collectors.toList());
4547
}
4648

47-
public static PreContingencyLimitViolationEntity toEntity(LimitViolation limitViolation, SubjectLimitViolationEntity subjectLimitViolation) {
49+
public static PreContingencyLimitViolationEntity toEntity(Network network, LimitViolation limitViolation, SubjectLimitViolationEntity subjectLimitViolation) {
50+
subjectLimitViolation.setLocationId(ComputationResultUtils.getViolationLocationId(limitViolation, network));
4851
return PreContingencyLimitViolationEntity.builder()
4952
.subjectLimitViolation(subjectLimitViolation)
5053
.limit(limitViolation.getLimit())

src/main/java/org/gridsuite/securityanalysis/server/entities/SecurityAnalysisResultEntity.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.gridsuite.securityanalysis.server.entities;
88

9+
import com.powsybl.iidm.network.Network;
910
import com.powsybl.security.SecurityAnalysisResult;
1011
import jakarta.persistence.*;
1112
import lombok.*;
@@ -52,17 +53,17 @@ public SecurityAnalysisResultEntity(UUID id) {
5253
this.id = id;
5354
}
5455

55-
public static SecurityAnalysisResultEntity toEntity(UUID resultUuid, SecurityAnalysisResult securityAnalysisResult, SecurityAnalysisStatus securityAnalysisStatus) {
56+
public static SecurityAnalysisResultEntity toEntity(Network network, UUID resultUuid, SecurityAnalysisResult securityAnalysisResult, SecurityAnalysisStatus securityAnalysisStatus) {
5657
Map<String, SubjectLimitViolationEntity> subjectLimitViolationsBySubjectId = getUniqueSubjectLimitViolationsFromResult(securityAnalysisResult)
5758
.stream().collect(Collectors.toMap(
5859
SubjectLimitViolationEntity::getSubjectId,
5960
subjectLimitViolation -> subjectLimitViolation)
6061
);
6162

6263
List<ContingencyEntity> contingencies = securityAnalysisResult.getPostContingencyResults().stream()
63-
.map(postContingencyResult -> ContingencyEntity.toEntity(postContingencyResult, subjectLimitViolationsBySubjectId)).collect(Collectors.toList());
64+
.map(postContingencyResult -> ContingencyEntity.toEntity(network, postContingencyResult, subjectLimitViolationsBySubjectId)).collect(Collectors.toList());
6465

65-
List<PreContingencyLimitViolationEntity> preContingencyLimitViolations = PreContingencyLimitViolationEntity.toEntityList(securityAnalysisResult.getPreContingencyResult(), subjectLimitViolationsBySubjectId);
66+
List<PreContingencyLimitViolationEntity> preContingencyLimitViolations = PreContingencyLimitViolationEntity.toEntityList(network, securityAnalysisResult.getPreContingencyResult(), subjectLimitViolationsBySubjectId);
6667

6768
List<SubjectLimitViolationEntity> subjectLimitViolations = Stream.concat(
6869
contingencies.stream().flatMap(c -> c.getContingencyLimitViolations().stream()),

src/main/java/org/gridsuite/securityanalysis/server/entities/SubjectLimitViolationEntity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public SubjectLimitViolationEntity(String subjectId, String subjectName) {
3939

4040
private String subjectName;
4141

42+
@Column
43+
@Setter
44+
@Getter
45+
private String locationId;
46+
4247
@ManyToOne(fetch = FetchType.LAZY)
4348
@Setter
4449
@Getter

src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.core.JsonProcessingException;
1010
import com.fasterxml.jackson.core.type.TypeReference;
1111
import com.fasterxml.jackson.databind.ObjectMapper;
12+
import com.powsybl.iidm.network.Network;
1213
import com.powsybl.iidm.network.ThreeSides;
1314
import com.powsybl.security.LimitViolationType;
1415
import com.powsybl.security.SecurityAnalysisResult;
@@ -228,11 +229,11 @@ public void assertResultExists(UUID resultUuid) {
228229
}
229230

230231
@Transactional
231-
public void insert(UUID resultUuid, SecurityAnalysisResult result, SecurityAnalysisStatus status) {
232+
public void insert(Network network, UUID resultUuid, SecurityAnalysisResult result, SecurityAnalysisStatus status) {
232233
Objects.requireNonNull(resultUuid);
233234
Objects.requireNonNull(result);
234235

235-
SecurityAnalysisResultEntity securityAnalysisResult = SecurityAnalysisResultEntity.toEntity(resultUuid, result, status);
236+
SecurityAnalysisResultEntity securityAnalysisResult = SecurityAnalysisResultEntity.toEntity(network, resultUuid, result, status);
236237
securityAnalysisResultRepository.save(securityAnalysisResult);
237238
}
238239

0 commit comments

Comments
 (0)