Skip to content

Commit 72001ec

Browse files
use specification system from ws-commons (#137)
Signed-off-by: Mathieu DEHARBE <[email protected]>
1 parent cd1f79c commit 72001ec

File tree

10 files changed

+108
-415
lines changed

10 files changed

+108
-415
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
<db-util.version>1.0.5</db-util.version>
4848
<sonar.organization>gridsuite</sonar.organization>
4949
<sonar.projectKey>org.gridsuite:shortcircuit-analysis-server</sonar.projectKey>
50+
<powsybl-ws-commons.version>1.25.0</powsybl-ws-commons.version><!-- should be removed once gridsuite-dependencies is upgraded-->
5051
</properties>
5152

5253
<build>
@@ -128,6 +129,7 @@
128129
<dependency>
129130
<groupId>com.powsybl</groupId>
130131
<artifactId>powsybl-ws-commons</artifactId>
132+
<version>${powsybl-ws-commons.version}</version>
131133
</dependency>
132134
<dependency>
133135
<groupId>org.springframework.cloud</groupId>

src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java

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

9-
import com.fasterxml.jackson.core.JsonProcessingException;
109
import com.powsybl.iidm.network.ThreeSides;
1110
import com.powsybl.security.LimitViolationType;
1211
import io.swagger.v3.oas.annotations.Operation;
@@ -94,9 +93,8 @@ public ResponseEntity<Page<FaultResult>> getPagedFaultResults(@Parameter(descrip
9493
"WITH_LIMIT_VIOLATIONS (like FULL but only those with limit violations) or " +
9594
"NONE (no fault)") @RequestParam(name = "mode", required = false, defaultValue = "FULL") FaultResultsMode mode,
9695
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
97-
Pageable pageable) throws JsonProcessingException {
98-
List<ResourceFilter> resourceFilters = ResourceFilter.fromStringToList(stringFilters);
99-
Page<FaultResult> faultResultsPage = shortCircuitService.getFaultResultsPage(resultUuid, mode, resourceFilters, pageable);
96+
Pageable pageable) {
97+
Page<FaultResult> faultResultsPage = shortCircuitService.getFaultResultsPage(resultUuid, mode, stringFilters, pageable);
10098
return faultResultsPage != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(faultResultsPage)
10199
: ResponseEntity.notFound().build();
102100
}
@@ -107,9 +105,8 @@ public ResponseEntity<Page<FaultResult>> getPagedFaultResults(@Parameter(descrip
107105
@ApiResponse(responseCode = "404", description = "Short circuit analysis result has not been found")})
108106
public ResponseEntity<Page<FeederResult>> getPagedFeederResults(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid,
109107
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
110-
Pageable pageable) throws JsonProcessingException {
111-
List<ResourceFilter> resourceFilters = ResourceFilter.fromStringToList(stringFilters);
112-
Page<FeederResult> feederResultsPage = shortCircuitService.getFeederResultsPage(resultUuid, resourceFilters, pageable);
108+
Pageable pageable) {
109+
Page<FeederResult> feederResultsPage = shortCircuitService.getFeederResultsPage(resultUuid, stringFilters, pageable);
113110
return feederResultsPage != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(feederResultsPage)
114111
: ResponseEntity.notFound().build();
115112
}

src/main/java/org/gridsuite/shortcircuit/server/dto/ResourceFilter.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/main/java/org/gridsuite/shortcircuit/server/repositories/specifications/FaultResultSpecificationBuilder.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,45 @@
77

88
package org.gridsuite.shortcircuit.server.repositories.specifications;
99

10+
import com.powsybl.ws.commons.computation.dto.ResourceFilterDTO;
11+
import com.powsybl.ws.commons.computation.specification.AbstractCommonSpecificationBuilder;
12+
import com.powsybl.ws.commons.computation.utils.SpecificationUtils;
1013
import jakarta.persistence.criteria.Path;
1114
import jakarta.persistence.criteria.Root;
12-
import org.gridsuite.shortcircuit.server.dto.ResourceFilter;
1315
import org.gridsuite.shortcircuit.server.entities.FaultResultEntity;
1416
import org.gridsuite.shortcircuit.server.entities.FeederResultEntity;
1517
import org.gridsuite.shortcircuit.server.entities.ShortCircuitAnalysisResultEntity;
1618
import org.springframework.data.jpa.domain.Specification;
19+
import org.springframework.stereotype.Service;
1720

1821
import java.util.List;
1922
import java.util.UUID;
2023

2124
/**
2225
* @author Florent MILLOT <[email protected]>
2326
*/
24-
public final class FaultResultSpecificationBuilder {
27+
@Service
28+
public final class FaultResultSpecificationBuilder extends AbstractCommonSpecificationBuilder<FaultResultEntity> {
2529

26-
// Utility class, so no constructor
27-
private FaultResultSpecificationBuilder() { }
28-
29-
public static boolean isNotParentFilter(ResourceFilter filter) {
30+
@Override
31+
public boolean isNotParentFilter(ResourceFilterDTO filter) {
3032
return filter.column().contains(FeederResultEntity.Fields.connectableId);
3133
}
3234

33-
public static Specification<FaultResultEntity> uuidIn(List<UUID> uuids) {
34-
return (root, cq, cb) -> root.get(getIdFieldName()).in(uuids);
35-
}
36-
37-
public static Specification<FaultResultEntity> resultUuidEquals(UUID value) {
38-
return (root, cq, cb) -> cb.equal(getResultIdPath(root), value);
39-
}
40-
41-
public static String getIdFieldName() {
35+
public String getIdFieldName() {
4236
return FaultResultEntity.Fields.faultResultUuid;
4337
}
4438

45-
public static Path<UUID> getResultIdPath(Root<FaultResultEntity> root) {
39+
public Path<UUID> getResultIdPath(Root<FaultResultEntity> root) {
4640
return root.get(FaultResultEntity.Fields.result).get(ShortCircuitAnalysisResultEntity.Fields.resultUuid);
4741
}
4842

49-
public static Specification<FaultResultEntity> appendWithLimitViolationsToSpecification(Specification<FaultResultEntity> specification) {
43+
public Specification<FaultResultEntity> appendWithLimitViolationsToSpecification(Specification<FaultResultEntity> specification) {
5044
return specification.and(SpecificationUtils.isNotEmpty(FaultResultEntity.Fields.limitViolations));
5145
}
5246

53-
public static Specification<FaultResultEntity> buildSpecification(UUID resultUuid, List<ResourceFilter> resourceFilters) {
47+
@Override
48+
public Specification<FaultResultEntity> buildSpecification(UUID resultUuid, List<ResourceFilterDTO> resourceFilters) {
5449
// since sql joins generates duplicate results, we need to use distinct here
5550
Specification<FaultResultEntity> specification = SpecificationUtils.distinct();
5651
// filter by resultUuid
@@ -59,8 +54,8 @@ public static Specification<FaultResultEntity> buildSpecification(UUID resultUui
5954
return SpecificationUtils.appendFiltersToSpecification(specification, resourceFilters);
6055
}
6156

62-
public static Specification<FaultResultEntity> buildFeedersSpecification(List<UUID> uuids, List<ResourceFilter> resourceFilters) {
63-
List<ResourceFilter> childrenResourceFilter = resourceFilters.stream().filter(FaultResultSpecificationBuilder::isNotParentFilter)
57+
public Specification<FaultResultEntity> buildFeedersSpecification(List<UUID> uuids, List<ResourceFilterDTO> resourceFilters) {
58+
List<ResourceFilterDTO> childrenResourceFilter = resourceFilters.stream().filter(this::isNotParentFilter)
6459
.toList();
6560
Specification<FaultResultEntity> specification = Specification.where(uuidIn(uuids));
6661

src/main/java/org/gridsuite/shortcircuit/server/repositories/specifications/FeederResultSpecificationBuilder.java

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

88
package org.gridsuite.shortcircuit.server.repositories.specifications;
99

10-
import org.gridsuite.shortcircuit.server.dto.ResourceFilter;
10+
import com.powsybl.ws.commons.computation.dto.ResourceFilterDTO;
11+
import com.powsybl.ws.commons.computation.utils.SpecificationUtils;
1112
import org.gridsuite.shortcircuit.server.entities.FeederResultEntity;
1213
import org.springframework.data.jpa.domain.Specification;
1314

@@ -27,7 +28,7 @@ public static Specification<FeederResultEntity> resultUuidEquals(UUID value) {
2728
return (feederResult, cq, cb) -> cb.equal(feederResult.get("faultResult").get("result").get("resultUuid"), value);
2829
}
2930

30-
public static Specification<FeederResultEntity> buildSpecification(UUID resultUuid, List<ResourceFilter> resourceFilters) {
31+
public static Specification<FeederResultEntity> buildSpecification(UUID resultUuid, List<ResourceFilterDTO> resourceFilters) {
3132
Specification<FeederResultEntity> specification = Specification.where(resultUuidEquals(resultUuid));
3233
return SpecificationUtils.appendFiltersToSpecification(specification, resourceFilters);
3334
}

0 commit comments

Comments
 (0)