From 3a2a69dcb8f071b19c9cf681d0122de473ff4518 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Wed, 5 Nov 2025 15:25:08 +0100 Subject: [PATCH 1/8] refactor: separate StudyException.Type in a dedicated enum implementing BusinessErrorCode Signed-off-by: Joris Mancini --- .../RestResponseEntityExceptionHandler.java | 7 +- .../study/server/StudyBusinessErrorCode.java | 174 ++++++++++++++++++ .../study/server/StudyException.java | 159 +--------------- .../server/controller/StudyController.java | 7 +- .../study/server/service/CaseService.java | 2 +- .../service/DiagramGridLayoutService.java | 7 +- .../study/server/service/FilterService.java | 4 +- .../study/server/service/LoadFlowService.java | 2 +- .../service/NetworkConversionService.java | 2 +- .../server/service/NetworkMapService.java | 4 +- .../service/NetworkModificationService.java | 2 +- .../NetworkModificationTreeService.java | 2 +- .../study/server/service/NetworkService.java | 2 +- .../study/server/service/PccMinService.java | 4 +- .../service/RootNetworkNodeInfoService.java | 2 +- .../server/service/RootNetworkService.java | 2 +- .../service/SecurityAnalysisService.java | 2 +- .../service/SensitivityAnalysisService.java | 2 +- .../service/SingleLineDiagramService.java | 2 +- .../service/StateEstimationService.java | 14 +- .../server/service/StudyConfigService.java | 2 +- .../study/server/service/StudyService.java | 4 +- .../server/service/SupervisionService.java | 2 +- .../server/service/UserAdminService.java | 2 +- .../server/service/VoltageInitService.java | 2 +- .../impl/DynamicMappingClientImpl.java | 2 +- .../DynamicSecurityAnalysisClient.java | 2 +- .../impl/DynamicSimulationClientImpl.java | 4 +- .../server/service/client/util/UrlUtil.java | 2 +- .../common/AbstractComputationService.java | 5 +- .../DynamicSecurityAnalysisService.java | 2 +- .../impl/DynamicSimulationServiceImpl.java | 9 +- .../shortcircuit/ShortCircuitService.java | 2 +- .../study/server/utils/StudyUtils.java | 3 +- .../study/server/DiagramGridLayoutTest.java | 7 +- .../gridsuite/study/server/LoadFlowTest.java | 2 +- .../study/server/NetworkModificationTest.java | 39 ++-- .../server/NetworkModificationTreeTest.java | 11 +- .../server/NetworkModificationUnitTest.java | 3 +- .../study/server/SensitivityAnalysisTest.java | 3 +- .../org/gridsuite/study/server/StudyTest.java | 2 +- .../ModificationToExcludeTest.java | 69 +++---- .../server/rootnetworks/RootNetworkTest.java | 10 +- .../server/service/ReportServiceTest.java | 5 +- .../service/SingleLineDiagramServiceTest.java | 3 +- .../DynamicSecurityAnalysisClientTest.java | 2 +- .../DynamicSimulationClientTest.java | 2 +- .../DynamicSecurityAnalysisServiceTest.java | 2 +- .../study/server/utils/TestUtils.java | 3 +- 49 files changed, 324 insertions(+), 284 deletions(-) create mode 100644 src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java diff --git a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java index e65372ff70..10f9270ce6 100644 --- a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java +++ b/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java @@ -13,7 +13,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.server.ServerWebInputException; -import static org.gridsuite.study.server.StudyException.Type.NOT_ALLOWED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.MAX_NODE_BUILDS_EXCEEDED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.NOT_ALLOWED; /** * @author Abdelsalem Hedhili @@ -28,7 +29,7 @@ protected ResponseEntity handleStudyException(StudyException exception) if (LOGGER.isErrorEnabled()) { LOGGER.error(MESSAGE, exception); } - StudyException.Type type = exception.getType(); + StudyBusinessErrorCode type = exception.getType(); return switch (type) { case ELEMENT_NOT_FOUND, STUDY_NOT_FOUND, @@ -139,7 +140,7 @@ protected ResponseEntity handleStudyException(StudyException exception) MISSING_PARAMETER -> ResponseEntity.status(HttpStatus.BAD_REQUEST).body(exception.getType()); case NOT_IMPLEMENTED -> ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body(exception.getMessage()); - case MAX_NODE_BUILDS_EXCEEDED -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(StudyException.Type.MAX_NODE_BUILDS_EXCEEDED + " " + exception.getMessage()); + case MAX_NODE_BUILDS_EXCEEDED -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(MAX_NODE_BUILDS_EXCEEDED + " " + exception.getMessage()); case DIAGRAM_GRID_LAYOUT_NOT_FOUND -> ResponseEntity.noContent().build(); default -> ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); }; diff --git a/src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java b/src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java new file mode 100644 index 0000000000..cba9ccf8cc --- /dev/null +++ b/src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java @@ -0,0 +1,174 @@ +/** + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.study.server; + +import com.powsybl.ws.commons.error.BusinessErrorCode; + +/** + * @author Joris Mancini + */ +public enum StudyBusinessErrorCode implements BusinessErrorCode { + STUDY_ALREADY_EXISTS("study.alreadyExists"), + ELEMENT_NOT_FOUND("study.elementNotFound"), + STUDY_NOT_FOUND("study.studyNotFound"), + DIAGRAM_GRID_LAYOUT_NOT_FOUND("study.diagramGridLayoutNotFound"), + CASE_NOT_FOUND("study.caseNotFound"), + LOADFLOW_NOT_RUNNABLE("study.loadflowNotRunning"), + LOADFLOW_RUNNING("study.loadflowRunning"), + LOADFLOW_ERROR("study.loadflowError"), + SECURITY_ANALYSIS_RUNNING("study.securityAnalysisRunning"), + SECURITY_ANALYSIS_NOT_FOUND("study.securityAnalysisNotFound"), + SENSITIVITY_ANALYSIS_RUNNING("study.sensitivityAnalysisRunning"), + SENSITIVITY_ANALYSIS_NOT_FOUND("study.sensitivityAnalysisNotFound"), + SENSITIVITY_ANALYSIS_ERROR("study.sensitivityAnalysisError"), + SHORT_CIRCUIT_ANALYSIS_NOT_FOUND("study.shortCircuitAnalysisNotFound"), + SHORT_CIRCUIT_ANALYSIS_ERROR("study.shortCircuitAnalysisError"), + LOADFLOW_NOT_FOUND("study.loadflowNotFound"), + SHORT_CIRCUIT_ANALYSIS_RUNNING("study.shortCircuitAnalysisRunning"), + VOLTAGE_INIT_NOT_FOUND("study.voltageInitNotFound"), + VOLTAGE_INIT_RUNNING("study.voltageInitRunning"), + DYNAMIC_SIMULATION_RUNNING("study.dynamicSimulationRunning"), + DYNAMIC_SIMULATION_NOT_FOUND("study.dynamicSimulationNotFound"), + DYNAMIC_MAPPING_NOT_FOUND("study.dynamicMappingNotFound"), + DYNAMIC_SECURITY_ANALYSIS_RUNNING("study.dynamicSecurityAnalysisRunning"), + DYNAMIC_SECURITY_ANALYSIS_NOT_FOUND("study.dynamicSecurityAnalysisNotFound"), + DYNAMIC_SECURITY_ANALYSIS_ERROR("study.dynamicSecurityAnalysisError"), + NOT_ALLOWED("study.notAllowed"), + STUDY_CREATION_FAILED("study.studyCreationFailed"), + CANT_DELETE_ROOT_NODE("study.cantDeleteRootNode"), + DELETE_EQUIPMENT_FAILED("study.deleteEquipmentFailed"), + DELETE_NODE_FAILED("study.deleteNodeFailed"), + DELETE_STUDY_FAILED("study.deleteStudyFailed"), + DELETE_ROOT_NETWORK_FAILED("study.deleteRootNetworkFailed"), + CREATE_NETWORK_MODIFICATION_FAILED("study.createNetworkModificationFailed"), + UPDATE_NETWORK_MODIFICATION_FAILED("study.updateNetworkModificationFailed"), + DELETE_NETWORK_MODIFICATION_FAILED("study.deleteNetworkModificationFailed"), + MOVE_NETWORK_MODIFICATION_FORBIDDEN("study.moveNetworkModificationForbidden"), + UNKNOWN_EQUIPMENT_TYPE("study.unknownEquipmentType"), + BAD_NODE_TYPE("study.badNodeType"), + NETWORK_NOT_FOUND("study.networkNotFound"), + EQUIPMENT_NOT_FOUND("study.equipmentNotFound"), + NETWORK_INDEXATION_FAILED("study.networkIndexationFailed"), + NODE_NOT_FOUND("study.nodeNotFound"), + NODE_NOT_BUILT("study.nodeNotBuilt"), + SVG_NOT_FOUND("study.svgNotFound"), + NODE_NAME_ALREADY_EXIST("study.nodeNameAlreadyExist"), + NODE_BUILD_ERROR("study.nodeBuildError"), + INVALIDATE_BUILD_FAILED("study.invalidateBuildFailed"), + UNKNOWN_NOTIFICATION_TYPE("study.unknownNotificationType"), + BAD_MODIFICATION_TYPE("study.badModificationType"), + GET_MODIFICATIONS_FAILED("study.getModificationsFailed"), + GET_MODIFICATIONS_COUNT_FAILED("study.getModificationsCountFailed"), + GET_NETWORK_ELEMENT_FAILED("study.getNetworkElementFailed"), + GET_NETWORK_COUNTRY_FAILED("study.getNetworkCountryFailed"), + GET_NETWORK_NOMINAL_VOLTAGES_FAILED("study.getNetworkNominalVoltagesFailed"), + BAD_JSON_FORMAT("study.badJsonFormat"), + UNKNOWN_ACTION_TYPE("study.unknownActionType"), + BAD_PARAMETER("study.badParameter"), + MISSING_PARAMETER("study.missingParameter"), + LOAD_SCALING_FAILED("study.loadScalingFailed"), + DELETE_VOLTAGE_LEVEL_ON_LINE("study.deleteVoltageLevelOnLine"), + DELETE_ATTACHING_LINE("study.deleteAttachingLine"), + GENERATOR_SCALING_FAILED("study.generatorScalingFailed"), + URI_SYNTAX("study.uriSyntax"), + TIME_SERIES_BAD_TYPE("study.timeSeriesBadType"), + TIMELINE_BAD_TYPE("study.timelineBadType"), + FILTERS_NOT_FOUND("study.filtersNotFound"), + NO_VOLTAGE_INIT_RESULTS_FOR_NODE("study.noVoltageInitResultsForNode"), + NO_VOLTAGE_INIT_MODIFICATIONS_GROUP_FOR_NODE("study.noVoltageInitModificationsGroupForNode"), + VOLTAGE_INIT_PARAMETERS_NOT_FOUND("study.voltageInitParametersNotFound"), + CREATE_VOLTAGE_INIT_PARAMETERS_FAILED("study.createVoltageInitParametersFailed"), + UPDATE_VOLTAGE_INIT_PARAMETERS_FAILED("study.updateVoltageInitParametersFailed"), + CREATE_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.createSecurityAnalysisParametersFailed"), + UPDATE_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.updateSecurityAnalysisParametersFailed"), + GET_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.getSecurityAnalysisParametersFailed"), + SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND("study.securityAnalysisParametersNotFound"), + GET_SECURITY_ANALYSIS_DEFAULT_PROVIDER_FAILED("study.getSecurityAnalysisDefaultProviderFailed"), + UPDATE_SECURITY_ANALYSIS_PROVIDER_FAILED("study.updateSecurityAnalysisProviderFailed"), + CREATE_LOADFLOW_PARAMETERS_FAILED("study.createLoadflowParametersFailed"), + UPDATE_LOADFLOW_PARAMETERS_FAILED("study.updateLoadflowParametersFailed"), + GET_LOADFLOW_PARAMETERS_FAILED("study.getLoadflowParametersFailed"), + DELETE_LOADFLOW_PARAMETERS_FAILED("study.deleteLoadflowParametersFailed"), + LOADFLOW_PARAMETERS_NOT_FOUND("study.loadflowParametersNotFound"), + GET_LOADFLOW_DEFAULT_PROVIDER_FAILED("study.getLoadflowDefaultProviderFailed"), + UPDATE_LOADFLOW_PROVIDER_FAILED("study.updateLoadflowProviderFailed"), + UPDATE_SHORTCIRCUIT_PARAMETERS_FAILED("study.updateShortcircuitParametersFailed"), + CREATE_SHORTCIRCUIT_PARAMETERS_FAILED("study.createShortcircuitParametersFailed"), + GET_SHORTCIRCUIT_PARAMETERS_FAILED("study.getShortcircuitParametersFailed"), + SENSITIVITY_ANALYSIS_PARAMETERS_NOT_FOUND("study.sensitivityAnalysisParametersNotFound"), + GET_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED("study.getSensitivityAnalysisParametersFailed"), + CREATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED("study.createSensitivityAnalysisParametersFailed"), + UPDATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED("study.updateSensitivityAnalysisParametersFailed"), + DELETE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED("study.deleteSensitivityAnalysisParametersFailed"), + GET_SENSITIVITY_ANALYSIS_DEFAULT_PROVIDER_FAILED("study.getSensitivityAnalysisDefaultProviderFailed"), + UPDATE_SENSITIVITY_ANALYSIS_PROVIDER_FAILED("study.updateSensitivityAnalysisProviderFailed"), + GET_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.getDynamicSecurityAnalysisParametersFailed"), + CREATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.createDynamicSecurityAnalysisParametersFailed"), + CREATE_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PARAMETERS_FAILED("study.createDynamicSecurityAnalysisDefaultParametersFailed"), + RUN_DYNAMIC_SECURITY_ANALYSIS_FAILED("study.runDynamicSecurityAnalysisFailed"), + RUN_DYNAMIC_SIMULATION_FAILED("study.runDynamicSimulationFailed"), + INVALIDATE_DYNAMIC_SECURITY_ANALYSIS_FAILED("study.invalidateDynamicSecurityAnalysisFailed"), + DUPLICATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.duplicateDynamicSecurityAnalysisParametersFailed"), + UPDATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED("study.updateDynamicSecurityAnalysisParametersFailed"), + DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND("study.dynamicSecurityAnalysisParametersNotFound"), + DYNAMIC_SECURITY_ANALYSIS_PROVIDER_NOT_FOUND("study.dynamicSecurityAnalysisProviderNotFound"), + GET_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED("study.getDynamicSecurityAnalysisProviderFailed"), + DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_NOT_FOUND("study.dynamicSecurityAnalysisDefaultProviderNotFound"), + GET_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_FAILED("study.getDynamicSecurityAnalysisDefaultProviderFailed"), + UPDATE_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED("study.updateDynamicSecurityAnalysisProviderFailed"), + DELETE_COMPUTATION_RESULTS_FAILED("study.deleteComputationResultsFailed"), + STUDY_INDEXATION_FAILED("study.studyIndexationFailed"), + STUDY_CHECK_INDEXATION_FAILED("study.studyCheckIndexationFailed"), + NOT_IMPLEMENTED("study.notImplemented"), + EVALUATE_FILTER_FAILED("study.evaluateFilterFailed"), + GET_USER_PROFILE_FAILED("study.getUserProfileFailed"), + STATE_ESTIMATION_RUNNING("study.stateEstimationRunning"), + STATE_ESTIMATION_NOT_FOUND("study.stateEstimationNotFound"), + STATE_ESTIMATION_ERROR("study.stateEstimationError"), + CREATE_STATE_ESTIMATION_PARAMETERS_FAILED("study.createStateEstimationParametersFailed"), + UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED("study.updateStateEstimationParametersFailed"), + DELETE_STATE_ESTIMATION_PARAMETERS_FAILED("study.deleteStateEstimationParametersFailed"), + GET_STATE_ESTIMATION_PARAMETERS_FAILED("study.getStateEstimationParametersFailed"), + STATE_ESTIMATION_PARAMETERS_NOT_FOUND("study.stateEstimationParametersNotFound"), + PCC_MIN_RUNNING("study.pccMinRunning"), + PCC_MIN_NOT_FOUND("study.pccMinNotFound"), + PCC_MIN_ERROR("study.pccMinError"), + MAX_NODE_BUILDS_EXCEEDED("study.maxNodeBuildsExceeded"), + CREATE_NETWORK_VISUALIZATION_PARAMETERS_FAILED("study.createNetworkVisualizationParametersFailed"), + UPDATE_NETWORK_VISUALIZATION_PARAMETERS_FAILED("study.updateNetworkVisualizationParametersFailed"), + NETWORK_VISUALIZATION_PARAMETERS_NOT_FOUND("study.networkVisualizationParametersNotFound"), + GET_NETWORK_VISUALIZATION_PARAMETERS_FAILED("study.getNetworkVisualizationParametersFailed"), + ROOT_NETWORK_NOT_FOUND("study.rootNetworkNotFound"), + ROOT_NETWORK_DELETE_FORBIDDEN("study.rootNetworkDeleteForbidden"), + ROOT_NETWORK_CREATION_FAILED("study.rootNetworkCreationFailed"), + ROOT_NETWORK_MODIFICATION_FAILED("study.rootNetworkModificationFailed"), + MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED("study.maximumRootNetworkByStudyReached"), + MAXIMUM_TAG_LENGTH_EXCEEDED("study.maximumTagLengthExceeded"), + DUPLICATE_SPREADSHEET_CONFIG_COLLECTION_FAILED("study.duplicateSpreadsheetConfigCollectionFailed"), + SPREADSHEET_CONFIG_COLLECTION_NOT_FOUND("study.spreadsheetConfigCollectionNotFound"), + GET_SPREADSHEET_CONFIG_COLLECTION_FAILED("study.getSpreadsheetConfigCollectionFailed"), + CREATE_SPREADSHEET_CONFIG_COLLECTION_FAILED("study.createSpreadsheetConfigCollectionFailed"), + UPDATE_SPREADSHEET_CONFIG_COLLECTION_FAILED("study.updateSpreadsheetConfigCollectionFailed"), + UPDATE_SPREADSHEET_CONFIG_FAILED("study.updateSpreadsheetConfigFailed"), + NETWORK_EXPORT_FAILED("study.networkExportFailed"), + GET_LOADFLOW_PROVIDER_FAILED("study.getLoadflowProviderFailed"), + CREATE_DIAGRAM_GRID_LAYOUT_FAILED("study.createDiagramGridLayoutFailed"), + DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED("study.duplicateDiagramGridLayoutFailed"), + TOO_MANY_NAD_CONFIGS("study.tooManyNadConfigs"), + TOO_MANY_MAP_CARDS("study.tooManyMapCards"); + + private final String value; + + StudyBusinessErrorCode(String value) { + this.value = value; + } + + @Override + public String value() { + return value; + } +} diff --git a/src/main/java/org/gridsuite/study/server/StudyException.java b/src/main/java/org/gridsuite/study/server/StudyException.java index fe26845011..f8b5a58de0 100644 --- a/src/main/java/org/gridsuite/study/server/StudyException.java +++ b/src/main/java/org/gridsuite/study/server/StudyException.java @@ -13,170 +13,19 @@ */ public class StudyException extends RuntimeException { - public enum Type { - STUDY_ALREADY_EXISTS, - ELEMENT_NOT_FOUND, - STUDY_NOT_FOUND, - DIAGRAM_GRID_LAYOUT_NOT_FOUND, - CASE_NOT_FOUND, - LOADFLOW_NOT_RUNNABLE, - LOADFLOW_RUNNING, - LOADFLOW_ERROR, - SECURITY_ANALYSIS_RUNNING, - SECURITY_ANALYSIS_NOT_FOUND, - SENSITIVITY_ANALYSIS_RUNNING, - SENSITIVITY_ANALYSIS_NOT_FOUND, - SENSITIVITY_ANALYSIS_ERROR, - SHORT_CIRCUIT_ANALYSIS_NOT_FOUND, - SHORT_CIRCUIT_ANALYSIS_ERROR, - LOADFLOW_NOT_FOUND, - SHORT_CIRCUIT_ANALYSIS_RUNNING, - VOLTAGE_INIT_NOT_FOUND, - VOLTAGE_INIT_RUNNING, - DYNAMIC_SIMULATION_RUNNING, - DYNAMIC_SIMULATION_NOT_FOUND, - DYNAMIC_MAPPING_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_RUNNING, - DYNAMIC_SECURITY_ANALYSIS_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_ERROR, - NOT_ALLOWED, - STUDY_CREATION_FAILED, - CANT_DELETE_ROOT_NODE, - DELETE_EQUIPMENT_FAILED, - DELETE_NODE_FAILED, - DELETE_STUDY_FAILED, - DELETE_ROOT_NETWORK_FAILED, - CREATE_NETWORK_MODIFICATION_FAILED, - UPDATE_NETWORK_MODIFICATION_FAILED, - DELETE_NETWORK_MODIFICATION_FAILED, - MOVE_NETWORK_MODIFICATION_FORBIDDEN, - UNKNOWN_EQUIPMENT_TYPE, - BAD_NODE_TYPE, - NETWORK_NOT_FOUND, - EQUIPMENT_NOT_FOUND, - NETWORK_INDEXATION_FAILED, - NODE_NOT_FOUND, - NODE_NOT_BUILT, - SVG_NOT_FOUND, - NODE_NAME_ALREADY_EXIST, - NODE_BUILD_ERROR, - INVALIDATE_BUILD_FAILED, - UNKNOWN_NOTIFICATION_TYPE, - BAD_MODIFICATION_TYPE, - GET_MODIFICATIONS_FAILED, - GET_MODIFICATIONS_COUNT_FAILED, - GET_NETWORK_ELEMENT_FAILED, - GET_NETWORK_COUNTRY_FAILED, - GET_NETWORK_NOMINAL_VOLTAGES_FAILED, - BAD_JSON_FORMAT, - UNKNOWN_ACTION_TYPE, - BAD_PARAMETER, - MISSING_PARAMETER, - LOAD_SCALING_FAILED, - DELETE_VOLTAGE_LEVEL_ON_LINE, - DELETE_ATTACHING_LINE, - GENERATOR_SCALING_FAILED, - URI_SYNTAX, - TIME_SERIES_BAD_TYPE, - TIMELINE_BAD_TYPE, - FILTERS_NOT_FOUND, - NO_VOLTAGE_INIT_RESULTS_FOR_NODE, - NO_VOLTAGE_INIT_MODIFICATIONS_GROUP_FOR_NODE, - VOLTAGE_INIT_PARAMETERS_NOT_FOUND, - CREATE_VOLTAGE_INIT_PARAMETERS_FAILED, - UPDATE_VOLTAGE_INIT_PARAMETERS_FAILED, - CREATE_SECURITY_ANALYSIS_PARAMETERS_FAILED, - UPDATE_SECURITY_ANALYSIS_PARAMETERS_FAILED, - GET_SECURITY_ANALYSIS_PARAMETERS_FAILED, - SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, - GET_SECURITY_ANALYSIS_DEFAULT_PROVIDER_FAILED, - UPDATE_SECURITY_ANALYSIS_PROVIDER_FAILED, - CREATE_LOADFLOW_PARAMETERS_FAILED, - UPDATE_LOADFLOW_PARAMETERS_FAILED, - GET_LOADFLOW_PARAMETERS_FAILED, - DELETE_LOADFLOW_PARAMETERS_FAILED, - LOADFLOW_PARAMETERS_NOT_FOUND, - GET_LOADFLOW_DEFAULT_PROVIDER_FAILED, - UPDATE_LOADFLOW_PROVIDER_FAILED, - UPDATE_SHORTCIRCUIT_PARAMETERS_FAILED, - CREATE_SHORTCIRCUIT_PARAMETERS_FAILED, - GET_SHORTCIRCUIT_PARAMETERS_FAILED, - SENSITIVITY_ANALYSIS_PARAMETERS_NOT_FOUND, - GET_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - UPDATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - DELETE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - GET_SENSITIVITY_ANALYSIS_DEFAULT_PROVIDER_FAILED, - UPDATE_SENSITIVITY_ANALYSIS_PROVIDER_FAILED, - GET_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PARAMETERS_FAILED, - RUN_DYNAMIC_SECURITY_ANALYSIS_FAILED, - RUN_DYNAMIC_SIMULATION_FAILED, - INVALIDATE_DYNAMIC_SECURITY_ANALYSIS_FAILED, - DUPLICATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - UPDATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_PROVIDER_NOT_FOUND, - GET_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED, - DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_NOT_FOUND, - GET_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_FAILED, - UPDATE_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED, - DELETE_COMPUTATION_RESULTS_FAILED, - STUDY_INDEXATION_FAILED, - STUDY_CHECK_INDEXATION_FAILED, - NOT_IMPLEMENTED, - EVALUATE_FILTER_FAILED, - GET_USER_PROFILE_FAILED, - STATE_ESTIMATION_RUNNING, - STATE_ESTIMATION_NOT_FOUND, - STATE_ESTIMATION_ERROR, - CREATE_STATE_ESTIMATION_PARAMETERS_FAILED, - UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED, - DELETE_STATE_ESTIMATION_PARAMETERS_FAILED, - GET_STATE_ESTIMATION_PARAMETERS_FAILED, - STATE_ESTIMATION_PARAMETERS_NOT_FOUND, - PCC_MIN_RUNNING, - PCC_MIN_NOT_FOUND, - PCC_MIN_ERROR, - MAX_NODE_BUILDS_EXCEEDED, - CREATE_NETWORK_VISUALIZATION_PARAMETERS_FAILED, - UPDATE_NETWORK_VISUALIZATION_PARAMETERS_FAILED, - NETWORK_VISUALIZATION_PARAMETERS_NOT_FOUND, - GET_NETWORK_VISUALIZATION_PARAMETERS_FAILED, - ROOT_NETWORK_NOT_FOUND, - ROOT_NETWORK_DELETE_FORBIDDEN, - ROOT_NETWORK_CREATION_FAILED, - ROOT_NETWORK_MODIFICATION_FAILED, - MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED, - MAXIMUM_TAG_LENGTH_EXCEEDED, - DUPLICATE_SPREADSHEET_CONFIG_COLLECTION_FAILED, - SPREADSHEET_CONFIG_COLLECTION_NOT_FOUND, - GET_SPREADSHEET_CONFIG_COLLECTION_FAILED, - CREATE_SPREADSHEET_CONFIG_COLLECTION_FAILED, - UPDATE_SPREADSHEET_CONFIG_COLLECTION_FAILED, - UPDATE_SPREADSHEET_CONFIG_FAILED, - NETWORK_EXPORT_FAILED, - GET_LOADFLOW_PROVIDER_FAILED, - CREATE_DIAGRAM_GRID_LAYOUT_FAILED, - DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED, - TOO_MANY_NAD_CONFIGS, - TOO_MANY_MAP_CARDS - } - - private final Type type; + private final StudyBusinessErrorCode type; - public StudyException(Type type) { + public StudyException(StudyBusinessErrorCode type) { super(Objects.requireNonNull(type.name())); this.type = type; } - public StudyException(Type type, String message) { + public StudyException(StudyBusinessErrorCode type, String message) { super(message); this.type = type; } - Type getType() { + StudyBusinessErrorCode getType() { return type; } } diff --git a/src/main/java/org/gridsuite/study/server/controller/StudyController.java b/src/main/java/org/gridsuite/study/server/controller/StudyController.java index fe7f9793ee..3d1db47b20 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -22,7 +22,6 @@ import org.gridsuite.study.server.StudyConstants.ModificationsActionType; import org.gridsuite.study.server.StudyConstants.SldDisplayMode; import org.gridsuite.study.server.StudyException; -import org.gridsuite.study.server.StudyException.Type; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.computation.LoadFlowComputationInfos; import org.gridsuite.study.server.dto.diagramgridlayout.DiagramGridLayout; @@ -66,6 +65,8 @@ import java.beans.PropertyEditorSupport; import java.util.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.MOVE_NETWORK_MODIFICATION_FORBIDDEN; +import static org.gridsuite.study.server.StudyBusinessErrorCode.UNKNOWN_ACTION_TYPE; import static org.gridsuite.study.server.StudyConstants.*; import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; @@ -684,12 +685,12 @@ public ResponseEntity moveOrCopyModifications(@PathVariable("studyUuid") U case MOVE: // we don't cut - paste modifications from different studies if (!studyUuid.equals(originStudyUuid)) { - throw new StudyException(Type.MOVE_NETWORK_MODIFICATION_FORBIDDEN); + throw new StudyException(MOVE_NETWORK_MODIFICATION_FORBIDDEN); } handleMoveNetworkModifications(studyUuid, nodeUuid, originNodeUuid, modificationsToCopyUuidList, userId); break; default: - throw new StudyException(Type.UNKNOWN_ACTION_TYPE); + throw new StudyException(UNKNOWN_ACTION_TYPE); } return ResponseEntity.ok().build(); } diff --git a/src/main/java/org/gridsuite/study/server/service/CaseService.java b/src/main/java/org/gridsuite/study/server/service/CaseService.java index b1497a69a2..af47077f25 100644 --- a/src/main/java/org/gridsuite/study/server/service/CaseService.java +++ b/src/main/java/org/gridsuite/study/server/service/CaseService.java @@ -25,7 +25,7 @@ import static org.gridsuite.study.server.StudyConstants.CASE_API_VERSION; import static org.gridsuite.study.server.StudyConstants.DELIMITER; -import static org.gridsuite.study.server.StudyException.Type.CASE_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.CASE_NOT_FOUND; @Service public class CaseService { diff --git a/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java b/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java index df9e09935a..2df0a68d05 100644 --- a/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java +++ b/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java @@ -21,6 +21,9 @@ import java.util.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.TOO_MANY_MAP_CARDS; +import static org.gridsuite.study.server.StudyBusinessErrorCode.TOO_MANY_NAD_CONFIGS; + /** * Service responsible for managing diagram grid layout operations. * Handles the complete lifecycle of diagram configurations including creation, update, and deletion @@ -152,7 +155,7 @@ private void validateMapCardCount(DiagramGridLayout diagramGridLayout) { .count(); if (mapCardsCount > MAX_MAP_CARDS_ALLOWED) { - throw new StudyException(StudyException.Type.TOO_MANY_MAP_CARDS, + throw new StudyException(TOO_MANY_MAP_CARDS, "Maximum " + MAX_MAP_CARDS_ALLOWED + " map card allowed, but " + mapCardsCount + " provided"); } } @@ -169,7 +172,7 @@ private void validateNadConfigCount(DiagramGridLayout diagramGridLayout) { .count(); if (nadConfigCount > MAX_NAD_CONFIGS_ALLOWED) { - throw new StudyException(StudyException.Type.TOO_MANY_NAD_CONFIGS, + throw new StudyException(TOO_MANY_NAD_CONFIGS, "Maximum " + MAX_NAD_CONFIGS_ALLOWED + " NAD configurations allowed, but " + nadConfigCount + " provided"); } } diff --git a/src/main/java/org/gridsuite/study/server/service/FilterService.java b/src/main/java/org/gridsuite/study/server/service/FilterService.java index bb35a77d31..9bad45c517 100644 --- a/src/main/java/org/gridsuite/study/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/study/server/service/FilterService.java @@ -33,8 +33,8 @@ import static org.gridsuite.study.server.StudyConstants.NETWORK_UUID; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_EQUIPMENT_TYPES; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_VARIANT_ID; -import static org.gridsuite.study.server.StudyException.Type.EVALUATE_FILTER_FAILED; -import static org.gridsuite.study.server.StudyException.Type.NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.EVALUATE_FILTER_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.NETWORK_NOT_FOUND; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java b/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java index 1b127b5486..561de845b4 100644 --- a/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java +++ b/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java b/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java index 5e79d4d4d9..8b57c03cdc 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java @@ -40,7 +40,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java b/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java index 2c41b66349..5b9c541eb0 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java @@ -29,7 +29,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service @@ -94,7 +94,7 @@ public String getElementInfos(UUID networkUuid, throw new StudyException(EQUIPMENT_NOT_FOUND); } if (HttpStatus.NOT_IMPLEMENTED.equals(e.getStatusCode())) { - throw new StudyException(StudyException.Type.NOT_IMPLEMENTED, e.getMessage()); + throw new StudyException(NOT_IMPLEMENTED, e.getMessage()); } throw handleHttpError(e, GET_NETWORK_ELEMENT_FAILED); } diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java index 6f8e6ba639..b33bba520b 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java @@ -36,7 +36,7 @@ import java.util.*; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.JsonUtils.getModificationContextJsonString; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java b/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java index da77939930..ac26492680 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java @@ -32,7 +32,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; /** * @author Jacques Borsenberger diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java index 603a074470..c80949fc71 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java @@ -45,7 +45,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.dto.ComputationType.*; import static org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.ComputationsInvalidationMode; diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java index 519e9daced..9679e9148f 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; /** * @author Le Saulnier Kevin diff --git a/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java index 094e3b78db..892f329ee3 100644 --- a/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java @@ -37,7 +37,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java index 15a508432e..c9dd8d907a 100644 --- a/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java b/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java index 7eeea0cabe..c657683f9a 100644 --- a/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java +++ b/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java @@ -34,7 +34,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service diff --git a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java index 16f89c9555..cfefa31b5b 100644 --- a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java +++ b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java @@ -37,13 +37,13 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.CREATE_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyException.Type.DELETE_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyException.Type.GET_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyException.Type.STATE_ESTIMATION_NOT_FOUND; -import static org.gridsuite.study.server.StudyException.Type.STATE_ESTIMATION_PARAMETERS_NOT_FOUND; -import static org.gridsuite.study.server.StudyException.Type.STATE_ESTIMATION_RUNNING; -import static org.gridsuite.study.server.StudyException.Type.UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.CREATE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DELETE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.GET_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_PARAMETERS_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_RUNNING; +import static org.gridsuite.study.server.StudyBusinessErrorCode.UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java b/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java index 9a6c1c343a..d96cde04e9 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java @@ -28,7 +28,7 @@ import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.STUDY_CONFIG_API_VERSION; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/StudyService.java b/src/main/java/org/gridsuite/study/server/service/StudyService.java index 483462df79..6d6166fd4e 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -85,7 +85,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.dto.ComputationType.*; import static org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.ALL_WITH_BLOCK_NODES; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @@ -631,7 +631,7 @@ public CreatedStudyBasicInfos insertStudy(UUID studyUuid, String userId, Network @Transactional public CreatedStudyBasicInfos updateNetwork(UUID studyUuid, UUID rootNetworkUuid, NetworkInfos networkInfos, String userId) { StudyEntity studyEntity = studyRepository.findById(studyUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); - RootNetworkEntity rootNetworkEntity = rootNetworkService.getRootNetwork(rootNetworkUuid).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkEntity rootNetworkEntity = rootNetworkService.getRootNetwork(rootNetworkUuid).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkService.updateNetwork(rootNetworkEntity, networkInfos); diff --git a/src/main/java/org/gridsuite/study/server/service/SupervisionService.java b/src/main/java/org/gridsuite/study/server/service/SupervisionService.java index 87d327d63e..011fb8b57e 100644 --- a/src/main/java/org/gridsuite/study/server/service/SupervisionService.java +++ b/src/main/java/org/gridsuite/study/server/service/SupervisionService.java @@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyException.Type.ELEMENT_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ELEMENT_NOT_FOUND; import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; /** diff --git a/src/main/java/org/gridsuite/study/server/service/UserAdminService.java b/src/main/java/org/gridsuite/study/server/service/UserAdminService.java index 522f396c48..fee842cdd9 100644 --- a/src/main/java/org/gridsuite/study/server/service/UserAdminService.java +++ b/src/main/java/org/gridsuite/study/server/service/UserAdminService.java @@ -17,7 +17,7 @@ import java.util.Optional; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.GET_USER_PROFILE_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.GET_USER_PROFILE_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java b/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java index 5492d2f80b..e70e83ccae 100644 --- a/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java +++ b/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java index 3f3c26be15..8acd2f0fbc 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java @@ -24,7 +24,7 @@ import java.util.List; -import static org.gridsuite.study.server.StudyException.Type.DYNAMIC_MAPPING_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_MAPPING_NOT_FOUND; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; /** diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java index fa13375720..0770c2de94 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java @@ -28,7 +28,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java index efd7b468a9..a0b23887f3 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java @@ -29,8 +29,8 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.DYNAMIC_SIMULATION_NOT_FOUND; -import static org.gridsuite.study.server.StudyException.Type.RUN_DYNAMIC_SIMULATION_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SIMULATION_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java b/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java index 58bda5ff51..2cfa4fcf71 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java +++ b/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java @@ -13,7 +13,7 @@ import java.net.URI; import java.net.URISyntaxException; -import static org.gridsuite.study.server.StudyException.Type.URI_SYNTAX; +import static org.gridsuite.study.server.StudyBusinessErrorCode.URI_SYNTAX; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; /** diff --git a/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java b/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java index ff5cf8725c..d41f028eb0 100644 --- a/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java +++ b/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java @@ -1,5 +1,6 @@ package org.gridsuite.study.server.service.common; +import org.gridsuite.study.server.StudyBusinessErrorCode; import org.gridsuite.study.server.StudyException; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; @@ -14,14 +15,14 @@ import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_RESULTS_UUIDS; -import static org.gridsuite.study.server.StudyException.Type.DELETE_COMPUTATION_RESULTS_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DELETE_COMPUTATION_RESULTS_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; public abstract class AbstractComputationService { public abstract List getEnumValues(String enumName, UUID resultUuidOpt); - public List getEnumValues(String enumName, UUID resultUuid, String apiVersion, String computingTypeBaseUri, StudyException.Type type, RestTemplate restTemplate) { + public List getEnumValues(String enumName, UUID resultUuid, String apiVersion, String computingTypeBaseUri, StudyBusinessErrorCode type, RestTemplate restTemplate) { List result; UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + apiVersion + "/results/{resultUuid}/{enumName}"); String path = uriComponentsBuilder.buildAndExpand(resultUuid, enumName).toUriString(); diff --git a/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java index 480653d6b3..c5bc700b48 100644 --- a/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.UUID; -import static org.gridsuite.study.server.StudyException.Type.DYNAMIC_SECURITY_ANALYSIS_RUNNING; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; /** * @author Thang PHAM diff --git a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java index 22288a42e1..c94db1d201 100644 --- a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java @@ -39,8 +39,7 @@ import java.util.UUID; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyException.Type.DELETE_COMPUTATION_RESULTS_FAILED; -import static org.gridsuite.study.server.StudyException.Type.DYNAMIC_SIMULATION_RUNNING; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** @@ -120,7 +119,7 @@ public List getTimeSeriesResult(UUID resultUuid, List // get first element to check type if (!CollectionUtils.isEmpty(timeSeries) && !(timeSeries.get(0) instanceof DoubleTimeSeries)) { - throw new StudyException(StudyException.Type.TIME_SERIES_BAD_TYPE, "Time series can not be a type: " + throw new StudyException(TIME_SERIES_BAD_TYPE, "Time series can not be a type: " + timeSeries.get(0).getClass().getSimpleName() + ", expected type: " + DoubleTimeSeries.class.getSimpleName()); } @@ -141,7 +140,7 @@ public List getTimelineResult(UUID resultUuid) { // get first element to check type if (!CollectionUtils.isEmpty(timelines) && !(timelines.get(0) instanceof StringTimeSeries)) { - throw new StudyException(StudyException.Type.TIME_SERIES_BAD_TYPE, "Timelines can not be a type: " + throw new StudyException(TIME_SERIES_BAD_TYPE, "Timelines can not be a type: " + timelines.get(0).getClass().getSimpleName() + ", expected type: " + StringTimeSeries.class.getSimpleName()); } @@ -154,7 +153,7 @@ public List getTimelineResult(UUID resultUuid) { try { return objectMapper.readValue(eventJson, TimelineEventInfos.class); } catch (JsonProcessingException e) { - throw new StudyException(StudyException.Type.TIMELINE_BAD_TYPE, "Error while deserializing timeline event: " + eventJson); + throw new StudyException(TIMELINE_BAD_TYPE, "Error while deserializing timeline event: " + eventJson); } }).toList(); } diff --git a/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java b/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java index 61ac481e04..93c676e806 100644 --- a/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java +++ b/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java @@ -39,7 +39,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.addPageableToQueryParams; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java b/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java index 6890fa514f..fa66f5da60 100644 --- a/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java +++ b/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import org.gridsuite.study.server.StudyBusinessErrorCode; import org.gridsuite.study.server.StudyException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +32,7 @@ private StudyUtils() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } - public static StudyException handleHttpError(HttpStatusCodeException httpException, StudyException.Type type) { + public static StudyException handleHttpError(HttpStatusCodeException httpException, StudyBusinessErrorCode type) { String responseBody = httpException.getResponseBodyAsString(); String errorMessage = responseBody.isEmpty() ? httpException.getStatusCode().toString() : parseHttpError(responseBody); diff --git a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java index 1ca43552d2..ca4d81b2f6 100644 --- a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java +++ b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java @@ -35,6 +35,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DIAGRAM_GRID_LAYOUT_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.STUDY_CONFIG_API_VERSION; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -191,7 +192,7 @@ void testDeleteDiagramGridLayoutWithError() { studyConfigService.deleteDiagramGridLayout(diagramGridLayoutUuid); }); - assertEquals(StudyException.Type.DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); wireMockServer.stubFor(WireMock.delete(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout/" + diagramGridLayoutUuid) .willReturn(WireMock.serverError())); @@ -212,7 +213,7 @@ void testSaveDiagramGridLayoutWithError() { studyConfigService.saveDiagramGridLayout(diagramGridLayout); }); - assertEquals(StudyException.Type.DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); wireMockServer.stubFor(WireMock.post(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout") .willReturn(WireMock.serverError())); @@ -234,7 +235,7 @@ void testUpdateDiagramGridLayoutWithError() { studyConfigService.updateDiagramGridLayout(diagramGridLayoutUuid, diagramGridLayout); }); - assertEquals(StudyException.Type.DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); wireMockServer.stubFor(WireMock.put(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout/" + diagramGridLayoutUuid) .willReturn(WireMock.serverError())); diff --git a/src/test/java/org/gridsuite/study/server/LoadFlowTest.java b/src/test/java/org/gridsuite/study/server/LoadFlowTest.java index 71286454c6..5ceeed2c53 100644 --- a/src/test/java/org/gridsuite/study/server/LoadFlowTest.java +++ b/src/test/java/org/gridsuite/study/server/LoadFlowTest.java @@ -68,7 +68,7 @@ import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; -import static org.gridsuite.study.server.StudyException.Type.LOADFLOW_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.LOADFLOW_NOT_FOUND; import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; import static org.gridsuite.study.server.notification.NotificationService.*; import static org.gridsuite.study.server.utils.TestUtils.USER_DEFAULT_PROFILE_JSON; diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java index ab28785f94..1d0a8387d9 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java @@ -77,6 +77,7 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.HEADER_ERROR_MESSAGE; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_RECEIVER; import static org.gridsuite.study.server.utils.ImpactUtils.createModificationResultWithElementImpact; @@ -555,7 +556,7 @@ void testBuild() throws Exception { assertEquals(List.of(modificationGroupUuid1, modificationGroupUuid2, modificationGroupUuid3, modificationGroupUuid4, modificationGroupUuid5), buildInfos.getModificationGroupUuids()); // Mark the node 3 status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo3Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo3Entity); @@ -566,17 +567,17 @@ void testBuild() throws Exception { assertEquals(List.of(modificationGroupUuid4), buildInfos.getModificationGroupUuids()); // Mark the node 2 status as not built - RootNetworkNodeInfoEntity rootNetworkNodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo2Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.NOT_BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo2Entity); // Mark the node 4 status as not built - RootNetworkNodeInfoEntity rootNetworkNodeInfo4Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode4.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo4Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode4.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo4Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.NOT_BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo4Entity); // Mark the node 5 status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfo5Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode5.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo5Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode5.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo5Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo5Entity); @@ -588,7 +589,7 @@ void testBuild() throws Exception { assertEquals(BuildStatus.BUILT, networkModificationTreeService.getNodeBuildStatus(modificationNode5.getId(), rootNetworkUuid).getGlobalBuildStatus()); // Mark the node 3 status as built - rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo3Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo3Entity); @@ -616,7 +617,7 @@ void testLocalBuildValue() throws Exception { wireMockUtils.stubNetworkModificationPost(mapper.writeValueAsString(new NetworkModificationsResult(List.of(UUID.randomUUID()), List.of(Optional.empty())))); // Mark the node status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity); @@ -740,10 +741,10 @@ void testNetworkModificationSwitch(final MockWebServer server) throws Exception wireMockUtils.verifyNetworkModificationPostWithVariant(stubPostId, getModificationContextJsonString(mapper, modificationBody)); // test build status on switch modification - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); - RootNetworkNodeInfoEntity rootNetworkNodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo2Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo2Entity); @@ -1066,7 +1067,7 @@ void testCreateLine() throws Exception { + "\"voltageLevelId1\":\"idVL1\"," + "\"busOrBusbarSectionId1\":\"idBus1\"," + "\"voltageLevelId2\":\"idVL2\"," + "\"busOrBusbarSectionId2\":\"idBus2\"}"; // Mark the node 1 status as building - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILDING)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); // create line on building node @@ -1138,7 +1139,7 @@ void testCreateTwoWindingsTransformer() throws Exception { String createTwoWindingsTransformerAttributes2 = "{\"type\":\"" + ModificationType.TWO_WINDINGS_TRANSFORMER_CREATION + "\",\"equipmentId\":\"2wtId3\",\"equipmentName\":\"2wtName3\",\"seriesResistance\":\"10\",\"seriesReactance\":\"10\",\"magnetizingConductance\":\"100\",\"magnetizingSusceptance\":\"100\",\"ratedVoltage1\":\"480\",\"ratedVoltage2\":\"380\",\"voltageLevelId1\":\"CHOO5P6\",\"busOrBusbarSectionId1\":\"CHOO5P6_1\",\"voltageLevelId2\":\"CHOO5P6\",\"busOrBusbarSectionId2\":\"CHOO5P6_1\"}"; // Mark the node 1 status as building - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILDING)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); // create Two Windings Transformer on building node @@ -1413,7 +1414,7 @@ void testCreateLoad() throws Exception { String createLoadAttributes2 = "{\"type\":\"" + ModificationType.LOAD_CREATION + "\",\"loadId\":\"loadId3\",\"loadName\":\"loadName3\",\"loadType\":\"UNDEFINED\",\"activePower\":\"100.0\",\"reactivePower\":\"50.0\",\"voltageLevelId\":\"idVL1\",\"busId\":\"idBus1\"}"; // Mark the node 3 status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo3Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo3Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILDING)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo3Entity); @@ -1605,7 +1606,7 @@ void testCreateSubstation() throws Exception { String createSubstationAttributes2 = "{\"type\":\"" + ModificationType.SUBSTATION_CREATION + "\",\"substationId\":\"substationId2\",\"substationName\":\"substationName2\",\"country\":\"AD\"}"; // Mark the node 1 status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILDING)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); // create substation on building node @@ -1679,7 +1680,7 @@ void testCreateVoltageLevel() throws Exception { String createVoltageLevelAttributes2 = "{\"type\":\"" + ModificationType.VOLTAGE_LEVEL_CREATION + "\",\"voltageLevelId\":\"voltageLevelId3\",\"voltageLevelName\":\"voltageLevelName3\"" + ",\"nominalVoltage\":\"379.1\", \"substationId\":\"s2\"}"; // Mark the node 1 status as building - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILDING)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); // create voltage level on building node @@ -2142,7 +2143,7 @@ void testDuplicateModification() throws Exception { verify(rootNetworkNodeInfoService, times(1)).copyModificationsToExclude(any(), any(), any()); // now we do the same but on a built node - RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(nodeUuid1, studyTestUtils.getOneRootNetworkUuid(studyUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(nodeUuid1, studyTestUtils.getOneRootNetworkUuid(studyUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfo1Entity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfo1Entity); @@ -2435,7 +2436,7 @@ void testNodesInvalidation(final MockWebServer server) throws Exception { NetworkModificationNode modificationNode3 = createNetworkModificationNode(studyNameUserIdUuid, modificationNode2Uuid, UUID.randomUUID(), VARIANT_ID_3, "node 3", NetworkModificationNodeType.SECURITY, BuildStatus.BUILT, userId); UUID modificationNode3Uuid = modificationNode3.getId(); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setSecurityAnalysisResultUuid(UUID.fromString(SECURITY_ANALYSIS_RESULT_UUID)); rootNetworkNodeInfoEntity.setSensitivityAnalysisResultUuid(UUID.fromString(SENSITIVITY_ANALYSIS_RESULT_UUID)); rootNetworkNodeInfoEntity.setShortCircuitAnalysisResultUuid(UUID.fromString(SHORTCIRCUIT_ANALYSIS_RESULT_UUID)); @@ -2479,10 +2480,10 @@ void testNodesInvalidation(final MockWebServer server) throws Exception { assertTrue(requests.stream().anyMatch(r -> r.getPath().matches("/v1/results\\?resultsUuids=" + STATE_ESTIMATION_RESULT_UUID))); // Mark nodes 2 and 3 status as built - rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode2Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity); - rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode3Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity); @@ -2519,7 +2520,7 @@ void testRemoveLoadFlowComputationReport(final MockWebServer server) throws Exce NetworkModificationNode modificationNode1 = createNetworkModificationNode(studyNameUserIdUuid, rootNodeUuid, UUID.randomUUID(), VARIANT_ID, "node 1", NetworkModificationNodeType.SECURITY, BuildStatus.BUILT, userId); UUID modificationNode1Uuid = modificationNode1.getId(); // In this node, let's say we have all computations results - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1Uuid, studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setLoadFlowResultUuid(LOADFLOW_RESULT_UUID); rootNetworkNodeInfoEntity.setSecurityAnalysisResultUuid(UUID.fromString(SECURITY_ANALYSIS_RESULT_UUID)); rootNetworkNodeInfoEntity.setDynamicSimulationResultUuid(DYNAMIC_SIMULATION_RESULT_UUID); @@ -2616,7 +2617,7 @@ void testUpdateOfBuildStatus() throws Exception { wireMockUtils.verifyNetworkModificationPostWithVariant(stubPostId, getModificationContextJsonString(mapper, modificationBody)); // Mark the node status as built - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity.setNodeBuildStatus(NodeBuildStatusEmbeddable.from(BuildStatus.BUILT)); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity); diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java index 63149d28df..8e1a40efe7 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java @@ -77,6 +77,7 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.*; import static org.gridsuite.study.server.service.NetworkModificationTreeService.ROOT_NODE_NAME; import static org.junit.jupiter.api.Assertions.*; @@ -774,14 +775,14 @@ void testNodeModificationInfos() throws Exception { RootNode root = getRootNode(rootStudyId, firstRootNetworkUuid); UUID rootId = root.getId(); - RootNodeInfoEntity rootInfos = rootNodeInfoRepository.findById(rootId).orElseThrow(() -> new StudyException(StudyException.Type.NODE_NOT_FOUND)); + RootNodeInfoEntity rootInfos = rootNodeInfoRepository.findById(rootId).orElseThrow(() -> new StudyException(NODE_NOT_FOUND)); assertEquals(rootId, rootInfos.getId()); List children = root.getChildren(); assertEquals(2, children.size()); NetworkModificationNode n1 = (NetworkModificationNode) (children.stream().filter(c -> c.getName().equals("n1")).findFirst().orElseThrow()); NetworkModificationNodeInfoEntity n1Infos = networkModificationTreeService.getNetworkModificationNodeInfoEntity(n1.getId()); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(n1.getId(), firstRootNetworkUuid).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(n1.getId(), firstRootNetworkUuid).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); assertEquals("n1", n1.getName()); assertEquals("zzz", n1.getDescription()); @@ -1533,7 +1534,7 @@ void testGetNetworkModificationsNode() throws Exception { .andExpect(status().isInternalServerError()) .andReturn().getResponse().getContentAsString(); - assertEquals(new StudyException(StudyException.Type.GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId())) @@ -1562,7 +1563,7 @@ void testGetNetworkModificationsToRestoreByNode() throws Exception { .andExpect(status().isInternalServerError()) .andReturn().getResponse().getContentAsString(); - assertEquals(new StudyException(StudyException.Type.GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId(), true)) @@ -1606,7 +1607,7 @@ void testGetNetworkModificationsToStashByNode() throws Exception { .andExpect(status().isInternalServerError()) .andReturn().getResponse().getContentAsString(); - assertEquals(new StudyException(StudyException.Type.GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId(), false)) diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java index 135f4a8df9..9de334f1a2 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java @@ -55,6 +55,7 @@ import java.util.UUID; import java.util.stream.Collectors; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_WORKFLOW_INFOS; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_WORKFLOW_TYPE; import static org.junit.jupiter.api.Assertions.*; @@ -220,7 +221,7 @@ void unbuildNode() { } private void assertNodeBuildStatus(UUID nodeUuid, BuildStatus buildStatus) { - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findAllByNodeInfoId(nodeUuid).stream().findFirst().orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findAllByNodeInfoId(nodeUuid).stream().findFirst().orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); assertEquals(buildStatus, rootNetworkNodeInfoEntity.getNodeBuildStatus().getLocalBuildStatus()); } diff --git a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java index 5b638ee1ef..147f39dee0 100644 --- a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java @@ -63,6 +63,7 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; import static org.gridsuite.study.server.dto.ComputationType.SENSITIVITY_ANALYSIS; @@ -704,7 +705,7 @@ void testSensitivityAnalysisParameters() throws Exception { wireMock.verify(WireMock.putRequestedFor(WireMock.urlPathEqualTo("/v1/parameters/" + SENSITIVITY_ANALYSIS_PARAMETERS_UUID))); // Get sensitivity analysis (not existing, so it will create default) - StudyEntity studyEntityToUpdate = studyRepository.findById(studyNameUserIdUuid).orElseThrow(() -> new StudyException(StudyException.Type.STUDY_NOT_FOUND)); + StudyEntity studyEntityToUpdate = studyRepository.findById(studyNameUserIdUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); studyEntityToUpdate.setSensitivityAnalysisParametersUuid(null); studyRepository.save(studyEntityToUpdate); diff --git a/src/test/java/org/gridsuite/study/server/StudyTest.java b/src/test/java/org/gridsuite/study/server/StudyTest.java index 798a2cc12c..12874361d9 100644 --- a/src/test/java/org/gridsuite/study/server/StudyTest.java +++ b/src/test/java/org/gridsuite/study/server/StudyTest.java @@ -100,7 +100,7 @@ import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.gridsuite.study.server.StudyConstants.CASE_API_VERSION; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; -import static org.gridsuite.study.server.StudyException.Type.STUDY_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.notification.NotificationService.DEFAULT_ERROR_MESSAGE; import static org.gridsuite.study.server.notification.NotificationService.UPDATE_TYPE_COMPUTATION_PARAMETERS; import static org.gridsuite.study.server.utils.JsonUtils.getModificationContextJsonString; diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java index 3e350639c4..6c46773b11 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java @@ -45,6 +45,7 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; @@ -177,11 +178,11 @@ void testDuplicateNodeWithModificationsToExclude() { NetworkModificationNode firstNode = networkModificationTreeService.createNode(studyEntity, rootNode.getIdNode(), createModificationNodeInfo(NODE_1_NAME), InsertMode.AFTER, null); // for each RootNetworkNodeInfoEntity, set some modifications to exclude - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity1.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity1); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity2.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity2); @@ -192,8 +193,8 @@ void testDuplicateNodeWithModificationsToExclude() { UUID duplicateNodeUuid = networkModificationTreeService.duplicateStudyNode(firstNode.getId(), rootNode.getIdNode(), InsertMode.AFTER); // get RootNetworkNodeInfoEntity of duplicate node - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); // assert those values are actually defined from ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP assertEquals(MODIFICATIONS_TO_EXCLUDE_RN_1.stream().map(ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP::get).collect(Collectors.toSet()), duplicateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude()); @@ -213,11 +214,11 @@ void testDuplicateNodeBetweenStudiesWithModificationsToExclude() { NetworkModificationNode firstNode = networkModificationTreeService.createNode(studyEntity, rootNode.getIdNode(), createModificationNodeInfo(NODE_1_NAME), InsertMode.AFTER, null); // for each RootNetworkNodeInfoEntity, set some modifications to exclude - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity1.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity1); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity2.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity2); @@ -237,8 +238,8 @@ void testDuplicateNodeBetweenStudiesWithModificationsToExclude() { UUID duplicateNodeUuid = networkModificationTreeService.duplicateStudyNode(firstNode.getId(), rootNode2.getIdNode(), InsertMode.AFTER); // get RootNetworkNodeInfoEntity of newly duplicated node - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos2.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos2.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos2.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(duplicateNodeUuid, rootNetworkBasicInfos2.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); // assert those values are empty, duplicating node between studies should empty modifications to exclude assertTrue(duplicateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude().isEmpty()); @@ -258,11 +259,11 @@ void testGetModificationsToExclude() throws Exception { NetworkModificationNode firstNode = networkModificationTreeService.createNode(studyEntity, rootNode.getIdNode(), createModificationNodeInfo(NODE_1_NAME), InsertMode.AFTER, null); // for each RootNetworkNodeInfoEntity, set some modifications to exclude - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity1.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity1); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity2.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity2); @@ -297,11 +298,11 @@ void testDuplicateModificationWithModificationsToExclude() { NetworkModificationNode secondNode = networkModificationTreeService.createNode(studyEntity, rootNode.getIdNode(), createModificationNodeInfo(NODE_2_NAME), InsertMode.AFTER, null); // for each RootNetworkNodeInfoEntity, set some modifications to exclude - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity1.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity1); - RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetworkNodeInfoEntity2.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetworkNodeInfoEntity2); @@ -321,15 +322,15 @@ void testDuplicateModificationWithModificationsToExclude() { // test duplication on same node : node1 studyService.duplicateOrInsertNetworkModifications(studyEntity.getId(), firstNode.getId(), studyEntity.getId(), firstNode.getId(), modificationsToDuplicate, USER_ID, StudyConstants.ModificationsActionType.COPY); - RootNetworkNodeInfoEntity upToDateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - RootNetworkNodeInfoEntity upToDateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity upToDateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity upToDateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); assertEquals(Sets.union(expectedExcludedModification1, MODIFICATIONS_TO_EXCLUDE_RN_1), upToDateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude()); assertEquals(Sets.union(expectedExcludedModification2, MODIFICATIONS_TO_EXCLUDE_RN_2), upToDateRootNetworkNodeInfoEntity2.getModificationsUuidsToExclude()); // test duplication on different nodes : node1 -> node2 studyService.duplicateOrInsertNetworkModifications(studyEntity.getId(), secondNode.getId(), studyEntity.getId(), firstNode.getId(), modificationsToDuplicate, USER_ID, StudyConstants.ModificationsActionType.COPY); - upToDateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - upToDateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + upToDateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + upToDateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); assertEquals(expectedExcludedModification1, upToDateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude()); assertEquals(expectedExcludedModification2, upToDateRootNetworkNodeInfoEntity2.getModificationsUuidsToExclude()); } @@ -350,12 +351,12 @@ void testDuplicateStudyTreeWithModificationsToExclude() { NetworkModificationNode secondNode = networkModificationTreeService.createNode(studyEntity, firstNode.getId(), createModificationNodeInfo(NODE_2_NAME), InsertMode.AFTER, null); // root network 0, first node, set some excluded modifications - RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo1Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo1Entity); // root network 1, second node, set some excluded modifications - RootNetworkNodeInfoEntity rootNetwork1NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork1NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork1NodeInfo2Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetwork1NodeInfo2Entity); @@ -371,8 +372,8 @@ void testDuplicateStudyTreeWithModificationsToExclude() { UUID secondNodeDuplicateUuid = networkModificationNodeInfoRepository.findAllByNodeStudyIdAndName(studyEntity.getId(), NODE_2_NAME + " (1)").getFirst().getId(); // get RootNetworkNodeInfoEntity of duplicate node - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeDuplicateUuid, rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeDuplicateUuid, rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeDuplicateUuid, rootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeDuplicateUuid, rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); // assert those values are actually defined from ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP assertEquals(MODIFICATIONS_TO_EXCLUDE_RN_1.stream().map(ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP::get).collect(Collectors.toSet()), duplicateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude()); @@ -395,12 +396,12 @@ void testDuplicateStudyWithModificationsToExclude() { NetworkModificationNode secondNode = networkModificationTreeService.createNode(studyEntity, firstNode.getId(), createModificationNodeInfo(NODE_2_NAME), InsertMode.AFTER, null); // root network 0, first node, set some excluded modifications - RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo1Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo1Entity); // root network 1, second node, set some excluded modifications - RootNetworkNodeInfoEntity rootNetwork1NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork1NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork1NodeInfo2Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetwork1NodeInfo2Entity); @@ -422,8 +423,8 @@ void testDuplicateStudyWithModificationsToExclude() { UUID secondNodeDuplicateUuid = networkModificationNodeInfoRepository.findAllByNodeStudyIdAndName(newStudyUuid, NODE_2_NAME).getFirst().getId(); // get RootNetworkNodeInfoEntity of duplicate node - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeDuplicateUuid, newStudyRootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); - RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeDuplicateUuid, newStudyRootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity1 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeDuplicateUuid, newStudyRootNetworkBasicInfos.get(0).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity duplicateRootNetworkNodeInfoEntity2 = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeDuplicateUuid, newStudyRootNetworkBasicInfos.get(1).rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); // assert those values are actually defined from ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP assertEquals(MODIFICATIONS_TO_EXCLUDE_RN_1.stream().map(ORIGIN_TO_DUPLICATE_MODIFICATION_UUID_MAP::get).collect(Collectors.toSet()), duplicateRootNetworkNodeInfoEntity1.getModificationsUuidsToExclude()); @@ -444,7 +445,7 @@ void testDeleteExcludedModification() { UUID firstNodeUuid = firstNode.getId(); // add some modifications to exclude - RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo1Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo1Entity); @@ -453,7 +454,7 @@ void testDeleteExcludedModification() { List modificationsToRemove = List.of(MODIFICATIONS_TO_EXCLUDE_RN_1.stream().findFirst().orElseThrow()); assertThrows(RuntimeException.class, () -> studyService.deleteNetworkModifications(studyUuid, firstNodeUuid, modificationsToRemove, USER_ID)); - Set excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + Set excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); Set expectedExcludedModifications = MODIFICATIONS_TO_EXCLUDE_RN_1; assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); @@ -461,7 +462,7 @@ void testDeleteExcludedModification() { Mockito.doNothing().when(networkModificationService).deleteModifications(any(), any()); studyService.deleteNetworkModifications(studyUuid, firstNodeUuid, modificationsToRemove, USER_ID); - excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); expectedExcludedModifications = MODIFICATIONS_TO_EXCLUDE_RN_1.stream().filter(uuid -> uuid != modificationsToRemove.getFirst()).collect(Collectors.toSet()); assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); } @@ -482,7 +483,7 @@ void testMoveExcludedModification() { UUID secondNodeUuid = secondNode.getId(); // add some modifications to exclude to node 1 - RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo1Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo1Entity); @@ -492,12 +493,12 @@ void testMoveExcludedModification() { assertThrows(RuntimeException.class, () -> studyService.moveNetworkModifications(studyUuid, firstNodeUuid, firstNodeUuid, modificationsToMove, null, false, USER_ID)); // assert origin node still have all excluded modifications - Set excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + Set excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); Set expectedExcludedModifications = MODIFICATIONS_TO_EXCLUDE_RN_1; assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); // assert target node still have no excluded modifications - excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); expectedExcludedModifications = Collections.emptySet(); assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); @@ -510,12 +511,12 @@ void testMoveExcludedModification() { studyService.moveNetworkModifications(studyUuid, secondNodeUuid, firstNodeUuid, modificationsToMove, null, true, USER_ID); // assert origin node still have all excluded modifications, except the moved one - excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(firstNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); expectedExcludedModifications = MODIFICATIONS_TO_EXCLUDE_RN_1.stream().filter(uuid -> uuid != modificationsToMove.getFirst()).collect(Collectors.toSet()); assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); // assert target node now have the moved modification as excluded one - excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); + excludedModifications = rootNetworkNodeInfoRepository.findWithModificationsToExcludeByNodeInfoIdAndRootNetworkId(secondNodeUuid, rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)).getModificationsUuidsToExclude(); expectedExcludedModifications = new HashSet<>(modificationsToMove); assertThat(expectedExcludedModifications).usingRecursiveComparison().isEqualTo(excludedModifications); } @@ -533,11 +534,11 @@ void testBuildNodeWithExcludedModifications() { NetworkModificationNode secondNode = networkModificationTreeService.createNode(studyEntity, firstNode.getId(), createModificationNodeInfo(NODE_2_NAME), InsertMode.AFTER, null); // add some modifications to exclude - RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(firstNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo1Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_1); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo1Entity); - RootNetworkNodeInfoEntity rootNetwork0NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkNodeInfoEntity rootNetwork0NodeInfo2Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(secondNode.getId(), rootNetworkBasicInfos.getFirst().rootNetworkUuid()).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); rootNetwork0NodeInfo2Entity.setModificationsUuidsToExclude(MODIFICATIONS_TO_EXCLUDE_RN_2); rootNetworkNodeInfoRepository.save(rootNetwork0NodeInfo2Entity); diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index 937f799ffc..56469f2cf2 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -55,8 +55,10 @@ import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.gridsuite.study.server.StudyBusinessErrorCode.MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; @@ -393,10 +395,10 @@ void testCreateRootNetworkConsumer() throws Exception { messageConsumer.accept(new GenericMessage<>("", headers)); // get study from database and check new root network has been created with correct values - StudyEntity updatedStudyEntity = studyRepository.findWithRootNetworksById(studyEntity.getId()).orElseThrow(() -> new StudyException(StudyException.Type.STUDY_NOT_FOUND)); + StudyEntity updatedStudyEntity = studyRepository.findWithRootNetworksById(studyEntity.getId()).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); assertEquals(2, updatedStudyEntity.getRootNetworks().size()); - RootNetworkEntity rootNetworkEntity = updatedStudyEntity.getRootNetworks().stream().filter(rne -> rne.getId().equals(newRootNetworkUuid)).findFirst().orElseThrow(() -> new StudyException(StudyException.Type.ROOT_NETWORK_NOT_FOUND)); + RootNetworkEntity rootNetworkEntity = updatedStudyEntity.getRootNetworks().stream().filter(rne -> rne.getId().equals(newRootNetworkUuid)).findFirst().orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND)); assertEquals(newRootNetworkUuid, rootNetworkEntity.getId()); assertEquals(NETWORK_UUID2, rootNetworkEntity.getNetworkUuid()); assertEquals(NETWORK_ID2, rootNetworkEntity.getNetworkId()); @@ -467,7 +469,7 @@ void testCreateRootNetworkConsumerWithoutRequest() throws Exception { createAndConsumeMessageCaseImport(studyEntity.getId(), rootNetworkInfos, CaseImportAction.ROOT_NETWORK_CREATION); // get study from database and check new root network has been created with correct values - StudyEntity updatedStudyEntity = studyRepository.findWithRootNetworksById(studyEntity.getId()).orElseThrow(() -> new StudyException(StudyException.Type.STUDY_NOT_FOUND)); + StudyEntity updatedStudyEntity = studyRepository.findWithRootNetworksById(studyEntity.getId()).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); assertEquals(1, updatedStudyEntity.getRootNetworks().size()); // corresponding rootNetworkRequestRepository should be emptied when root network creation is done diff --git a/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java b/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java index af4f771453..e6f01c20eb 100644 --- a/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java @@ -53,6 +53,7 @@ import java.util.UUID; import java.util.stream.Stream; +import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_REPORT_DEFAULT_NAME; import static org.gridsuite.study.server.utils.TestUtils.checkReports; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; @@ -168,7 +169,7 @@ private RootNode createRoot() { @Test void testReport(final MockWebServer server) throws Exception { RootNode rootNode = createRoot(); - StudyEntity studyEntity = studyRepository.findById(rootNode.getStudyId()).orElseThrow(() -> new StudyException(StudyException.Type.STUDY_NOT_FOUND)); + StudyEntity studyEntity = studyRepository.findById(rootNode.getStudyId()).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyEntity.getId()); List expectedRootReports = List.of(getNodeReport(ROOT_NODE_REPORT_UUID, rootNode.getId().toString())); @@ -203,7 +204,7 @@ void testReport(final MockWebServer server) throws Exception { @Test void testMultipleReport(final MockWebServer server) throws Exception { RootNode rootNode = createRoot(); - StudyEntity studyEntity = studyRepository.findById(rootNode.getStudyId()).orElseThrow(() -> new StudyException(StudyException.Type.STUDY_NOT_FOUND)); + StudyEntity studyEntity = studyRepository.findById(rootNode.getStudyId()).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyEntity.getId()); NetworkModificationNode node = studyService.createNode(studyEntity.getId(), rootNode.getId(), createModificationNodeInfo("Modification Node"), InsertMode.AFTER, null); NetworkModificationNode child1 = studyService.createNode(studyEntity.getId(), node.getId(), createModificationNodeInfo("Child 1"), InsertMode.AFTER, null); diff --git a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java index e291093415..cd708c75a7 100644 --- a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java @@ -19,6 +19,7 @@ import java.util.UUID; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -59,7 +60,7 @@ void duplicateNadConfigError() { httpEntity, UUID.class)).thenThrow(new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR)); StudyException e = assertThrows(StudyException.class, () -> service.duplicateNadConfig(source)); - assertEquals(StudyException.Type.DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED, + assertEquals(DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED, ReflectionTestUtils.invokeMethod(e, "getType")); } } diff --git a/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java b/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java index 052d7cb61d..2d0a0f53a8 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java @@ -29,7 +29,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.absent; import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.*; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; import static org.gridsuite.study.server.service.client.dynamicsecurityanalysis.DynamicSecurityAnalysisClient.*; diff --git a/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java b/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java index 34e8ee7ad4..6684080877 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java @@ -31,7 +31,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static org.assertj.core.api.Assertions.assertThat; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyException.Type.RUN_DYNAMIC_SIMULATION_FAILED; +import static org.gridsuite.study.server.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; import static org.gridsuite.study.server.service.client.dynamicsimulation.DynamicSimulationClient.*; diff --git a/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java b/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java index 02ab18b534..626b55db6b 100644 --- a/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java @@ -21,7 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.gridsuite.study.server.StudyConstants.DYNAWO_PROVIDER; -import static org.gridsuite.study.server.StudyException.Type.DYNAMIC_SECURITY_ANALYSIS_RUNNING; +import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; import static org.gridsuite.study.server.utils.TestUtils.assertStudyException; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.mockito.ArgumentMatchers.any; diff --git a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java index c569e053cb..7f825be9b3 100644 --- a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java @@ -15,6 +15,7 @@ import okio.Buffer; import org.assertj.core.api.ThrowableAssert; import org.assertj.core.api.ThrowableAssertAlternative; +import org.gridsuite.study.server.StudyBusinessErrorCode; import org.gridsuite.study.server.StudyException; import org.gridsuite.study.server.dto.Report; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; @@ -234,7 +235,7 @@ public static void checkReports(List reports, List expectedRepor reports.forEach(r -> assertThat(r, new MatcherReport(expectedReports.get(reports.indexOf(r))))); } - public static void assertStudyException(ThrowableAssert.ThrowingCallable throwingCallable, StudyException.Type type, String message) { + public static void assertStudyException(ThrowableAssert.ThrowingCallable throwingCallable, StudyBusinessErrorCode type, String message) { ThrowableAssertAlternative throwableAssert = Assertions.assertThatExceptionOfType(StudyException.class) .isThrownBy(throwingCallable); throwableAssert.extracting("type").isEqualTo(type); From 151b9efde825245b0f3cc798a8a4a9ea3f56db39 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Wed, 5 Nov 2025 18:04:36 +0100 Subject: [PATCH 2/8] feat: implement new exception handler - adapt StudyException to extend AbstractBusinessException - adapt RestResponseEntityExceptionHandler to extend AbstractBaseRestExceptionHandler - fix tests Signed-off-by: Joris Mancini --- pom.xml | 6 + .../server/PropertyServerNameProvider.java | 29 +++ .../RestResponseEntityExceptionHandler.java | 225 ++++++------------ .../study/server/StudyException.java | 23 +- .../study/server/DiagramGridLayoutTest.java | 6 +- .../study/server/NetworkMapTest.java | 8 +- .../study/server/NetworkModificationTest.java | 46 ++-- .../server/NetworkModificationTreeTest.java | 34 +-- .../study/server/SecurityAnalysisTest.java | 11 +- .../study/server/SensitivityAnalysisTest.java | 19 +- .../study/server/SingleLineDiagramTest.java | 13 +- .../org/gridsuite/study/server/StudyTest.java | 22 +- .../server/rootnetworks/RootNetworkTest.java | 9 +- .../service/SingleLineDiagramServiceTest.java | 4 +- .../study/server/utils/TestUtils.java | 2 +- 15 files changed, 236 insertions(+), 221 deletions(-) create mode 100644 src/main/java/org/gridsuite/study/server/PropertyServerNameProvider.java diff --git a/pom.xml b/pom.xml index 349c9b001d..ba9dfd2195 100644 --- a/pom.xml +++ b/pom.xml @@ -44,6 +44,7 @@ 44.0.0 1.12.0 + 1.33.0-SNAPSHOT org.gridsuite.study.server 5.0.0-alpha.14 1.0.5 @@ -83,6 +84,11 @@ + + com.powsybl + powsybl-ws-commons + 1.33.0-SNAPSHOT + com.squareup.okhttp3 diff --git a/src/main/java/org/gridsuite/study/server/PropertyServerNameProvider.java b/src/main/java/org/gridsuite/study/server/PropertyServerNameProvider.java new file mode 100644 index 0000000000..6073b6779b --- /dev/null +++ b/src/main/java/org/gridsuite/study/server/PropertyServerNameProvider.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.study.server; + +import com.powsybl.ws.commons.error.ServerNameProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * @author Mancini Joris {@literal } + */ +@Component +public class PropertyServerNameProvider implements ServerNameProvider { + + private final String name; + + public PropertyServerNameProvider(@Value("${spring.application.name:explore-server}") String name) { + this.name = name; + } + + @Override + public String serverName() { + return name; + } +} diff --git a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java index 10f9270ce6..247f787970 100644 --- a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java +++ b/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java @@ -4,165 +4,94 @@ */ package org.gridsuite.study.server; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.TypeMismatchException; +import com.powsybl.ws.commons.error.AbstractBaseRestExceptionHandler; +import com.powsybl.ws.commons.error.ServerNameProvider; +import lombok.NonNull; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.server.ServerWebInputException; - -import static org.gridsuite.study.server.StudyBusinessErrorCode.MAX_NODE_BUILDS_EXCEEDED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.NOT_ALLOWED; /** * @author Abdelsalem Hedhili */ @ControllerAdvice -public class RestResponseEntityExceptionHandler { - private static final Logger LOGGER = LoggerFactory.getLogger(RestResponseEntityExceptionHandler.class); - private static final String MESSAGE = "Caught in handler"; +public class RestResponseEntityExceptionHandler extends AbstractBaseRestExceptionHandler { - @ExceptionHandler(StudyException.class) - protected ResponseEntity handleStudyException(StudyException exception) { - if (LOGGER.isErrorEnabled()) { - LOGGER.error(MESSAGE, exception); - } - StudyBusinessErrorCode type = exception.getType(); - return switch (type) { - case ELEMENT_NOT_FOUND, - STUDY_NOT_FOUND, - NODE_NOT_FOUND, - ROOT_NETWORK_NOT_FOUND, - LOADFLOW_NOT_FOUND, - SECURITY_ANALYSIS_NOT_FOUND, - SENSITIVITY_ANALYSIS_NOT_FOUND, - SHORT_CIRCUIT_ANALYSIS_NOT_FOUND, - DYNAMIC_SIMULATION_NOT_FOUND, - DYNAMIC_MAPPING_NOT_FOUND, - EQUIPMENT_NOT_FOUND, - VOLTAGE_INIT_PARAMETERS_NOT_FOUND, - SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, - LOADFLOW_PARAMETERS_NOT_FOUND, - SENSITIVITY_ANALYSIS_PARAMETERS_NOT_FOUND, - STATE_ESTIMATION_NOT_FOUND, - PCC_MIN_NOT_FOUND, - STATE_ESTIMATION_PARAMETERS_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_PROVIDER_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, - DYNAMIC_SECURITY_ANALYSIS_NOT_FOUND - -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(exception.getType()); - case CASE_NOT_FOUND -> ResponseEntity.status(HttpStatus.FAILED_DEPENDENCY).body(exception.getMessage()); - case STUDY_ALREADY_EXISTS -> ResponseEntity.status(HttpStatus.CONFLICT).body(type); - case LOADFLOW_NOT_RUNNABLE, - LOADFLOW_RUNNING, - SECURITY_ANALYSIS_RUNNING, - SENSITIVITY_ANALYSIS_RUNNING, - DYNAMIC_SIMULATION_RUNNING, - SHORT_CIRCUIT_ANALYSIS_RUNNING, - VOLTAGE_INIT_RUNNING, - STATE_ESTIMATION_RUNNING, - PCC_MIN_RUNNING - -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(type); - case NOT_ALLOWED, - BAD_NODE_TYPE, - NODE_NAME_ALREADY_EXIST, - ROOT_NETWORK_DELETE_FORBIDDEN, - MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED, - MAXIMUM_TAG_LENGTH_EXCEEDED, - TOO_MANY_NAD_CONFIGS, - TOO_MANY_MAP_CARDS, - MOVE_NETWORK_MODIFICATION_FORBIDDEN - -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(exception.getMessage()); - case CANT_DELETE_ROOT_NODE -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(NOT_ALLOWED); - case CREATE_NETWORK_MODIFICATION_FAILED, - UPDATE_NETWORK_MODIFICATION_FAILED, - DELETE_NETWORK_MODIFICATION_FAILED, - BAD_MODIFICATION_TYPE, - BAD_JSON_FORMAT, - TIME_SERIES_BAD_TYPE, - TIMELINE_BAD_TYPE, - BAD_PARAMETER - -> ResponseEntity.status(HttpStatus.BAD_REQUEST).body(exception.getMessage()); - case NETWORK_NOT_FOUND, - NETWORK_INDEXATION_FAILED, - NODE_NOT_BUILT, - DELETE_EQUIPMENT_FAILED, - DELETE_NODE_FAILED, - DELETE_STUDY_FAILED, - GET_MODIFICATIONS_FAILED, - GET_NETWORK_ELEMENT_FAILED, - SENSITIVITY_ANALYSIS_ERROR, - SHORT_CIRCUIT_ANALYSIS_ERROR, - NODE_BUILD_ERROR, URI_SYNTAX, - CREATE_VOLTAGE_INIT_PARAMETERS_FAILED, - UPDATE_VOLTAGE_INIT_PARAMETERS_FAILED, - STUDY_INDEXATION_FAILED, - STUDY_CHECK_INDEXATION_FAILED, - UPDATE_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_SECURITY_ANALYSIS_PARAMETERS_FAILED, - LOADFLOW_ERROR, - GET_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_LOADFLOW_PARAMETERS_FAILED, - UPDATE_LOADFLOW_PARAMETERS_FAILED, - GET_LOADFLOW_PARAMETERS_FAILED, - DELETE_LOADFLOW_PARAMETERS_FAILED, - GET_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - UPDATE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - DELETE_SENSITIVITY_ANALYSIS_PARAMETERS_FAILED, - ROOT_NETWORK_CREATION_FAILED, - CREATE_STATE_ESTIMATION_PARAMETERS_FAILED, - UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED, - DELETE_STATE_ESTIMATION_PARAMETERS_FAILED, - GET_STATE_ESTIMATION_PARAMETERS_FAILED, - PCC_MIN_ERROR, - GET_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_FAILED, - GET_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED, - UPDATE_DYNAMIC_SECURITY_ANALYSIS_PROVIDER_FAILED, - GET_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - CREATE_DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PARAMETERS_FAILED, - RUN_DYNAMIC_SECURITY_ANALYSIS_FAILED, - INVALIDATE_DYNAMIC_SECURITY_ANALYSIS_FAILED, - UPDATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - DUPLICATE_DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_FAILED, - UPDATE_SPREADSHEET_CONFIG_FAILED - -> ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(exception.getMessage()); - case SVG_NOT_FOUND, - NO_VOLTAGE_INIT_RESULTS_FOR_NODE, - NO_VOLTAGE_INIT_MODIFICATIONS_GROUP_FOR_NODE - -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(exception.getMessage()); - case UNKNOWN_NOTIFICATION_TYPE, - UNKNOWN_ACTION_TYPE, - MISSING_PARAMETER - -> ResponseEntity.status(HttpStatus.BAD_REQUEST).body(exception.getType()); - case NOT_IMPLEMENTED -> ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body(exception.getMessage()); - case MAX_NODE_BUILDS_EXCEEDED -> ResponseEntity.status(HttpStatus.FORBIDDEN).body(MAX_NODE_BUILDS_EXCEEDED + " " + exception.getMessage()); - case DIAGRAM_GRID_LAYOUT_NOT_FOUND -> ResponseEntity.noContent().build(); - default -> ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); - }; + protected RestResponseEntityExceptionHandler(ServerNameProvider serverNameProvider) { + super(serverNameProvider); } - @ExceptionHandler(ServerWebInputException.class) - protected ResponseEntity handleServerWebInputException(ServerWebInputException exception) { - if (LOGGER.isErrorEnabled()) { - LOGGER.error(MESSAGE, exception); - } - Throwable cause = exception.getCause(); - if (cause instanceof TypeMismatchException && cause.getCause() != null && cause.getCause() != cause) { - cause = cause.getCause(); - } - return ResponseEntity.status(exception.getStatusCode()).body(cause.getMessage()); + @Override + protected @NonNull StudyBusinessErrorCode getBusinessCode(StudyException e) { + return (StudyBusinessErrorCode) e.getBusinessErrorCode(); } - @ExceptionHandler(TypeMismatchException.class) - protected ResponseEntity handleTypeMismatchException(TypeMismatchException exception) { - if (LOGGER.isErrorEnabled()) { - LOGGER.error(MESSAGE, exception); - } - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(exception.getCause().getMessage()); + @Override + protected HttpStatus mapStatus(StudyBusinessErrorCode studyBusinessErrorCode) { + return switch (studyBusinessErrorCode) { + case ELEMENT_NOT_FOUND, + STUDY_NOT_FOUND, + NODE_NOT_FOUND, + ROOT_NETWORK_NOT_FOUND, + LOADFLOW_NOT_FOUND, + SECURITY_ANALYSIS_NOT_FOUND, + SENSITIVITY_ANALYSIS_NOT_FOUND, + SHORT_CIRCUIT_ANALYSIS_NOT_FOUND, + DYNAMIC_SIMULATION_NOT_FOUND, + DYNAMIC_MAPPING_NOT_FOUND, + EQUIPMENT_NOT_FOUND, + VOLTAGE_INIT_PARAMETERS_NOT_FOUND, + SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, + LOADFLOW_PARAMETERS_NOT_FOUND, + SENSITIVITY_ANALYSIS_PARAMETERS_NOT_FOUND, + STATE_ESTIMATION_NOT_FOUND, + PCC_MIN_NOT_FOUND, + STATE_ESTIMATION_PARAMETERS_NOT_FOUND, + DYNAMIC_SECURITY_ANALYSIS_DEFAULT_PROVIDER_NOT_FOUND, + DYNAMIC_SECURITY_ANALYSIS_PROVIDER_NOT_FOUND, + DYNAMIC_SECURITY_ANALYSIS_PARAMETERS_NOT_FOUND, + DYNAMIC_SECURITY_ANALYSIS_NOT_FOUND, + SVG_NOT_FOUND, + NO_VOLTAGE_INIT_RESULTS_FOR_NODE, + NO_VOLTAGE_INIT_MODIFICATIONS_GROUP_FOR_NODE + -> HttpStatus.NOT_FOUND; + case CASE_NOT_FOUND -> HttpStatus.FAILED_DEPENDENCY; + case STUDY_ALREADY_EXISTS -> HttpStatus.CONFLICT; + case LOADFLOW_NOT_RUNNABLE, + LOADFLOW_RUNNING, + SECURITY_ANALYSIS_RUNNING, + SENSITIVITY_ANALYSIS_RUNNING, + DYNAMIC_SIMULATION_RUNNING, + SHORT_CIRCUIT_ANALYSIS_RUNNING, + VOLTAGE_INIT_RUNNING, + STATE_ESTIMATION_RUNNING, + PCC_MIN_RUNNING, + NOT_ALLOWED, + BAD_NODE_TYPE, + NODE_NAME_ALREADY_EXIST, + ROOT_NETWORK_DELETE_FORBIDDEN, + MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED, + MAXIMUM_TAG_LENGTH_EXCEEDED, + TOO_MANY_NAD_CONFIGS, + TOO_MANY_MAP_CARDS, + MOVE_NETWORK_MODIFICATION_FORBIDDEN, + CANT_DELETE_ROOT_NODE, + MAX_NODE_BUILDS_EXCEEDED + -> HttpStatus.FORBIDDEN; + case CREATE_NETWORK_MODIFICATION_FAILED, + UPDATE_NETWORK_MODIFICATION_FAILED, + DELETE_NETWORK_MODIFICATION_FAILED, + BAD_MODIFICATION_TYPE, + BAD_JSON_FORMAT, + TIME_SERIES_BAD_TYPE, + TIMELINE_BAD_TYPE, + BAD_PARAMETER, + UNKNOWN_NOTIFICATION_TYPE, + UNKNOWN_ACTION_TYPE, + MISSING_PARAMETER + -> HttpStatus.BAD_REQUEST; + case NOT_IMPLEMENTED -> HttpStatus.NOT_IMPLEMENTED; + case DIAGRAM_GRID_LAYOUT_NOT_FOUND -> HttpStatus.NO_CONTENT; + default -> HttpStatus.INTERNAL_SERVER_ERROR; + }; } } diff --git a/src/main/java/org/gridsuite/study/server/StudyException.java b/src/main/java/org/gridsuite/study/server/StudyException.java index f8b5a58de0..815ff2d64d 100644 --- a/src/main/java/org/gridsuite/study/server/StudyException.java +++ b/src/main/java/org/gridsuite/study/server/StudyException.java @@ -6,26 +6,31 @@ */ package org.gridsuite.study.server; +import com.powsybl.ws.commons.error.AbstractBusinessException; +import com.powsybl.ws.commons.error.BusinessErrorCode; +import lombok.NonNull; + import java.util.Objects; /** * @author Abdelsalem Hedhili */ -public class StudyException extends RuntimeException { +public class StudyException extends AbstractBusinessException { - private final StudyBusinessErrorCode type; + private final StudyBusinessErrorCode errorCode; - public StudyException(StudyBusinessErrorCode type) { - super(Objects.requireNonNull(type.name())); - this.type = type; + public StudyException(StudyBusinessErrorCode errorCode) { + super(Objects.requireNonNull(errorCode.name())); + this.errorCode = errorCode; } - public StudyException(StudyBusinessErrorCode type, String message) { + public StudyException(StudyBusinessErrorCode errorCode, String message) { super(message); - this.type = type; + this.errorCode = errorCode; } - StudyBusinessErrorCode getType() { - return type; + @Override + public @NonNull BusinessErrorCode getBusinessErrorCode() { + return errorCode; } } diff --git a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java index ca4d81b2f6..97186f3d64 100644 --- a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java +++ b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java @@ -192,7 +192,7 @@ void testDeleteDiagramGridLayoutWithError() { studyConfigService.deleteDiagramGridLayout(diagramGridLayoutUuid); }); - assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getBusinessErrorCode()); wireMockServer.stubFor(WireMock.delete(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout/" + diagramGridLayoutUuid) .willReturn(WireMock.serverError())); @@ -213,7 +213,7 @@ void testSaveDiagramGridLayoutWithError() { studyConfigService.saveDiagramGridLayout(diagramGridLayout); }); - assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getBusinessErrorCode()); wireMockServer.stubFor(WireMock.post(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout") .willReturn(WireMock.serverError())); @@ -235,7 +235,7 @@ void testUpdateDiagramGridLayoutWithError() { studyConfigService.updateDiagramGridLayout(diagramGridLayoutUuid, diagramGridLayout); }); - assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getType()); + assertEquals(DIAGRAM_GRID_LAYOUT_NOT_FOUND, exception.getBusinessErrorCode()); wireMockServer.stubFor(WireMock.put(DELIMITER + STUDY_CONFIG_API_VERSION + "/diagram-grid-layout/" + diagramGridLayoutUuid) .willReturn(WireMock.serverError())); diff --git a/src/test/java/org/gridsuite/study/server/NetworkMapTest.java b/src/test/java/org/gridsuite/study/server/NetworkMapTest.java index e5702c723b..7221895304 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkMapTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkMapTest.java @@ -13,6 +13,7 @@ import com.powsybl.commons.exceptions.UncheckedInterruptedException; import com.powsybl.iidm.network.TwoSides; import com.powsybl.loadflow.LoadFlowParameters; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -763,12 +764,15 @@ private MvcResult getNetworkElementInfosNotFound(UUID studyUuid, UUID rootNetwor private void getNetworkElementInfosWithError(UUID studyUuid, UUID rootNetworkUuid, UUID rootNodeUuid, String elementType, String infoType, String elementId) throws Exception { UUID stubUuid = wireMockUtils.stubNetworkElementInfosGetWithError(NETWORK_UUID_STRING, elementType, infoType, elementId); - mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/elements/{elementId}", studyUuid, rootNetworkUuid, rootNodeUuid, elementId) + var result = mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/elements/{elementId}", studyUuid, rootNetworkUuid, rootNodeUuid, elementId) .queryParam(QUERY_PARAM_ELEMENT_TYPE, elementType) .queryParam(QUERY_PARAM_INFO_TYPE, infoType) .queryParam(String.format(QUERY_FORMAT_OPTIONAL_PARAMS, QUERY_PARAM_DC_POWERFACTOR), Double.toString(LoadFlowParameters.DEFAULT_DC_POWER_FACTOR)) ) - .andExpectAll(status().isInternalServerError(), content().string("Internal Server Error")); + .andExpect(status().isInternalServerError()) + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals("Internal Server Error", problemDetail.getDetail()); wireMockUtils.verifyNetworkElementInfosGet(stubUuid, NETWORK_UUID_STRING, elementType, infoType, elementId); } diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java index 1d0a8387d9..7921a9dea0 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java @@ -21,6 +21,7 @@ import com.powsybl.iidm.serde.XMLImporter; import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -77,7 +78,7 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.StudyConstants.HEADER_ERROR_MESSAGE; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_RECEIVER; import static org.gridsuite.study.server.utils.ImpactUtils.createModificationResultWithElementImpact; @@ -479,7 +480,9 @@ void testBuildQuotaExceeded() throws Exception { .contentType(APPLICATION_JSON) ).andExpect(status().isForbidden()) .andReturn(); - assertTrue(result.getResponse().getContentAsString().equalsIgnoreCase("MAX_NODE_BUILDS_EXCEEDED max allowed built nodes : 1")); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(MAX_NODE_BUILDS_EXCEEDED.value(), problemDetail.getBusinessErrorCode()); + assertEquals("max allowed built nodes : 1", problemDetail.getDetail()); wireMockUtils.verifyGetRequest(userProfileQuotaExceededStubId, "/v1/users/" + userId + "/profile/max-builds", Map.of()); } @@ -1740,21 +1743,23 @@ void testLineSplitWithVoltageLevel() throws Exception { String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); stubPostId = wireMockUtils.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); stubPutId = wireMockUtils.stubNetworkModificationPutWithBodyAndError(MODIFICATION_UUID, badBody); - mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) + var result = mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) .content(badBody).contentType(MediaType.APPLICATION_JSON) .header(USER_ID_HEADER, userId)) - .andExpectAll( - status().isBadRequest(), - content().string("400 BAD_REQUEST")); + .andExpect(status().isBadRequest()) + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(CREATE_NETWORK_MODIFICATION_FAILED.value(), problemDetail.getBusinessErrorCode()); checkUpdateModelsStatusMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); - mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) + result = mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) .content(badBody).contentType(MediaType.APPLICATION_JSON) .header(USER_ID_HEADER, userId)) - .andExpectAll( - status().isBadRequest(), - content().string("400 BAD_REQUEST")); + .andExpect(status().isBadRequest()) + .andReturn(); + problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(UPDATE_NETWORK_MODIFICATION_FAILED.value(), problemDetail.getBusinessErrorCode()); checkEquipmentUpdatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); wireMockUtils.verifyNetworkModificationPost(stubPostId, modificationBodyJson); @@ -3018,10 +3023,13 @@ void testCreateModificationWithErrors() throws Exception { // String message error String contentErrorMessage = "Internal Server Error"; UUID stubId = wireMockUtils.stubNetworkModificationPostWithError(modificationBodyJson); - mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) + var result = mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) .content(jsonCreateLoadInfos).contentType(MediaType.APPLICATION_JSON) .header(USER_ID_HEADER, userId)) - .andExpectAll(status().isBadRequest(), content().string(contentErrorMessage)); + .andExpect(status().isBadRequest()) + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(CREATE_NETWORK_MODIFICATION_FAILED.value(), problemDetail.getBusinessErrorCode()); checkUpdateModelsStatusMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); @@ -3029,10 +3037,13 @@ void testCreateModificationWithErrors() throws Exception { // Json message error stubId = wireMockUtils.stubNetworkModificationPostWithError(modificationBodyJson, String.format("{\"message\" : \"%s\"}", contentErrorMessage)); - mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) + result = mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) .content(jsonCreateLoadInfos).contentType(MediaType.APPLICATION_JSON) .header(USER_ID_HEADER, userId)) - .andExpectAll(status().isBadRequest(), content().string(contentErrorMessage)); + .andExpect(status().isBadRequest()) + .andReturn(); + problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(CREATE_NETWORK_MODIFICATION_FAILED.value(), problemDetail.getBusinessErrorCode()); checkUpdateModelsStatusMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); @@ -3041,10 +3052,13 @@ void testCreateModificationWithErrors() throws Exception { // Bad json message error contentErrorMessage = String.format("{\"foo\" : \"%s\"}", contentErrorMessage); stubId = wireMockUtils.stubNetworkModificationPostWithError(modificationBodyJson, contentErrorMessage); - mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) + result = mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) .content(jsonCreateLoadInfos).contentType(MediaType.APPLICATION_JSON) .header(USER_ID_HEADER, userId)) - .andExpectAll(status().isBadRequest(), content().string(contentErrorMessage)); + .andExpect(status().isBadRequest()) + .andReturn(); + problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(CREATE_NETWORK_MODIFICATION_FAILED.value(), problemDetail.getBusinessErrorCode()); checkUpdateModelsStatusMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java index 8e1a40efe7..941d3706b2 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java @@ -20,6 +20,7 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.VariantManager; import com.powsybl.network.store.client.NetworkStoreService; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -589,14 +590,14 @@ void testNodeCreationRules() throws Exception { .contentType(MediaType.APPLICATION_JSON) .content(objectWriter.writeValueAsString(securityNode)) .header(USER_ID_HEADER, "userId")) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); // Argument type mismatch is handled as a server error by spring /* RULE: Security node CANNOT be inserted after a construction node */ mockMvc.perform(post("/v1/studies/{studyUuid}/tree/nodes/{id}?mode={insertMode}", root.getStudyId(), newConstructionNode, InsertMode.AFTER) .contentType(MediaType.APPLICATION_JSON) .content(objectWriter.writeValueAsString(securityNode)) .header(USER_ID_HEADER, "userId")) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); // Argument type mismatch is handled as a server error by spring } private static final String ROOT_NETWORK_UUID = "00000000-8cf0-11bd-b23e-10b96e4ef00d"; @@ -1502,7 +1503,7 @@ private void createNodeFail(UUID studyUuid, AbstractNode parentNode, AbstractNod .contentType(MediaType.APPLICATION_JSON) .content(objectWriter.writeValueAsString(newNode)) .header(USER_ID_HEADER, "userId")) - .andExpect(status().isBadRequest()); + .andExpect(status().isInternalServerError()); } private void createNodeForbidden(UUID studyUuid, AbstractNode parentNode, AbstractNode newNode) throws Exception { @@ -1530,11 +1531,12 @@ void testGetNetworkModificationsNode() throws Exception { UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), BuildStatus.BUILT); createNode(root.getStudyId(), root, node, userId); - String bodyError = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId())) + var result = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId())) .andExpect(status().isInternalServerError()) - .andReturn().getResponse().getContentAsString(); - - assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(GET_MODIFICATIONS_FAILED.value(), problemDetail.getBusinessErrorCode()); + assertEquals(HttpStatus.NOT_FOUND.toString(), problemDetail.getDetail()); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId())) @@ -1559,11 +1561,12 @@ void testGetNetworkModificationsToRestoreByNode() throws Exception { UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), BuildStatus.BUILT); createNode(root.getStudyId(), root, node, userId); - String bodyError = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId(), true)) + var result = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId(), true)) .andExpect(status().isInternalServerError()) - .andReturn().getResponse().getContentAsString(); - - assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(GET_MODIFICATIONS_FAILED.value(), problemDetail.getBusinessErrorCode()); + assertEquals(HttpStatus.NOT_FOUND.toString(), problemDetail.getDetail()); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId(), true)) @@ -1603,11 +1606,12 @@ void testGetNetworkModificationsToStashByNode() throws Exception { UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), BuildStatus.BUILT); createNode(root.getStudyId(), root, node, userId); - String bodyError = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId(), false)) + var result = mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), node.getId(), false)) .andExpect(status().isInternalServerError()) - .andReturn().getResponse().getContentAsString(); - - assertEquals(new StudyException(GET_MODIFICATIONS_FAILED, HttpStatus.NOT_FOUND.toString()).getMessage(), bodyError); + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(GET_MODIFICATIONS_FAILED.value(), problemDetail.getBusinessErrorCode()); + assertEquals(HttpStatus.NOT_FOUND.toString(), problemDetail.getDetail()); // No network modification for a root node mockMvc.perform(get("/v1/studies/{studyUuid}/nodes/{nodeUuid}/network-modifications", root.getStudyId(), root.getId(), false)) diff --git a/src/test/java/org/gridsuite/study/server/SecurityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/SecurityAnalysisTest.java index 408c1505c1..3f1bdda9bc 100644 --- a/src/test/java/org/gridsuite/study/server/SecurityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/SecurityAnalysisTest.java @@ -87,7 +87,7 @@ class SecurityAnalysisTest { private static final String SECURITY_ANALYSIS_RESULT_UUID = "f3a85c9b-9594-4e55-8ec7-07ea965d24eb"; private static final String SECURITY_ANALYSIS_OTHER_NODE_RESULT_UUID = "11111111-9594-4e55-8ec7-07ea965d24eb"; private static final String SECURITY_ANALYSIS_ERROR_NODE_RESULT_UUID = "22222222-9594-4e55-8ec7-07ea965d24eb"; - private static final String NOT_FOUND_SECURITY_ANALYSIS_UUID = "e3a85c9b-9594-4e55-8ec7-07ea965d24eb"; + private static final String NOT_FOUND_NODE_UUID = "e3a85c9b-9594-4e55-8ec7-07ea965d24eb"; private static final String CONTINGENCY_LIST_NAME = "ls"; private String limitTypeJson; private static final String SECURITY_ANALYSIS_N_RESULT_JSON = "{\"status\":\"CONVERGED\",\"limitViolationsResult\":{\"limitViolations\":[{\"subjectId\":\"l3\",\"limitType\":\"CURRENT\",\"acceptableDuration\":1200,\"limit\":10.0,\"limitReduction\":1.0,\"value\":11.0,\"side\":\"ONE\"}],\"actionsTaken\":[]},\"networkResult\":{\"branchResults\":[],\"busResults\":[],\"threeWindingsTransformerResults\":[]}}"; @@ -470,7 +470,14 @@ private void testSecurityAnalysisWithRootNetworkUuidAndNodeUuid(final MockWebSer String resultAsString; // security analysis not found - mockMvc.perform(get("/v1/security-analysis/results/{resultUuid}", NOT_FOUND_SECURITY_ANALYSIS_UUID)).andExpect(status().isNotFound()); + mockMvc.perform( + get( + "/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/security-analysis/result?resultType={resultType}", + studyUuid, + rootNetworkUuid, + NOT_FOUND_NODE_UUID, + SecurityAnalysisResultType.N)) + .andExpect(status().isNotFound()); // run security analysis MockHttpServletRequestBuilder requestBuilder = post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/security-analysis/run?contingencyListName={contingencyListName}", diff --git a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java index 147f39dee0..28af7df3dc 100644 --- a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java @@ -13,6 +13,7 @@ import com.github.tomakehurst.wiremock.client.WireMock; import com.powsybl.commons.exceptions.UncheckedInterruptedException; import com.powsybl.sensitivity.SensitivityFunctionType; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -63,6 +64,7 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; @@ -92,7 +94,7 @@ class SensitivityAnalysisTest { private static final String SENSITIVITY_ANALYSIS_RESULT_UUID = "b3a84c9b-9594-4e85-8ec7-07ea965d24eb"; private static final String SENSITIVITY_ANALYSIS_OTHER_NODE_RESULT_UUID = "11131111-8594-4e55-8ef7-07ea965d24eb"; private static final String SENSITIVITY_ANALYSIS_ERROR_NODE_RESULT_UUID = "25222222-9994-4e55-8ec7-07ea965d24eb"; - private static final String NOT_FOUND_SENSITIVITY_ANALYSIS_UUID = "a3a80c9b-9594-4e55-8ec7-07ea965d24eb"; + private static final String NOT_FOUND_NODE_UUID = "a3a80c9b-9594-4e55-8ec7-07ea965d24eb"; private static final String FAKE_RESULT_JSON = "fake result json"; private static final String SENSITIVITY_ANALYSIS_STATUS_JSON = "{\"status\":\"COMPLETED\"}"; @@ -317,7 +319,13 @@ public MockResponse dispatch(RecordedRequest request) { private void testSensitivityAnalysisWithRootNetworkUuidAndNodeUuid(final MockWebServer server, UUID studyUuid, UUID rootNetworkUuid, UUID nodeUuid, UUID resultUuid) throws Exception { // sensitivity analysis not found - mockMvc.perform(get("/v1/sensitivity-analysis/results/{resultUuid}", NOT_FOUND_SENSITIVITY_ANALYSIS_UUID)).andExpect(status().isNotFound()); + mockMvc.perform( + get( + "/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result?selector=subjectId", + studyUuid, + rootNetworkUuid, + NOT_FOUND_NODE_UUID)) + .andExpect(status().isNotFound()); // run sensitivity analysis mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/run", studyUuid, rootNetworkUuid, nodeUuid) @@ -363,11 +371,14 @@ private void testSensitivityAnalysisWithRootNetworkUuidAndNodeUuid(final MockWeb .build()); // error case - mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result/csv?selector=fakeJsonSelector", studyUuid, rootNetworkUuid, UUID.randomUUID()) + var result = mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result/csv?selector=fakeJsonSelector", studyUuid, rootNetworkUuid, UUID.randomUUID()) .contentType(MediaType.APPLICATION_JSON) .header("userId", "userId") .content(content)) - .andExpectAll(status().isNotFound(), content().string("\"ROOT_NETWORK_NOT_FOUND\"")); + .andExpect(status().isNotFound()) + .andReturn(); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(ROOT_NETWORK_NOT_FOUND.value(), problemDetail.getBusinessErrorCode()); // csv export with no filter mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result/csv?selector=fakeJsonSelector", studyUuid, rootNetworkUuid, nodeUuid) diff --git a/src/test/java/org/gridsuite/study/server/SingleLineDiagramTest.java b/src/test/java/org/gridsuite/study/server/SingleLineDiagramTest.java index e3aee0c697..e82c79bf56 100644 --- a/src/test/java/org/gridsuite/study/server/SingleLineDiagramTest.java +++ b/src/test/java/org/gridsuite/study/server/SingleLineDiagramTest.java @@ -15,7 +15,6 @@ import com.powsybl.loadflow.LoadFlowParameters; import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.model.VariantInfos; -import jakarta.servlet.ServletException; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -467,16 +466,20 @@ void testDiagramsAndGraphics(final MockWebServer server) throws Exception { assertTrue(TestUtils.getRequestsDone(1, server).contains("/v1/substation-svg-and-metadata/%s/substationNotFoundId?useName=false¢erLabel=false&diagonalLabel=false&topologicalColoring=false&substationLayout=horizontal&language=en".formatted(NETWORK_UUID_STRING))); // Test other errors when getting voltage level or substation svg - assertThrows(ServletException.class, () -> mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "voltageLevelErrorId"))); + mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "voltageLevelErrorId")) + .andExpectAll(status().isInternalServerError()); assertTrue(TestUtils.getRequestsDone(1, server).contains("/v1/svg/%s/voltageLevelErrorId?useName=false¢erLabel=false&diagonalLabel=false&topologicalColoring=false&language=en".formatted(NETWORK_UUID_STRING))); - assertThrows(ServletException.class, () -> mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg-and-metadata?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "voltageLevelErrorId"))); + mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg-and-metadata?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "voltageLevelErrorId")) + .andExpectAll(status().is4xxClientError()); assertTrue(TestUtils.getRequestsDone(1, server).contains("/v1/svg-and-metadata/%s/voltageLevelErrorId?useName=false¢erLabel=false&diagonalLabel=false&topologicalColoring=false&sldDisplayMode=%s&language=en".formatted(NETWORK_UUID_STRING, StudyConstants.SldDisplayMode.STATE_VARIABLE))); - assertThrows(ServletException.class, () -> mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "substationErrorId"))); + mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "substationErrorId")) + .andExpectAll(status().is4xxClientError()); assertTrue(TestUtils.getRequestsDone(1, server).contains("/v1/substation-svg/%s/substationErrorId?useName=false¢erLabel=false&diagonalLabel=false&topologicalColoring=false&substationLayout=horizontal".formatted(NETWORK_UUID_STRING))); - assertThrows(ServletException.class, () -> mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg-and-metadata?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "substationErrorId"))); + mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg-and-metadata?useName=false", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid, "substationErrorId")) + .andExpectAll(status().isInternalServerError()); assertTrue(TestUtils.getRequestsDone(1, server).contains("/v1/substation-svg-and-metadata/%s/substationErrorId?useName=false¢erLabel=false&diagonalLabel=false&topologicalColoring=false&substationLayout=horizontal&language=en".formatted(NETWORK_UUID_STRING))); } diff --git a/src/test/java/org/gridsuite/study/server/StudyTest.java b/src/test/java/org/gridsuite/study/server/StudyTest.java index 12874361d9..ee7c6ad803 100644 --- a/src/test/java/org/gridsuite/study/server/StudyTest.java +++ b/src/test/java/org/gridsuite/study/server/StudyTest.java @@ -24,6 +24,7 @@ import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; import com.powsybl.network.store.model.VariantInfos; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import lombok.SneakyThrows; import mockwebserver3.Dispatcher; import mockwebserver3.MockResponse; @@ -811,11 +812,13 @@ void testSearch(final MockWebServer mockWebServer) throws Exception { equipmentInfos = mapper.readValue(resultAsString, new TypeReference<>() { }); assertThat(equipmentInfos, new MatcherJson<>(mapper, linesInfos)); - mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/search?userInput={request}&fieldSelector=bogus", + var result = mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/search?userInput={request}&fieldSelector=bogus", studyUuid, firstRootNetworkUuid, rootNodeId, "B").header(USER_ID_HEADER, "userId")) - .andExpectAll(status().isBadRequest(), - content().string("Enum unknown entry 'bogus' should be among NAME, ID")) + .andExpect(status().isInternalServerError()) .andReturn(); + var problemDetail = mapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertNotNull(problemDetail.getDetail()); + assertTrue(problemDetail.getDetail().contains("Enum unknown entry 'bogus' should be among NAME, ID")); } @Test @@ -868,8 +871,9 @@ void test(final MockWebServer server) throws Exception { //insert a study with a non-existing case and except exception result = mockMvc.perform(post("/v1/studies/cases/{caseUuid}", NOT_EXISTING_CASE_UUID, "false").header(USER_ID_HEADER, "userId").param(CASE_FORMAT, "XIIDM")) - .andExpectAll(status().isFailedDependency(), content().contentType(MediaType.valueOf("text/plain;charset=UTF-8"))).andReturn(); - assertEquals("The case '" + NOT_EXISTING_CASE_UUID + "' does not exist", result.getResponse().getContentAsString()); + .andExpectAll(status().isFailedDependency(), content().contentType(MediaType.APPLICATION_PROBLEM_JSON_VALUE)).andReturn(); + var problemDetail = mapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals("The case '" + NOT_EXISTING_CASE_UUID + "' does not exist", problemDetail.getDetail()); assertTrue(TestUtils.getRequestsDone(1, server) .contains("/v1/cases/%s/exists".formatted(NOT_EXISTING_CASE_UUID))); @@ -896,10 +900,12 @@ void test(final MockWebServer server) throws Exception { UUID randomUuid = UUID.randomUUID(); //get a non-existing study -> 404 not found - mockMvc.perform(get("/v1/studies/{studyUuid}", randomUuid).header(USER_ID_HEADER, "userId")) + result = mockMvc.perform(get("/v1/studies/{studyUuid}", randomUuid).header(USER_ID_HEADER, "userId")) .andExpectAll(status().isNotFound(), - content().contentType(MediaType.APPLICATION_JSON), - jsonPath("$").value(STUDY_NOT_FOUND.name())); + content().contentType(MediaType.APPLICATION_PROBLEM_JSON_VALUE)) + .andReturn(); + problemDetail = mapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(STUDY_NOT_FOUND.name(), problemDetail.getDetail()); UUID studyNameUserIdUuid = studyRepository.findAll().get(0).getId(); diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index 56469f2cf2..11c4683a43 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -12,6 +12,7 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; import com.powsybl.network.store.client.NetworkStoreService; +import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import org.gridsuite.study.server.ContextConfigurationWithTestChannel; import org.gridsuite.study.server.StudyException; import org.gridsuite.study.server.dto.*; @@ -299,9 +300,8 @@ void testCreateRootNetworkWithMaximumReached() throws Exception { .header("content-type", "application/json")) .andExpect(status().isForbidden()) .andReturn(); - - assertTrue(result.getResponse().getContentAsString().equalsIgnoreCase(MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED.name() - )); + var problemDetail = objectMapper.readValue(result.getResponse().getContentAsString(), PowsyblWsProblemDetail.class); + assertEquals(MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED.value(), problemDetail.getBusinessErrorCode()); assertEquals(1, rootNetworkRequestRepository.countAllByStudyUuid(studyEntity.getId())); assertEquals(3, rootNetworkRepository.countAllByStudyId(studyEntity.getId())); @@ -758,8 +758,7 @@ void testUpdateRootNetworkOnNonExistingRootNetwork() throws Exception { UUID newCaseUuid = UUID.randomUUID(); String newCaseFormat = "newCaseFormat"; StudyEntity studyEntity = TestUtils.createDummyStudy(NETWORK_UUID, CASE_UUID, CASE_NAME, CASE_FORMAT, REPORT_UUID); - - mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/?caseUuid={caseUuid}&caseFormat={newCaseFormat}", studyEntity.getId(), UUID.randomUUID(), newCaseUuid, newCaseFormat) + mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network?caseFormat={newCaseFormat}", studyEntity.getId(), UUID.randomUUID(), newCaseUuid, newCaseFormat) .header("userId", "userId")) .andExpect(status().isNotFound()); diff --git a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java index cd708c75a7..6876d4f0ea 100644 --- a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java @@ -13,7 +13,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestTemplate; @@ -60,8 +59,7 @@ void duplicateNadConfigError() { httpEntity, UUID.class)).thenThrow(new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR)); StudyException e = assertThrows(StudyException.class, () -> service.duplicateNadConfig(source)); - assertEquals(DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED, - ReflectionTestUtils.invokeMethod(e, "getType")); + assertEquals(DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED, e.getBusinessErrorCode()); } } diff --git a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java index 7f825be9b3..fe0b441244 100644 --- a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java @@ -238,7 +238,7 @@ public static void checkReports(List reports, List expectedRepor public static void assertStudyException(ThrowableAssert.ThrowingCallable throwingCallable, StudyBusinessErrorCode type, String message) { ThrowableAssertAlternative throwableAssert = Assertions.assertThatExceptionOfType(StudyException.class) .isThrownBy(throwingCallable); - throwableAssert.extracting("type").isEqualTo(type); + throwableAssert.extracting("errorCode").isEqualTo(type); Optional.ofNullable(message).ifPresent(throwableAssert::withMessage); } From 9815d0911e2ed22c155635e38d43da14dbfc4e5b Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Wed, 5 Nov 2025 18:25:32 +0100 Subject: [PATCH 3/8] refactor: create a dedicated package for error handling Signed-off-by: Joris Mancini --- .../study/server/controller/StudyController.java | 6 +++--- .../RestResponseEntityExceptionHandler.java | 2 +- .../{ => error}/StudyBusinessErrorCode.java | 2 +- .../study/server/{ => error}/StudyException.java | 2 +- .../study/server/service/CaseService.java | 4 ++-- .../server/service/DiagramGridLayoutService.java | 6 +++--- .../study/server/service/FilterService.java | 6 +++--- .../study/server/service/LoadFlowService.java | 4 ++-- .../server/service/NetworkConversionService.java | 4 ++-- .../study/server/service/NetworkMapService.java | 4 ++-- .../service/NetworkModificationService.java | 4 ++-- .../service/NetworkModificationTreeService.java | 4 ++-- .../study/server/service/NetworkService.java | 4 ++-- .../study/server/service/PccMinService.java | 6 +++--- .../service/RootNetworkNodeInfoService.java | 4 ++-- .../study/server/service/RootNetworkService.java | 4 ++-- .../server/service/SecurityAnalysisService.java | 4 ++-- .../service/SensitivityAnalysisService.java | 4 ++-- .../server/service/SingleLineDiagramService.java | 4 ++-- .../server/service/StateEstimationService.java | 16 ++++++++-------- .../study/server/service/StudyConfigService.java | 4 ++-- .../study/server/service/StudyService.java | 4 ++-- .../study/server/service/SupervisionService.java | 5 ++--- .../study/server/service/UserAdminService.java | 2 +- .../study/server/service/VoltageInitService.java | 4 ++-- .../impl/DynamicMappingClientImpl.java | 4 ++-- .../DynamicSecurityAnalysisClient.java | 4 ++-- .../impl/DynamicSimulationClientImpl.java | 6 +++--- .../server/service/client/util/UrlUtil.java | 4 ++-- .../common/AbstractComputationService.java | 6 +++--- .../DynamicSecurityAnalysisService.java | 4 ++-- .../DynamicSimulationService.java | 2 +- .../impl/DynamicSimulationServiceImpl.java | 4 ++-- .../shortcircuit/ShortCircuitService.java | 4 ++-- .../gridsuite/study/server/utils/StudyUtils.java | 4 ++-- .../study/server/DiagramGridLayoutTest.java | 3 ++- .../org/gridsuite/study/server/LoadFlowTest.java | 3 ++- .../study/server/NetworkModificationTest.java | 3 ++- .../server/NetworkModificationTreeTest.java | 3 ++- .../server/NetworkModificationUnitTest.java | 3 ++- .../gridsuite/study/server/NodeSequenceTest.java | 1 + .../study/server/SensitivityAnalysisTest.java | 5 +++-- .../org/gridsuite/study/server/StudyTest.java | 2 +- .../rootnetworks/ModificationToExcludeTest.java | 4 ++-- .../server/rootnetworks/RootNetworkTest.java | 8 ++++---- .../study/server/service/ReportServiceTest.java | 4 ++-- .../service/SingleLineDiagramServiceTest.java | 4 ++-- .../server/service/StudyConfigServiceTest.java | 2 +- .../dynamicmapping/DynamicMappingClientTest.java | 2 +- .../DynamicSecurityAnalysisClientTest.java | 2 +- .../DynamicSimulationClientTest.java | 4 ++-- .../server/service/client/util/UrlUtilTest.java | 2 +- .../DynamicSecurityAnalysisServiceTest.java | 2 +- .../DynamicSimulationServiceTest.java | 2 +- .../gridsuite/study/server/utils/TestUtils.java | 4 ++-- 55 files changed, 112 insertions(+), 106 deletions(-) rename src/main/java/org/gridsuite/study/server/{ => error}/RestResponseEntityExceptionHandler.java (99%) rename src/main/java/org/gridsuite/study/server/{ => error}/StudyBusinessErrorCode.java (99%) rename src/main/java/org/gridsuite/study/server/{ => error}/StudyException.java (96%) diff --git a/src/main/java/org/gridsuite/study/server/controller/StudyController.java b/src/main/java/org/gridsuite/study/server/controller/StudyController.java index 3d1db47b20..ce6ede58dc 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -21,7 +21,7 @@ import org.gridsuite.study.server.StudyApi; import org.gridsuite.study.server.StudyConstants.ModificationsActionType; import org.gridsuite.study.server.StudyConstants.SldDisplayMode; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.computation.LoadFlowComputationInfos; import org.gridsuite.study.server.dto.diagramgridlayout.DiagramGridLayout; @@ -65,8 +65,8 @@ import java.beans.PropertyEditorSupport; import java.util.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.MOVE_NETWORK_MODIFICATION_FORBIDDEN; -import static org.gridsuite.study.server.StudyBusinessErrorCode.UNKNOWN_ACTION_TYPE; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.MOVE_NETWORK_MODIFICATION_FORBIDDEN; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNKNOWN_ACTION_TYPE; import static org.gridsuite.study.server.StudyConstants.*; import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; diff --git a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java similarity index 99% rename from src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java rename to src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java index 247f787970..a727e4b4e9 100644 --- a/src/main/java/org/gridsuite/study/server/RestResponseEntityExceptionHandler.java +++ b/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java @@ -2,7 +2,7 @@ * Copyright (c) 2020, RTE (http://www.rte-france.com) This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.study.server; +package org.gridsuite.study.server.error; import com.powsybl.ws.commons.error.AbstractBaseRestExceptionHandler; import com.powsybl.ws.commons.error.ServerNameProvider; diff --git a/src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java b/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java similarity index 99% rename from src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java rename to src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java index cba9ccf8cc..5cbc014c55 100644 --- a/src/main/java/org/gridsuite/study/server/StudyBusinessErrorCode.java +++ b/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java @@ -4,7 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.study.server; +package org.gridsuite.study.server.error; import com.powsybl.ws.commons.error.BusinessErrorCode; diff --git a/src/main/java/org/gridsuite/study/server/StudyException.java b/src/main/java/org/gridsuite/study/server/error/StudyException.java similarity index 96% rename from src/main/java/org/gridsuite/study/server/StudyException.java rename to src/main/java/org/gridsuite/study/server/error/StudyException.java index 815ff2d64d..f1227c33f3 100644 --- a/src/main/java/org/gridsuite/study/server/StudyException.java +++ b/src/main/java/org/gridsuite/study/server/error/StudyException.java @@ -4,7 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.study.server; +package org.gridsuite.study.server.error; import com.powsybl.ws.commons.error.AbstractBusinessException; import com.powsybl.ws.commons.error.BusinessErrorCode; diff --git a/src/main/java/org/gridsuite/study/server/service/CaseService.java b/src/main/java/org/gridsuite/study/server/service/CaseService.java index af47077f25..aeb6376539 100644 --- a/src/main/java/org/gridsuite/study/server/service/CaseService.java +++ b/src/main/java/org/gridsuite/study/server/service/CaseService.java @@ -11,7 +11,7 @@ * @author Kevin Le Saulnier */ -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -25,7 +25,7 @@ import static org.gridsuite.study.server.StudyConstants.CASE_API_VERSION; import static org.gridsuite.study.server.StudyConstants.DELIMITER; -import static org.gridsuite.study.server.StudyBusinessErrorCode.CASE_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.CASE_NOT_FOUND; @Service public class CaseService { diff --git a/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java b/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java index 2df0a68d05..91de76a19f 100644 --- a/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java +++ b/src/main/java/org/gridsuite/study/server/service/DiagramGridLayoutService.java @@ -7,7 +7,7 @@ package org.gridsuite.study.server.service; import lombok.RequiredArgsConstructor; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.diagramgridlayout.DiagramGridLayout; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.AbstractDiagramLayout; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.MapLayout; @@ -21,8 +21,8 @@ import java.util.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.TOO_MANY_MAP_CARDS; -import static org.gridsuite.study.server.StudyBusinessErrorCode.TOO_MANY_NAD_CONFIGS; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.TOO_MANY_MAP_CARDS; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.TOO_MANY_NAD_CONFIGS; /** * Service responsible for managing diagram grid layout operations. diff --git a/src/main/java/org/gridsuite/study/server/service/FilterService.java b/src/main/java/org/gridsuite/study/server/service/FilterService.java index 9bad45c517..db02856b9c 100644 --- a/src/main/java/org/gridsuite/study/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/study/server/service/FilterService.java @@ -13,7 +13,7 @@ import org.gridsuite.filter.globalfilter.GlobalFilter; import org.gridsuite.filter.utils.EquipmentType; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; @@ -33,8 +33,8 @@ import static org.gridsuite.study.server.StudyConstants.NETWORK_UUID; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_EQUIPMENT_TYPES; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_VARIANT_ID; -import static org.gridsuite.study.server.StudyBusinessErrorCode.EVALUATE_FILTER_FAILED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.EVALUATE_FILTER_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.NETWORK_NOT_FOUND; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java b/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java index 561de845b4..81d8c0ed31 100644 --- a/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java +++ b/src/main/java/org/gridsuite/study/server/service/LoadFlowService.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.repository.StudyEntity; import org.gridsuite.study.server.service.common.AbstractComputationService; @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java b/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java index 8b57c03cdc..87b44d6a93 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkConversionService.java @@ -21,7 +21,7 @@ import org.gridsuite.study.server.dto.RootNetworkInfos; import org.gridsuite.study.server.dto.caseimport.CaseImportAction; import org.gridsuite.study.server.dto.caseimport.CaseImportReceiver; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; @@ -40,7 +40,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java b/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java index 5b9c541eb0..7b930dd704 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkMapService.java @@ -14,7 +14,7 @@ import com.powsybl.iidm.network.ThreeSides; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.IdentifiableInfos; import org.gridsuite.study.server.dto.InfoTypeParameters; import org.springframework.core.ParameterizedTypeReference; @@ -29,7 +29,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java index b33bba520b..13824ee272 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java @@ -11,7 +11,7 @@ import lombok.NonNull; import org.gridsuite.study.server.RemoteServicesProperties; import org.gridsuite.study.server.StudyConstants; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.BuildInfos; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.modification.ModificationApplicationContext; @@ -36,7 +36,7 @@ import java.util.*; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.JsonUtils.getModificationContextJsonString; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java b/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java index ac26492680..1d453f5c65 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkModificationTreeService.java @@ -10,7 +10,7 @@ import jakarta.persistence.EntityNotFoundException; import lombok.NonNull; import org.apache.commons.lang3.StringUtils; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.modification.ModificationsSearchResultByNode; import org.gridsuite.study.server.dto.sequence.NodeSequenceType; @@ -32,7 +32,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; /** * @author Jacques Borsenberger diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java index c80949fc71..235ed4674c 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java @@ -9,7 +9,7 @@ import com.powsybl.timeseries.DoubleTimeSeries; import lombok.NonNull; import org.apache.commons.lang3.StringUtils; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.computation.LoadFlowComputationInfos; import org.gridsuite.study.server.dto.dynamicsecurityanalysis.DynamicSecurityAnalysisStatus; @@ -45,7 +45,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.dto.ComputationType.*; import static org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.ComputationsInvalidationMode; diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java index 9679e9148f..672b91d390 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -10,7 +10,7 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.model.VariantInfos; import lombok.NonNull; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.CaseInfos; import org.gridsuite.study.server.dto.NetworkInfos; import org.gridsuite.study.server.dto.RootNetworkAction; @@ -30,7 +30,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; /** * @author Le Saulnier Kevin diff --git a/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java index 892f329ee3..658716b68c 100644 --- a/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/SecurityAnalysisService.java @@ -11,7 +11,7 @@ import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.RunSecurityAnalysisParametersInfos; @@ -37,7 +37,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java index c9dd8d907a..11f0530a43 100644 --- a/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/SensitivityAnalysisService.java @@ -10,7 +10,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.SensitivityAnalysisStatus; import org.gridsuite.study.server.dto.sensianalysis.SensitivityAnalysisCsvFileInfos; @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java b/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java index c657683f9a..2359f3695f 100644 --- a/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java +++ b/src/main/java/org/gridsuite/study/server/service/SingleLineDiagramService.java @@ -12,7 +12,7 @@ */ import org.apache.commons.lang3.StringUtils; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.DiagramParameters; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.NetworkAreaDiagramLayoutDetails; import org.gridsuite.study.server.dto.diagramgridlayout.nad.NadConfigInfos; @@ -34,7 +34,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; @Service diff --git a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java index cfefa31b5b..e745e65c9b 100644 --- a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java +++ b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java @@ -11,7 +11,7 @@ import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.StateEstimationStatus; @@ -37,13 +37,13 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.CREATE_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DELETE_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.GET_STATE_ESTIMATION_PARAMETERS_FAILED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_NOT_FOUND; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_PARAMETERS_NOT_FOUND; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STATE_ESTIMATION_RUNNING; -import static org.gridsuite.study.server.StudyBusinessErrorCode.UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.CREATE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DELETE_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.GET_STATE_ESTIMATION_PARAMETERS_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STATE_ESTIMATION_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STATE_ESTIMATION_PARAMETERS_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STATE_ESTIMATION_RUNNING; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UPDATE_STATE_ESTIMATION_PARAMETERS_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java b/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java index d96cde04e9..5f86d00d96 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyConfigService.java @@ -8,7 +8,7 @@ import lombok.Setter; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.diagramgridlayout.DiagramGridLayout; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.DiagramPosition; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.NetworkAreaDiagramLayout; @@ -28,7 +28,7 @@ import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.STUDY_CONFIG_API_VERSION; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/StudyService.java b/src/main/java/org/gridsuite/study/server/service/StudyService.java index 6d6166fd4e..a32a63ec82 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -17,7 +17,7 @@ import org.gridsuite.filter.globalfilter.GlobalFilter; import org.gridsuite.filter.utils.EquipmentType; import org.gridsuite.study.server.StudyConstants; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.ComputationsInvalidationMode; import org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.InvalidationMode; @@ -85,7 +85,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.dto.ComputationType.*; import static org.gridsuite.study.server.dto.InvalidateNodeTreeParameters.ALL_WITH_BLOCK_NODES; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/SupervisionService.java b/src/main/java/org/gridsuite/study/server/service/SupervisionService.java index 011fb8b57e..7d1fb962fa 100644 --- a/src/main/java/org/gridsuite/study/server/service/SupervisionService.java +++ b/src/main/java/org/gridsuite/study/server/service/SupervisionService.java @@ -6,7 +6,7 @@ */ package org.gridsuite.study.server.service; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.elasticsearch.EquipmentInfos; import org.gridsuite.study.server.dto.elasticsearch.TombstonedEquipmentInfos; @@ -37,8 +37,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ELEMENT_NOT_FOUND; -import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.ELEMENT_NOT_FOUND; /** * @author Hugo Marcellin diff --git a/src/main/java/org/gridsuite/study/server/service/UserAdminService.java b/src/main/java/org/gridsuite/study/server/service/UserAdminService.java index fee842cdd9..2782f7703f 100644 --- a/src/main/java/org/gridsuite/study/server/service/UserAdminService.java +++ b/src/main/java/org/gridsuite/study/server/service/UserAdminService.java @@ -17,7 +17,7 @@ import java.util.Optional; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.GET_USER_PROFILE_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.GET_USER_PROFILE_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java b/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java index e70e83ccae..fd27aa028a 100644 --- a/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java +++ b/src/main/java/org/gridsuite/study/server/service/VoltageInitService.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.VariantInfos; @@ -33,7 +33,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java index 8acd2f0fbc..39ad248e85 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicmapping/impl/DynamicMappingClientImpl.java @@ -9,7 +9,7 @@ import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.dynamicmapping.MappingInfos; import org.gridsuite.study.server.dto.dynamicmapping.ModelInfos; import org.gridsuite.study.server.service.client.AbstractRestClient; @@ -24,7 +24,7 @@ import java.util.List; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_MAPPING_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DYNAMIC_MAPPING_NOT_FOUND; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; /** diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java index 0770c2de94..d88e45e3c7 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClient.java @@ -10,7 +10,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicsecurityanalysis.DynamicSecurityAnalysisStatus; import org.gridsuite.study.server.service.StudyService; @@ -28,7 +28,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java b/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java index a0b23887f3..751bb7c963 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/client/dynamicsimulation/impl/DynamicSimulationClientImpl.java @@ -10,7 +10,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationParametersInfos; import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationStatus; @@ -29,8 +29,8 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SIMULATION_NOT_FOUND; -import static org.gridsuite.study.server.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DYNAMIC_SIMULATION_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.util.UrlUtil.buildEndPointUrl; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java b/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java index 2cfa4fcf71..42e75b3153 100644 --- a/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java +++ b/src/main/java/org/gridsuite/study/server/service/client/util/UrlUtil.java @@ -8,12 +8,12 @@ package org.gridsuite.study.server.service.client.util; import org.apache.logging.log4j.util.Strings; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import java.net.URI; import java.net.URISyntaxException; -import static org.gridsuite.study.server.StudyBusinessErrorCode.URI_SYNTAX; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.URI_SYNTAX; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; /** diff --git a/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java b/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java index d41f028eb0..ffab99f5d3 100644 --- a/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java +++ b/src/main/java/org/gridsuite/study/server/service/common/AbstractComputationService.java @@ -1,7 +1,7 @@ package org.gridsuite.study.server.service.common; -import org.gridsuite.study.server.StudyBusinessErrorCode; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyBusinessErrorCode; +import org.gridsuite.study.server.error.StudyException; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -15,7 +15,7 @@ import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_RESULTS_UUIDS; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DELETE_COMPUTATION_RESULTS_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DELETE_COMPUTATION_RESULTS_FAILED; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; public abstract class AbstractComputationService { diff --git a/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java b/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java index c5bc700b48..dba2145aa8 100644 --- a/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java +++ b/src/main/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisService.java @@ -10,7 +10,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.collections4.CollectionUtils; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicsecurityanalysis.DynamicSecurityAnalysisStatus; @@ -24,7 +24,7 @@ import java.util.List; import java.util.UUID; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; /** * @author Thang PHAM diff --git a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationService.java b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationService.java index fa193a0a8a..a6eb686e43 100644 --- a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationService.java +++ b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationService.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.powsybl.timeseries.DoubleTimeSeries; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.dynamicmapping.MappingInfos; import org.gridsuite.study.server.dto.dynamicmapping.ModelInfos; import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationParametersInfos; diff --git a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java index c94db1d201..b10c8b1e5d 100644 --- a/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java +++ b/src/main/java/org/gridsuite/study/server/service/dynamicsimulation/impl/DynamicSimulationServiceImpl.java @@ -13,7 +13,7 @@ import com.powsybl.timeseries.StringTimeSeries; import com.powsybl.timeseries.TimeSeries; import org.apache.commons.collections4.CollectionUtils; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicmapping.MappingInfos; @@ -39,7 +39,7 @@ import java.util.UUID; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; /** diff --git a/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java b/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java index 93c676e806..36b6fcc5f8 100644 --- a/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java +++ b/src/main/java/org/gridsuite/study/server/service/shortcircuit/ShortCircuitService.java @@ -13,7 +13,7 @@ import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.ShortCircuitStatus; @@ -39,7 +39,7 @@ import java.util.UUID; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.utils.StudyUtils.addPageableToQueryParams; import static org.gridsuite.study.server.utils.StudyUtils.handleHttpError; diff --git a/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java b/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java index fa66f5da60..d89d041261 100644 --- a/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java +++ b/src/main/java/org/gridsuite/study/server/utils/StudyUtils.java @@ -11,8 +11,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.gridsuite.study.server.StudyBusinessErrorCode; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyBusinessErrorCode; +import org.gridsuite.study.server.error.StudyException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Pageable; diff --git a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java index 97186f3d64..f1c01dd50b 100644 --- a/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java +++ b/src/test/java/org/gridsuite/study/server/DiagramGridLayoutTest.java @@ -4,6 +4,7 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.repository.StudyEntity; import org.gridsuite.study.server.repository.StudyRepository; import org.gridsuite.study.server.service.StudyConfigService; @@ -35,7 +36,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DIAGRAM_GRID_LAYOUT_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DIAGRAM_GRID_LAYOUT_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.DELIMITER; import static org.gridsuite.study.server.StudyConstants.STUDY_CONFIG_API_VERSION; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/src/test/java/org/gridsuite/study/server/LoadFlowTest.java b/src/test/java/org/gridsuite/study/server/LoadFlowTest.java index 5ceeed2c53..c2c4374687 100644 --- a/src/test/java/org/gridsuite/study/server/LoadFlowTest.java +++ b/src/test/java/org/gridsuite/study/server/LoadFlowTest.java @@ -23,6 +23,7 @@ import okhttp3.Headers; import okhttp3.HttpUrl; import org.gridsuite.study.server.dto.*; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.BuildStatus; import org.gridsuite.study.server.networkmodificationtree.dto.InsertMode; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; @@ -68,7 +69,7 @@ import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; -import static org.gridsuite.study.server.StudyBusinessErrorCode.LOADFLOW_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.LOADFLOW_NOT_FOUND; import static org.gridsuite.study.server.dto.ComputationType.LOAD_FLOW; import static org.gridsuite.study.server.notification.NotificationService.*; import static org.gridsuite.study.server.utils.TestUtils.USER_DEFAULT_PROFILE_JSON; diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java index 7921a9dea0..9ee102dc9d 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java @@ -35,6 +35,7 @@ import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationStatus; import org.gridsuite.study.server.dto.impacts.SimpleElementImpact.SimpleImpactType; import org.gridsuite.study.server.dto.modification.*; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.*; import org.gridsuite.study.server.networkmodificationtree.entities.NetworkModificationNodeType; import org.gridsuite.study.server.networkmodificationtree.entities.NodeBuildStatusEmbeddable; @@ -78,7 +79,7 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.StudyConstants.HEADER_ERROR_MESSAGE; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_RECEIVER; import static org.gridsuite.study.server.utils.ImpactUtils.createModificationResultWithElementImpact; diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java index 941d3706b2..b6b8f956b4 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTreeTest.java @@ -31,6 +31,7 @@ import okhttp3.HttpUrl; import org.gridsuite.study.server.dto.RootNetworkNodeInfo; import org.gridsuite.study.server.dto.modification.NetworkModificationResult; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.*; import org.gridsuite.study.server.networkmodificationtree.entities.*; import org.gridsuite.study.server.notification.NotificationService; @@ -78,7 +79,7 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.*; import static org.gridsuite.study.server.service.NetworkModificationTreeService.ROOT_NODE_NAME; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java index 9de334f1a2..20a75adcd6 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java @@ -12,6 +12,7 @@ import org.gridsuite.study.server.dto.BuildInfos; import org.gridsuite.study.server.dto.RootNetworkIndexationStatus; import org.gridsuite.study.server.dto.workflow.RerunLoadFlowInfos; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.BuildStatus; import org.gridsuite.study.server.networkmodificationtree.dto.NodeBuildStatus; import org.gridsuite.study.server.networkmodificationtree.entities.*; @@ -55,7 +56,7 @@ import java.util.UUID; import java.util.stream.Collectors; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_WORKFLOW_INFOS; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_WORKFLOW_TYPE; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/org/gridsuite/study/server/NodeSequenceTest.java b/src/test/java/org/gridsuite/study/server/NodeSequenceTest.java index ce44392bbd..64543689e2 100644 --- a/src/test/java/org/gridsuite/study/server/NodeSequenceTest.java +++ b/src/test/java/org/gridsuite/study/server/NodeSequenceTest.java @@ -8,6 +8,7 @@ import org.gridsuite.study.server.dto.sequence.NodeSequenceType; import org.gridsuite.study.server.dto.sequence.SecuritySequence; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.AbstractNode; import org.gridsuite.study.server.networkmodificationtree.dto.InsertMode; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; diff --git a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java index 28af7df3dc..6c3d2b2d99 100644 --- a/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/SensitivityAnalysisTest.java @@ -26,6 +26,7 @@ import org.gridsuite.study.server.dto.RootNetworkNodeInfo; import org.gridsuite.study.server.dto.sensianalysis.SensitivityAnalysisCsvFileInfos; import org.gridsuite.study.server.dto.sensianalysis.SensitivityFactorsIdsByGroup; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.InsertMode; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; import org.gridsuite.study.server.networkmodificationtree.dto.RootNode; @@ -64,8 +65,8 @@ import java.util.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; import static org.gridsuite.study.server.dto.ComputationType.SENSITIVITY_ANALYSIS; diff --git a/src/test/java/org/gridsuite/study/server/StudyTest.java b/src/test/java/org/gridsuite/study/server/StudyTest.java index ee7c6ad803..9446bb8aeb 100644 --- a/src/test/java/org/gridsuite/study/server/StudyTest.java +++ b/src/test/java/org/gridsuite/study/server/StudyTest.java @@ -101,7 +101,7 @@ import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.gridsuite.study.server.StudyConstants.CASE_API_VERSION; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.notification.NotificationService.DEFAULT_ERROR_MESSAGE; import static org.gridsuite.study.server.notification.NotificationService.UPDATE_TYPE_COMPUTATION_PARAMETERS; import static org.gridsuite.study.server.utils.JsonUtils.getModificationContextJsonString; diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java index 6c46773b11..b795d4fd45 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java @@ -10,7 +10,7 @@ import com.google.common.collect.Sets; import org.gridsuite.study.server.ContextConfigurationWithTestChannel; import org.gridsuite.study.server.StudyConstants; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.modification.NetworkModificationResult; import org.gridsuite.study.server.dto.modification.NetworkModificationsResult; @@ -45,7 +45,7 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index 11c4683a43..4f18dce64b 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -14,7 +14,7 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.ws.commons.error.PowsyblWsProblemDetail; import org.gridsuite.study.server.ContextConfigurationWithTestChannel; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.dto.caseimport.CaseImportAction; import org.gridsuite.study.server.dto.caseimport.CaseImportReceiver; @@ -56,9 +56,9 @@ import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.gridsuite.study.server.StudyBusinessErrorCode.MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED; -import static org.gridsuite.study.server.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.MAXIMUM_ROOT_NETWORK_BY_STUDY_REACHED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.ROOT_NETWORK_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.*; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java b/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java index e6f01c20eb..941ac4f3b2 100644 --- a/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/ReportServiceTest.java @@ -19,7 +19,7 @@ import okhttp3.Headers; import okhttp3.HttpUrl; import org.gridsuite.study.server.ContextConfigurationWithTestChannel; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.Report; import org.gridsuite.study.server.networkmodificationtree.dto.InsertMode; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; @@ -53,7 +53,7 @@ import java.util.UUID; import java.util.stream.Stream; -import static org.gridsuite.study.server.StudyBusinessErrorCode.STUDY_NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.STUDY_NOT_FOUND; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_REPORT_DEFAULT_NAME; import static org.gridsuite.study.server.utils.TestUtils.checkReports; import static org.gridsuite.study.server.utils.TestUtils.createModificationNodeInfo; diff --git a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java index 6876d4f0ea..eb789043c2 100644 --- a/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/SingleLineDiagramServiceTest.java @@ -6,7 +6,7 @@ */ package org.gridsuite.study.server.service; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.NetworkAreaDiagramLayoutDetails; import org.junit.jupiter.api.Test; import org.springframework.http.HttpEntity; @@ -18,7 +18,7 @@ import java.util.UUID; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DUPLICATE_DIAGRAM_GRID_LAYOUT_FAILED; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/src/test/java/org/gridsuite/study/server/service/StudyConfigServiceTest.java b/src/test/java/org/gridsuite/study/server/service/StudyConfigServiceTest.java index 58dbd39664..c4f2bf0307 100644 --- a/src/test/java/org/gridsuite/study/server/service/StudyConfigServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/StudyConfigServiceTest.java @@ -1,7 +1,7 @@ package org.gridsuite.study.server.service; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.diagramgridlayout.DiagramGridLayout; import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.NetworkAreaDiagramLayout; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/gridsuite/study/server/service/client/dynamicmapping/DynamicMappingClientTest.java b/src/test/java/org/gridsuite/study/server/service/client/dynamicmapping/DynamicMappingClientTest.java index ef798b9959..938c12674e 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/dynamicmapping/DynamicMappingClientTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/dynamicmapping/DynamicMappingClientTest.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.client.WireMock; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.dynamicmapping.MappingInfos; import org.gridsuite.study.server.dto.dynamicmapping.ModelInfos; import org.gridsuite.study.server.dto.dynamicmapping.ModelVariableDefinitionInfos; diff --git a/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java b/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java index 2d0a0f53a8..1dc9ae4cc5 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/dynamicsecurityanalysis/DynamicSecurityAnalysisClientTest.java @@ -29,7 +29,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.absent; import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.*; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; import static org.gridsuite.study.server.service.client.dynamicsecurityanalysis.DynamicSecurityAnalysisClient.*; diff --git a/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java b/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java index 6684080877..9380a5a988 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/dynamicsimulation/DynamicSimulationClientTest.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.client.WireMock; import org.gridsuite.study.server.RemoteServicesProperties; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationParametersInfos; import org.gridsuite.study.server.dto.dynamicsimulation.DynamicSimulationStatus; @@ -31,7 +31,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static org.assertj.core.api.Assertions.assertThat; import static org.gridsuite.study.server.StudyConstants.*; -import static org.gridsuite.study.server.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.RUN_DYNAMIC_SIMULATION_FAILED; import static org.gridsuite.study.server.notification.NotificationService.HEADER_USER_ID; import static org.gridsuite.study.server.service.client.RestClient.DELIMITER; import static org.gridsuite.study.server.service.client.dynamicsimulation.DynamicSimulationClient.*; diff --git a/src/test/java/org/gridsuite/study/server/service/client/util/UrlUtilTest.java b/src/test/java/org/gridsuite/study/server/service/client/util/UrlUtilTest.java index 5fa7cfbbda..39fd1a598b 100644 --- a/src/test/java/org/gridsuite/study/server/service/client/util/UrlUtilTest.java +++ b/src/test/java/org/gridsuite/study/server/service/client/util/UrlUtilTest.java @@ -6,7 +6,7 @@ */ package org.gridsuite.study.server.service.client.util; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java b/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java index 626b55db6b..d58dc7b10d 100644 --- a/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/dynamicsecurityanalysis/DynamicSecurityAnalysisServiceTest.java @@ -21,7 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.gridsuite.study.server.StudyConstants.DYNAWO_PROVIDER; -import static org.gridsuite.study.server.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.DYNAMIC_SECURITY_ANALYSIS_RUNNING; import static org.gridsuite.study.server.utils.TestUtils.assertStudyException; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.mockito.ArgumentMatchers.any; diff --git a/src/test/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationServiceTest.java b/src/test/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationServiceTest.java index 74a156c164..85d906f904 100644 --- a/src/test/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationServiceTest.java +++ b/src/test/java/org/gridsuite/study/server/service/dynamicsimulation/DynamicSimulationServiceTest.java @@ -12,7 +12,7 @@ import com.powsybl.timeseries.*; import org.gridsuite.study.server.ContextConfigurationWithTestChannel; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.ComputationType; import org.gridsuite.study.server.dto.ReportInfos; import org.gridsuite.study.server.dto.dynamicmapping.MappingInfos; diff --git a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java index fe0b441244..28ad40ae62 100644 --- a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java @@ -15,8 +15,8 @@ import okio.Buffer; import org.assertj.core.api.ThrowableAssert; import org.assertj.core.api.ThrowableAssertAlternative; -import org.gridsuite.study.server.StudyBusinessErrorCode; -import org.gridsuite.study.server.StudyException; +import org.gridsuite.study.server.error.StudyBusinessErrorCode; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.dto.Report; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; import org.gridsuite.study.server.repository.StudyEntity; From 0bbcc75c209f73716f32617e71df6d14f754a265 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Mon, 17 Nov 2025 14:40:34 +0100 Subject: [PATCH 4/8] chore: bump powsybl-ws-commons v1.33.0 Signed-off-by: Joris Mancini --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3d5b67fbec..d395ca3937 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 44.0.0 1.12.0 - 1.33.0-SNAPSHOT + 1.33.0 org.gridsuite.study.server 5.0.0-alpha.14 1.0.5 From 4bab6de6b8bccd59abddf3e4bae6a5f1c8e8bde3 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Mon, 17 Nov 2025 14:43:09 +0100 Subject: [PATCH 5/8] fix: return StudyBusinessErrorCode in StudyException Signed-off-by: Joris Mancini --- .../study/server/error/RestResponseEntityExceptionHandler.java | 2 +- .../java/org/gridsuite/study/server/error/StudyException.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java index a727e4b4e9..313bfb56ec 100644 --- a/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java +++ b/src/main/java/org/gridsuite/study/server/error/RestResponseEntityExceptionHandler.java @@ -22,7 +22,7 @@ protected RestResponseEntityExceptionHandler(ServerNameProvider serverNameProvid @Override protected @NonNull StudyBusinessErrorCode getBusinessCode(StudyException e) { - return (StudyBusinessErrorCode) e.getBusinessErrorCode(); + return e.getBusinessErrorCode(); } @Override diff --git a/src/main/java/org/gridsuite/study/server/error/StudyException.java b/src/main/java/org/gridsuite/study/server/error/StudyException.java index f1227c33f3..0c5434f957 100644 --- a/src/main/java/org/gridsuite/study/server/error/StudyException.java +++ b/src/main/java/org/gridsuite/study/server/error/StudyException.java @@ -30,7 +30,7 @@ public StudyException(StudyBusinessErrorCode errorCode, String message) { } @Override - public @NonNull BusinessErrorCode getBusinessErrorCode() { + public @NonNull StudyBusinessErrorCode getBusinessErrorCode() { return errorCode; } } From d4aabf0bb8893d7768163ef9841f6b71b0027d3c Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Mon, 17 Nov 2025 14:48:37 +0100 Subject: [PATCH 6/8] fix: powsybl-ws-commons version Signed-off-by: Joris Mancini --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d395ca3937..81e7a5ad51 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ com.powsybl powsybl-ws-commons - 1.33.0-SNAPSHOT + ${powsybl-ws-commons.version} From 72aebf9b84951e46d61c6f5350aa4f86d698a3c1 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Mon, 17 Nov 2025 14:51:50 +0100 Subject: [PATCH 7/8] fix: checkstyle Signed-off-by: Joris Mancini --- .../java/org/gridsuite/study/server/error/StudyException.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/gridsuite/study/server/error/StudyException.java b/src/main/java/org/gridsuite/study/server/error/StudyException.java index 0c5434f957..ce65fc23b7 100644 --- a/src/main/java/org/gridsuite/study/server/error/StudyException.java +++ b/src/main/java/org/gridsuite/study/server/error/StudyException.java @@ -7,7 +7,6 @@ package org.gridsuite.study.server.error; import com.powsybl.ws.commons.error.AbstractBusinessException; -import com.powsybl.ws.commons.error.BusinessErrorCode; import lombok.NonNull; import java.util.Objects; From be47eceb75e498150ac3e94b5477e86b60206f5b Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Mon, 17 Nov 2025 15:08:37 +0100 Subject: [PATCH 8/8] fix: import error Signed-off-by: Joris Mancini --- src/test/java/org/gridsuite/study/server/PccMinTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/gridsuite/study/server/PccMinTest.java b/src/test/java/org/gridsuite/study/server/PccMinTest.java index 9af5ab0404..2426b378c1 100644 --- a/src/test/java/org/gridsuite/study/server/PccMinTest.java +++ b/src/test/java/org/gridsuite/study/server/PccMinTest.java @@ -14,6 +14,7 @@ import org.gridsuite.study.server.dto.ComputationType; import org.gridsuite.study.server.dto.NodeReceiver; import org.gridsuite.study.server.dto.RootNetworkNodeInfo; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.dto.InsertMode; import org.gridsuite.study.server.networkmodificationtree.dto.NetworkModificationNode; import org.gridsuite.study.server.networkmodificationtree.dto.RootNode;