Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import org.gridsuite.filter.globalfilter.GlobalFilter;
import org.gridsuite.filter.utils.EquipmentType;
import org.gridsuite.study.server.StudyApi;
import org.gridsuite.study.server.StudyConstants.CompositeModificationsActionType;
import org.gridsuite.study.server.StudyConstants.ModificationsActionType;
import org.gridsuite.study.server.dto.*;
import org.gridsuite.study.server.dto.computation.LoadFlowComputationInfos;
import org.gridsuite.study.server.dto.dynamicmargincalculation.DynamicMarginCalculationStatus;
Expand Down Expand Up @@ -897,8 +899,8 @@ public ResponseEntity<String> getShortCircuitAnalysisStatus(@Parameter(descripti
@PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid,
@Parameter(description = "type") @RequestParam(value = "type", required = false, defaultValue = "ALL_BUSES") ShortcircuitAnalysisType type) {
String result = rootNetworkNodeInfoService.getShortCircuitAnalysisStatus(nodeUuid, rootNetworkUuid, type);
return result != null ? ResponseEntity.ok().body(result) :
ShortCircuitAnalysisStatus result = rootNetworkNodeInfoService.getShortCircuitAnalysisStatus(nodeUuid, rootNetworkUuid, type);
return result != null ? ResponseEntity.ok().body(result.name()) :
ResponseEntity.noContent().build();
}

Expand Down Expand Up @@ -990,8 +992,8 @@ public ResponseEntity<String> getVoltageInitResult(@Parameter(description = "stu
public ResponseEntity<String> getVoltageInitStatus(@Parameter(description = "Study UUID") @PathVariable("studyUuid") UUID studyUuid,
@Parameter(description = "rootNetworkUuid") @PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid) {
String result = rootNetworkNodeInfoService.getVoltageInitStatus(nodeUuid, rootNetworkUuid);
return result != null ? ResponseEntity.ok().body(result) :
VoltageInitStatus result = rootNetworkNodeInfoService.getVoltageInitStatus(nodeUuid, rootNetworkUuid);
return result != null ? ResponseEntity.ok().body(result.name()) :
ResponseEntity.noContent().build();
}

Expand Down Expand Up @@ -1830,8 +1832,8 @@ public ResponseEntity<String> getSensitivityAnalysisFilterOptions(
public ResponseEntity<String> getSensitivityAnalysisStatus(@Parameter(description = "Study UUID") @PathVariable("studyUuid") UUID studyUuid,
@Parameter(description = "rootNetworkUuid") @PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid) {
String result = rootNetworkNodeInfoService.getSensitivityAnalysisStatus(nodeUuid, rootNetworkUuid);
return result != null ? ResponseEntity.ok().body(result) :
SensitivityAnalysisStatus result = rootNetworkNodeInfoService.getSensitivityAnalysisStatus(nodeUuid, rootNetworkUuid);
return result != null ? ResponseEntity.ok().body(result.name()) :
ResponseEntity.noContent().build();
}

Expand Down Expand Up @@ -2409,8 +2411,8 @@ public ResponseEntity<String> getStateEstimationResult(@Parameter(description =
public ResponseEntity<String> getStateEstimationStatus(@Parameter(description = "Study UUID") @PathVariable("studyUuid") UUID studyUuid,
@PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid) {
String status = rootNetworkNodeInfoService.getStateEstimationStatus(nodeUuid, rootNetworkUuid);
return status != null ? ResponseEntity.ok().body(status) : ResponseEntity.noContent().build();
StateEstimationStatus status = rootNetworkNodeInfoService.getStateEstimationStatus(nodeUuid, rootNetworkUuid);
return status != null ? ResponseEntity.ok().body(status.name()) : ResponseEntity.noContent().build();
}

@GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/pcc-min/status")
Expand All @@ -2421,8 +2423,8 @@ public ResponseEntity<String> getStateEstimationStatus(@Parameter(description =
public ResponseEntity<String> getPccMinStatus(@Parameter(description = "Study UUID") @PathVariable("studyUuid") UUID studyUuid,
@PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid) {
String status = rootNetworkNodeInfoService.getPccMinStatus(nodeUuid, rootNetworkUuid);
return status != null ? ResponseEntity.ok().body(status) : ResponseEntity.noContent().build();
PccMinStatus status = rootNetworkNodeInfoService.getPccMinStatus(nodeUuid, rootNetworkUuid);
return status != null ? ResponseEntity.ok().body(status.name()) : ResponseEntity.noContent().build();
}

@PutMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/state-estimation/stop")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
/**
* @author Etienne Homer <etienne.homer at rte-france.com>
*/
public enum ShortCircuitStatus {
public enum ShortCircuitAnalysisStatus {
NOT_DONE,
RUNNING,
COMPLETED
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public interface RootNetworkNodeInfoRepository extends JpaRepository<RootNetwork
@EntityGraph(attributePaths = {"rootNetwork"}, type = EntityGraph.EntityGraphType.LOAD)
List<RootNetworkNodeInfoEntity> findAllWithRootNetworkByNodeInfoId(UUID nodeInfoId);

List<RootNetworkNodeInfoEntity> findAllByNodeInfoIdInAndRootNetworkId(List<UUID> nodeInfoIds, UUID rootNetworkUuid);

Optional<RootNetworkNodeInfoEntity> findByNodeInfoIdAndRootNetworkId(UUID nodeInfoId, UUID rootNetworkUuid);

@EntityGraph(attributePaths = {"modificationsUuidsToExclude"}, type = EntityGraph.EntityGraphType.LOAD)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,19 @@
import org.springframework.http.*;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import java.io.UncheckedIOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;

import static org.gridsuite.study.server.StudyConstants.*;
Expand Down Expand Up @@ -137,11 +141,29 @@ public LoadFlowStatus getLoadFlowStatus(UUID resultUuid) {
if (resultUuid == null) {
return null;
}
return getLoadFlowStatuses(List.of(resultUuid)).get(resultUuid);
}

UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + LOADFLOW_API_VERSION + "/results/{resultUuid}/status");
String path = uriComponentsBuilder.buildAndExpand(resultUuid).toUriString();
public Map<UUID, LoadFlowStatus> getLoadFlowStatuses(List<UUID> resultUuids) {
if (CollectionUtils.isEmpty(resultUuids)) {
return Map.of();
}

UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + LOADFLOW_API_VERSION + "/results/statuses");
String path = uriComponentsBuilder.toUriString();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

return restTemplate.getForObject(loadFlowServerBaseUri + path, LoadFlowStatus.class);
HttpEntity<List<UUID>> httpEntity = new HttpEntity<>(resultUuids, headers);

Map<UUID, LoadFlowStatus> statuses = restTemplate.exchange(
loadFlowServerBaseUri + path,
HttpMethod.POST,
httpEntity,
new ParameterizedTypeReference<Map<UUID, LoadFlowStatus>>() {
}
).getBody();
return statuses != null ? statuses : Map.of();
}

public void stopLoadFlow(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, UUID resultUuid, String userId) {
Expand Down Expand Up @@ -192,9 +214,10 @@ public void setLoadFlowServerBaseUri(String loadFlowServerBaseUri) {
this.loadFlowServerBaseUri = loadFlowServerBaseUri;
}

public void assertLoadFlowNotRunning(UUID resultUuid) {
LoadFlowStatus loadFlowStatus = getLoadFlowStatus(resultUuid);
if (LoadFlowStatus.RUNNING.equals(loadFlowStatus)) {
public void assertNoLoadFlowRunning(List<UUID> resultUuids) {
Map<UUID, LoadFlowStatus> loadFlowStatuses = getLoadFlowStatuses(resultUuids);
Set<LoadFlowStatus> values = new HashSet<>(loadFlowStatuses.values());
if (values.contains(LoadFlowStatus.RUNNING)) {
throw new StudyException(COMPUTATION_RUNNING);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,24 @@
import org.gridsuite.study.server.utils.ResultParameters;
import org.gridsuite.study.server.utils.StudyUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.data.domain.Sort;
import org.springframework.http.*;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import java.io.UncheckedIOException;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;

import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -119,14 +124,33 @@ public void stopPccMin(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, UUID
restTemplate.put(pccMinServerBaseUri + path, Void.class);
}

public String getPccMinStatus(UUID resultUuid) {
public PccMinStatus getPccMinStatus(UUID resultUuid) {
if (resultUuid == null) {
return null;
}
return getPccMinStatuses(List.of(resultUuid)).get(resultUuid);
}

public Map<UUID, PccMinStatus> getPccMinStatuses(List<UUID> resultUuids) {
if (CollectionUtils.isEmpty(resultUuids)) {
return Map.of();
}
String path = UriComponentsBuilder
.fromPath(PCC_MIN_URI + DELIMITER + "results/{resultUuid}/status")
.buildAndExpand(resultUuid).toUriString();
return restTemplate.getForObject(pccMinServerBaseUri + path, String.class);
.fromPath(DELIMITER + PCC_MIN_API_VERSION + "/results/statuses")
.toUriString();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<List<UUID>> httpEntity = new HttpEntity<>(resultUuids, headers);
Map<UUID, PccMinStatus> statuses = restTemplate.exchange(
pccMinServerBaseUri + path,
HttpMethod.POST,
httpEntity,
new ParameterizedTypeReference<Map<UUID, PccMinStatus>>() {
}
).getBody();
return statuses != null ? statuses : Map.of();
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.

public void deletePccMinResults(List<UUID> resultsUuids) {
Expand All @@ -143,9 +167,10 @@ public Integer getPccMinResultsCount() {
return restTemplate.getForObject(pccMinServerBaseUri + path, Integer.class);
}

public void assertPccMinNotRunning(UUID resultUuid) {
String status = getPccMinStatus(resultUuid);
if (PccMinStatus.RUNNING.name().equals(status)) {
public void assertNoPccMinRunning(List<UUID> resultUuids) {
Map<UUID, PccMinStatus> pccMinStatuses = getPccMinStatuses(resultUuids);
Set<PccMinStatus> values = new HashSet<>(pccMinStatuses.values());
if (values.contains(PccMinStatus.RUNNING)) {
throw new StudyException(COMPUTATION_RUNNING);
}
}
Expand Down
Loading
Loading