diff --git a/src/main/java/org/gridsuite/studyconfig/server/controller/SpreadsheetConfigController.java b/src/main/java/org/gridsuite/studyconfig/server/controller/SpreadsheetConfigController.java index 02946ac..b2da8a3 100644 --- a/src/main/java/org/gridsuite/studyconfig/server/controller/SpreadsheetConfigController.java +++ b/src/main/java/org/gridsuite/studyconfig/server/controller/SpreadsheetConfigController.java @@ -213,4 +213,15 @@ public ResponseEntity setGlobalFiltersForSpreadsheetConfig( return ResponseEntity.noContent().build(); } + @PutMapping("/{id}/reset-filters") + @Operation(summary = "Reset global and column filters", + description = "Reset all columns filters in a spreadsheet configuration as well as the global filter") + @ApiResponse(responseCode = "204", description = "Filters reset successfully") + @ApiResponse(responseCode = "404", description = "Spreadsheet configuration not found") + public ResponseEntity resetFilters( + @Parameter(description = "ID of the spreadsheet config") @PathVariable UUID id) { + spreadsheetConfigService.resetSpreadsheetConfigFilters(id); + return ResponseEntity.noContent().build(); + } + } diff --git a/src/main/java/org/gridsuite/studyconfig/server/entities/ColumnEntity.java b/src/main/java/org/gridsuite/studyconfig/server/entities/ColumnEntity.java index 884a329..d0166bb 100644 --- a/src/main/java/org/gridsuite/studyconfig/server/entities/ColumnEntity.java +++ b/src/main/java/org/gridsuite/studyconfig/server/entities/ColumnEntity.java @@ -64,4 +64,11 @@ public class ColumnEntity { @Column(name = "visible", nullable = false) @Builder.Default private boolean visible = true; + + public void resetFilter() { + this.filterDataType = null; + this.filterType = null; + this.filterTolerance = null; + this.filterValue = null; + } } diff --git a/src/main/java/org/gridsuite/studyconfig/server/entities/SpreadsheetConfigEntity.java b/src/main/java/org/gridsuite/studyconfig/server/entities/SpreadsheetConfigEntity.java index 7bbd872..911edae 100644 --- a/src/main/java/org/gridsuite/studyconfig/server/entities/SpreadsheetConfigEntity.java +++ b/src/main/java/org/gridsuite/studyconfig/server/entities/SpreadsheetConfigEntity.java @@ -52,4 +52,9 @@ public class SpreadsheetConfigEntity { @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "config_node_aliases", foreignKey = @ForeignKey(name = "fk_spreadsheet_config_node_aliases")) private List nodeAliases; + + public void resetFilters() { + this.globalFilters.clear(); + getColumns().forEach(ColumnEntity::resetFilter); + } } diff --git a/src/main/java/org/gridsuite/studyconfig/server/service/SpreadsheetConfigService.java b/src/main/java/org/gridsuite/studyconfig/server/service/SpreadsheetConfigService.java index c5bd1ce..035d03f 100644 --- a/src/main/java/org/gridsuite/studyconfig/server/service/SpreadsheetConfigService.java +++ b/src/main/java/org/gridsuite/studyconfig/server/service/SpreadsheetConfigService.java @@ -519,4 +519,9 @@ public void renameSpreadsheetConfig(UUID id, String name) { entity.setName(name); } + @Transactional + public void resetSpreadsheetConfigFilters(UUID id) { + findEntityById(id).resetFilters(); + } + } diff --git a/src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigIntegrationTest.java b/src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigIntegrationTest.java index 7d0019b..9925f5c 100644 --- a/src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigIntegrationTest.java +++ b/src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigIntegrationTest.java @@ -548,6 +548,29 @@ void testSetGlobalFiltersForSpreadsheetConfig() throws Exception { .containsExactly("Replacement Filter"); } + @Test + void testResetFiltersForSpreadsheetConfig() throws Exception { + // Create a spreadsheet config with existing global filters + SpreadsheetConfigInfos configWithFilters = new SpreadsheetConfigInfos( + null, "ConfigWithFilters", SheetType.BATTERY, createColumnsWithFilters(), createGlobalFilters(), List.of()); + UUID configId = saveAndReturnId(configWithFilters); + + // Initial config should have filters set + SpreadsheetConfigInfos initialConfig = getSpreadsheetConfig(configId); + assertThat(initialConfig.globalFilters()).hasSize(2); + assertThat(initialConfig.columns().getFirst()).hasFieldOrPropertyWithValue("filterValue", "test-value"); + + // Call the endpoint to reset the filters + mockMvc.perform(put(URI_SPREADSHEET_CONFIG_GET_PUT + configId + "/reset-filters") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNoContent()); + + // Verify the filters (global or column based) were reset + SpreadsheetConfigInfos updatedConfig = getSpreadsheetConfig(configId); + assertThat(updatedConfig.globalFilters()).isEmpty(); + assertThat(updatedConfig.columns().getFirst()).hasFieldOrPropertyWithValue("filterValue", null); + } + @Test void testSetGlobalFiltersToNonExistentConfig() throws Exception { UUID nonExistentConfigId = UUID.randomUUID();