Skip to content

Commit 708c689

Browse files
authored
implement filter global (#188)
Signed-off-by: Rehili Ghazwa <[email protected]>
1 parent ff0a05d commit 708c689

File tree

7 files changed

+197
-45
lines changed

7 files changed

+197
-45
lines changed

src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisController.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
import static org.gridsuite.computation.service.NotificationService.HEADER_USER_ID;
3838
import static org.gridsuite.computation.utils.FilterUtils.fromStringFiltersToDTO;
39+
import static org.gridsuite.computation.utils.FilterUtils.fromStringGlobalFiltersToDTO;
3940
import static org.springframework.http.MediaType.*;
4041

4142
/**
@@ -122,12 +123,19 @@ public ResponseEntity<UUID> runAndSave(@Parameter(description = "Network UUID")
122123
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result"),
123124
@ApiResponse(responseCode = "404", description = "Security analysis result has not been found")})
124125
public ResponseEntity<List<PreContingencyLimitViolationResultDTO>> getNResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid,
126+
@Parameter(description = "network Uuid") @RequestParam(name = "networkUuid", required = false) UUID networkUuid,
127+
@Parameter(description = "variant Id") @RequestParam(name = "variantId", required = false) String variantId,
125128
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
129+
@Parameter(description = "Global Filters") @RequestParam(name = "globalFilters", required = false) String globalFilters,
126130
@Parameter(description = "Pageable parameters for pagination and sorting") Sort sort) {
127131
String decodedStringFilters = stringFilters != null ? URLDecoder.decode(stringFilters, StandardCharsets.UTF_8) : null;
132+
String decodedStringGlobalFilters = globalFilters != null ? URLDecoder.decode(globalFilters, StandardCharsets.UTF_8) : null;
128133
List<PreContingencyLimitViolationResultDTO> result = securityAnalysisResultService.findNResult(
129134
resultUuid,
135+
networkUuid,
136+
variantId,
130137
fromStringFiltersToDTO(decodedStringFilters, securityAnalysisResultService.getObjectMapper()),
138+
fromStringGlobalFiltersToDTO(decodedStringGlobalFilters, securityAnalysisResultService.getObjectMapper()),
131139
sort);
132140

133141
return result != null
@@ -151,10 +159,14 @@ public ResponseEntity<byte[]> getNResultZippedCsv(@Parameter(description = "Resu
151159
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result"),
152160
@ApiResponse(responseCode = "404", description = "Security analysis result has not been found")})
153161
public ResponseEntity<Page<ContingencyResultDTO>> getNmKContingenciesResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid,
154-
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
155-
@Parameter(description = "Pagination parameters") Pageable pageable) {
162+
@Parameter(description = "network Uuid") @RequestParam(name = "networkUuid", required = false) UUID networkUuid,
163+
@Parameter(description = "variant Id") @RequestParam(name = "variantId", required = false) String variantId,
164+
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
165+
@Parameter(description = "Global Filters") @RequestParam(name = "globalFilters", required = false) String globalFilters,
166+
@Parameter(description = "Pagination parameters") Pageable pageable) {
156167
String decodedStringFilters = stringFilters != null ? URLDecoder.decode(stringFilters, StandardCharsets.UTF_8) : null;
157-
Page<ContingencyResultDTO> result = securityAnalysisResultService.findNmKContingenciesPaged(resultUuid, decodedStringFilters, pageable);
168+
String decodedStringGlobalFilters = globalFilters != null ? URLDecoder.decode(globalFilters, StandardCharsets.UTF_8) : null;
169+
Page<ContingencyResultDTO> result = securityAnalysisResultService.findNmKContingenciesPaged(resultUuid, networkUuid, variantId, decodedStringFilters, decodedStringGlobalFilters, pageable);
158170

159171
return result != null
160172
? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(result)
@@ -177,10 +189,14 @@ public ResponseEntity<byte[]> getNmKContingenciesResultZippedCsv(@Parameter(desc
177189
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result"),
178190
@ApiResponse(responseCode = "404", description = "Security analysis result has not been found")})
179191
public ResponseEntity<Page<SubjectLimitViolationResultDTO>> getNmKConstraintsResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid,
192+
@Parameter(description = "network Uuid") @RequestParam(name = "networkUuid", required = false) UUID networkUuid,
193+
@Parameter(description = "variant Id") @RequestParam(name = "variantId", required = false) String variantId,
180194
@Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters,
195+
@Parameter(description = "Global Filters") @RequestParam(name = "globalFilters", required = false) String globalFilters,
181196
@Parameter(description = "Pagination parameters") Pageable pageable) {
182197
String decodedStringFilters = stringFilters != null ? URLDecoder.decode(stringFilters, StandardCharsets.UTF_8) : null;
183-
Page<SubjectLimitViolationResultDTO> result = securityAnalysisResultService.findNmKConstraintsResultPaged(resultUuid, decodedStringFilters, pageable);
198+
String decodedStringGlobalFilters = globalFilters != null ? URLDecoder.decode(globalFilters, StandardCharsets.UTF_8) : null;
199+
Page<SubjectLimitViolationResultDTO> result = securityAnalysisResultService.findNmKConstraintsResultPaged(resultUuid, networkUuid, variantId, decodedStringFilters, decodedStringGlobalFilters, pageable);
184200
return result != null
185201
? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(result)
186202
: ResponseEntity.notFound().build();
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Copyright (c) 2025, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
package org.gridsuite.securityanalysis.server.service;
8+
9+
import com.powsybl.network.store.client.NetworkStoreService;
10+
import lombok.NonNull;
11+
import org.gridsuite.computation.dto.GlobalFilter;
12+
import org.gridsuite.computation.dto.ResourceFilterDTO;
13+
import org.gridsuite.computation.service.AbstractFilterService;
14+
import org.gridsuite.filter.utils.EquipmentType;
15+
import org.gridsuite.securityanalysis.server.entities.ContingencyEntity;
16+
import org.gridsuite.securityanalysis.server.entities.SubjectLimitViolationEntity;
17+
import org.springframework.beans.factory.annotation.Value;
18+
import org.springframework.stereotype.Service;
19+
20+
import java.util.List;
21+
import java.util.Optional;
22+
import java.util.UUID;
23+
24+
/**
25+
* @author Rehili Ghazwa <ghazwa.rehili at rte-france.com>
26+
*/
27+
@Service
28+
public class FilterService extends AbstractFilterService {
29+
30+
public FilterService(
31+
NetworkStoreService networkStoreService,
32+
@Value("${gridsuite.services.filter-server.base-uri:http://filter-server/}") String filterServerBaseUri) {
33+
super(networkStoreService, filterServerBaseUri);
34+
}
35+
36+
public Optional<ResourceFilterDTO> getResourceFilterN(@NonNull UUID networkUuid, @NonNull String variantId, @NonNull GlobalFilter globalFilter) {
37+
return super.getResourceFilter(networkUuid, variantId, globalFilter, List.of(EquipmentType.VOLTAGE_LEVEL), "subjectLimitViolation.subjectId");
38+
}
39+
40+
public Optional<ResourceFilterDTO> getResourceFilterContingencies(@NonNull UUID networkUuid, @NonNull String variantId, @NonNull GlobalFilter globalFilter) {
41+
return super.getResourceFilter(networkUuid, variantId, globalFilter, List.of(EquipmentType.LINE, EquipmentType.TWO_WINDINGS_TRANSFORMER, EquipmentType.VOLTAGE_LEVEL), ContingencyEntity.Fields.contingencyId);
42+
}
43+
44+
public Optional<ResourceFilterDTO> getResourceFilterSubjectLimitViolations(@NonNull UUID networkUuid, @NonNull String variantId, @NonNull GlobalFilter globalFilter) {
45+
return super.getResourceFilter(networkUuid, variantId, globalFilter, List.of(EquipmentType.LINE, EquipmentType.TWO_WINDINGS_TRANSFORMER, EquipmentType.VOLTAGE_LEVEL), SubjectLimitViolationEntity.Fields.subjectId);
46+
}
47+
}

0 commit comments

Comments
 (0)