diff --git a/src/main/java/org/gridsuite/actions/server/ContingencyListController.java b/src/main/java/org/gridsuite/actions/server/ContingencyListController.java index 63d8da8..b68a25a 100644 --- a/src/main/java/org/gridsuite/actions/server/ContingencyListController.java +++ b/src/main/java/org/gridsuite/actions/server/ContingencyListController.java @@ -11,7 +11,13 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; -import org.gridsuite.actions.dto.*; +import org.gridsuite.actions.api.dto.ContingencyListMetadata; +import org.gridsuite.actions.api.dto.contingency.FilterBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.IdBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.PersistentContingencyList; +import org.gridsuite.actions.api.dto.evaluation.ContingencyIdsByGroup; +import org.gridsuite.actions.api.dto.evaluation.ContingencyInfos; +import org.gridsuite.actions.api.dto.evaluation.ContingencyListExportResult; import org.springframework.context.annotation.ComponentScan; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.http.MediaType; diff --git a/src/main/java/org/gridsuite/actions/server/ContingencyListService.java b/src/main/java/org/gridsuite/actions/server/ContingencyListService.java index 73e2ffe..878de62 100644 --- a/src/main/java/org/gridsuite/actions/server/ContingencyListService.java +++ b/src/main/java/org/gridsuite/actions/server/ContingencyListService.java @@ -16,14 +16,21 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; -import org.gridsuite.actions.ContingencyListEvaluator; -import org.gridsuite.actions.dto.*; -import org.gridsuite.actions.server.entities.*; +import org.gridsuite.actions.api.ContingencyListEvaluator; +import org.gridsuite.actions.api.dto.*; +import org.gridsuite.actions.api.dto.contingency.FilterBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.IdBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.PersistentContingencyList; +import org.gridsuite.actions.api.dto.evaluation.ContingencyIdsByGroup; +import org.gridsuite.actions.api.dto.evaluation.ContingencyInfos; +import org.gridsuite.actions.api.dto.evaluation.ContingencyListExportResult; +import org.gridsuite.actions.server.entities.AbstractContingencyEntity; +import org.gridsuite.actions.server.entities.EquipmentTypesByFilterEntity; +import org.gridsuite.actions.server.entities.FilterBasedContingencyListEntity; +import org.gridsuite.actions.server.entities.IdBasedContingencyListEntity; import org.gridsuite.actions.server.repositories.FilterBasedContingencyListRepository; import org.gridsuite.actions.server.repositories.IdBasedContingencyListRepository; import org.gridsuite.actions.server.service.FilterService; -import org.gridsuite.actions.utils.ContingencyListType; -import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes; import org.springframework.context.annotation.ComponentScan; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.http.HttpStatus; @@ -92,10 +99,6 @@ List getContingencyListsMetadata(List ids) { ).flatMap(Function.identity()).collect(Collectors.toList()); } - public List evaluateFiltersNetwork(UUID networkUuid, String variantUuid, FilterBasedContingencyList filterBasedContingencyList) { - return filterService.evaluateFilters(networkUuid, variantUuid, filterBasedContingencyList); - } - @Transactional(readOnly = true) public Optional getIdBasedContingencyList(UUID id, Network network) { return doGetIdBasedContingencyList(id, network); diff --git a/src/main/java/org/gridsuite/actions/server/configs/ActionsConfig.java b/src/main/java/org/gridsuite/actions/server/configs/ActionsConfig.java index b96f47e..1856acc 100644 --- a/src/main/java/org/gridsuite/actions/server/configs/ActionsConfig.java +++ b/src/main/java/org/gridsuite/actions/server/configs/ActionsConfig.java @@ -1,7 +1,10 @@ package org.gridsuite.actions.server.configs; -import org.gridsuite.actions.ContingencyListEvaluator; -import org.gridsuite.actions.FilterProviderI; +import org.gridsuite.actions.api.ContingencyListEvaluator; +import org.gridsuite.actions.api.ContingencyListEvaluatorFactory; +import org.gridsuite.filter.FilterLoader; +import org.gridsuite.filter.api.FilterEvaluator; +import org.gridsuite.filter.api.FilterEvaluatorFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -9,8 +12,15 @@ public class ActionsConfig { @Bean public ContingencyListEvaluator contingencyListEvaluator( - FilterProviderI filterProvider + FilterEvaluator filterEvaluator ) { - return new ContingencyListEvaluator(filterProvider); + return ContingencyListEvaluatorFactory.create(filterEvaluator); + } + + @Bean + public FilterEvaluator filterEvaluator( + FilterLoader filterLoader + ) { + return FilterEvaluatorFactory.create(filterLoader); } } diff --git a/src/main/java/org/gridsuite/actions/server/entities/EquipmentTypesByFilterEntity.java b/src/main/java/org/gridsuite/actions/server/entities/EquipmentTypesByFilterEntity.java index fcf67d5..18dd34a 100644 --- a/src/main/java/org/gridsuite/actions/server/entities/EquipmentTypesByFilterEntity.java +++ b/src/main/java/org/gridsuite/actions/server/entities/EquipmentTypesByFilterEntity.java @@ -13,7 +13,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import org.gridsuite.actions.dto.EquipmentTypesByFilter; +import org.gridsuite.actions.api.dto.EquipmentTypesByFilter; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; diff --git a/src/main/java/org/gridsuite/actions/server/entities/FilterBasedContingencyListEntity.java b/src/main/java/org/gridsuite/actions/server/entities/FilterBasedContingencyListEntity.java index c2cf71e..65ed6ba 100644 --- a/src/main/java/org/gridsuite/actions/server/entities/FilterBasedContingencyListEntity.java +++ b/src/main/java/org/gridsuite/actions/server/entities/FilterBasedContingencyListEntity.java @@ -10,7 +10,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.gridsuite.actions.dto.FilterBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.FilterBasedContingencyList; import org.springframework.util.CollectionUtils; import java.util.ArrayList; diff --git a/src/main/java/org/gridsuite/actions/server/entities/IdBasedContingencyListEntity.java b/src/main/java/org/gridsuite/actions/server/entities/IdBasedContingencyListEntity.java index 34dab3e..6f6e045 100644 --- a/src/main/java/org/gridsuite/actions/server/entities/IdBasedContingencyListEntity.java +++ b/src/main/java/org/gridsuite/actions/server/entities/IdBasedContingencyListEntity.java @@ -12,7 +12,7 @@ import com.powsybl.iidm.network.identifiers.NetworkElementIdentifierContingencyList; import lombok.Getter; import lombok.NoArgsConstructor; -import org.gridsuite.actions.dto.IdBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.IdBasedContingencyList; import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; diff --git a/src/main/java/org/gridsuite/actions/server/service/FilterProviderImpl.java b/src/main/java/org/gridsuite/actions/server/service/FilterProviderImpl.java deleted file mode 100644 index 0fdd5fc..0000000 --- a/src/main/java/org/gridsuite/actions/server/service/FilterProviderImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.gridsuite.actions.server.service; - -import org.gridsuite.actions.FilterProviderI; -import org.gridsuite.filter.AbstractFilter; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.UUID; - -@Service -public class FilterProviderImpl implements FilterProviderI { - - private final FilterService filterService; - - public FilterProviderImpl(FilterService filterService) { - this.filterService = filterService; - } - - @Override - public List getFilters(List filtersUuids) { - return filterService.getFilters(filtersUuids); - } -} diff --git a/src/main/java/org/gridsuite/actions/server/service/FilterService.java b/src/main/java/org/gridsuite/actions/server/service/FilterService.java index a1510c3..6c5c26b 100644 --- a/src/main/java/org/gridsuite/actions/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/actions/server/service/FilterService.java @@ -8,29 +8,28 @@ package org.gridsuite.actions.server.service; import lombok.Getter; -import org.gridsuite.actions.dto.FilterAttributes; -import org.gridsuite.actions.dto.FilterBasedContingencyList; +import org.gridsuite.actions.api.dto.FilterAttributes; import org.gridsuite.filter.AbstractFilter; -import org.gridsuite.filter.identifierlistfilter.FilteredIdentifiables; -import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes; +import org.gridsuite.filter.FilterLoader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; @Service -public class FilterService { - public static final String FILTER_END_POINT_EVALUATE_IDS = "/filters/evaluate/identifiables"; +public class FilterService implements FilterLoader { public static final String FILTER_END_POINT_INFOS_IDS = "/filters/infos"; public static final String FILTER_END_POINT_METADATA = "/filters/metadata"; public static final String DELIMITER = "/"; @@ -47,24 +46,6 @@ public FilterService(@Value("${gridsuite.services.filter-server.base-uri:http:// this.restTemplate = restTemplateBuilder.build(); } - public List evaluateFilters(UUID networkUuid, String variantUuid, FilterBasedContingencyList filterBasedContingencyList) { - Objects.requireNonNull(networkUuid); - Objects.requireNonNull(filterBasedContingencyList); - String endPointUrl = getBaseUri() + DELIMITER + FILTER_API_VERSION + FILTER_END_POINT_EVALUATE_IDS; - - UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(endPointUrl); - uriComponentsBuilder.queryParam("networkUuid", networkUuid); - uriComponentsBuilder.queryParam("variantUuid", variantUuid); - var uriComponent = uriComponentsBuilder.buildAndExpand(); - - var headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity request = new HttpEntity<>(filterBasedContingencyList, headers); - - ResponseEntity response = restTemplate.postForEntity(uriComponent.toUriString(), request, FilteredIdentifiables.class); - return response.getBody() != null ? response.getBody().equipmentIds() : List.of(); - } - public List getFiltersAttributes(List filtersUuid, String userId) { if (filtersUuid.isEmpty()) { return new ArrayList<>(); diff --git a/src/test/java/org/gridsuite/actions/server/ContingencyListControllerTest.java b/src/test/java/org/gridsuite/actions/server/ContingencyListControllerTest.java index 94cf923..3383a16 100644 --- a/src/test/java/org/gridsuite/actions/server/ContingencyListControllerTest.java +++ b/src/test/java/org/gridsuite/actions/server/ContingencyListControllerTest.java @@ -15,9 +15,10 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.MappingBuilder; import com.github.tomakehurst.wiremock.client.WireMock; -import com.powsybl.contingency.*; -import com.powsybl.contingency.list.IdentifierContingencyList; +import com.powsybl.contingency.Contingency; +import com.powsybl.contingency.LineContingency; import com.powsybl.contingency.json.ContingencyJsonModule; +import com.powsybl.contingency.list.IdentifierContingencyList; import com.powsybl.iidm.network.IdentifiableType; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.Terminal; @@ -32,8 +33,15 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; -import org.gridsuite.actions.ContingencyListEvaluator; -import org.gridsuite.actions.dto.*; +import org.gridsuite.actions.api.ContingencyListEvaluator; +import org.gridsuite.actions.api.dto.ContingencyListMetadata; +import org.gridsuite.actions.api.dto.ContingencyListMetadataImpl; +import org.gridsuite.actions.api.dto.EquipmentTypesByFilter; +import org.gridsuite.actions.api.dto.FilterAttributes; +import org.gridsuite.actions.api.dto.contingency.FilterBasedContingencyList; +import org.gridsuite.actions.api.dto.contingency.IdBasedContingencyList; +import org.gridsuite.actions.api.dto.evaluation.ContingencyIdsByGroup; +import org.gridsuite.actions.api.dto.evaluation.ContingencyInfos; import org.gridsuite.actions.server.repositories.IdBasedContingencyListRepository; import org.gridsuite.actions.server.service.FilterService; import org.gridsuite.actions.server.utils.MatcherJson; @@ -61,7 +69,6 @@ import static org.gridsuite.filter.utils.EquipmentType.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.*; import static org.springframework.http.MediaType.APPLICATION_JSON;