diff --git a/src/main/java/org/gridsuite/filter/AbstractFilter.java b/src/main/java/org/gridsuite/filter/AbstractFilter.java index 15cc577..41942dd 100644 --- a/src/main/java/org/gridsuite/filter/AbstractFilter.java +++ b/src/main/java/org/gridsuite/filter/AbstractFilter.java @@ -12,6 +12,7 @@ import lombok.experimental.SuperBuilder; import org.gridsuite.filter.expertfilter.ExpertFilter; import org.gridsuite.filter.identifierlistfilter.FilterEquipments; +import org.gridsuite.filter.identifierlistfilter.FilteredIdentifiables; import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes; import org.gridsuite.filter.identifierlistfilter.IdentifierListFilter; import org.gridsuite.filter.utils.EquipmentType; @@ -52,4 +53,8 @@ public FilterEquipments toFilterEquipments(List identifi .identifiableAttributes(identifiableAttributes) .build(); } + + public FilteredIdentifiables toFilteredIdentifiables(List identifiableAttributes) { + return new FilteredIdentifiables(identifiableAttributes, null); + } } diff --git a/src/main/java/org/gridsuite/filter/identifierlistfilter/FilteredIdentifiables.java b/src/main/java/org/gridsuite/filter/identifierlistfilter/FilteredIdentifiables.java new file mode 100644 index 0000000..35f04ee --- /dev/null +++ b/src/main/java/org/gridsuite/filter/identifierlistfilter/FilteredIdentifiables.java @@ -0,0 +1,24 @@ +/** + * 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.filter.identifierlistfilter; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class FilteredIdentifiables { + private List equipmentIds; + private List notFoundIds; +} diff --git a/src/main/java/org/gridsuite/filter/identifierlistfilter/IdentifierListFilter.java b/src/main/java/org/gridsuite/filter/identifierlistfilter/IdentifierListFilter.java index cdcceb8..edafd26 100644 --- a/src/main/java/org/gridsuite/filter/identifierlistfilter/IdentifierListFilter.java +++ b/src/main/java/org/gridsuite/filter/identifierlistfilter/IdentifierListFilter.java @@ -8,6 +8,7 @@ package org.gridsuite.filter.identifierlistfilter; import com.fasterxml.jackson.annotation.JsonProperty; +import com.powsybl.iidm.network.IdentifiableType; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -76,4 +77,18 @@ public FilterEquipments toFilterEquipments(List identifi .notFoundEquipments(notFound) .build(); } + + @Override + public FilteredIdentifiables toFilteredIdentifiables(List identifiableAttributes) { + + FilterEquipments filterEquipments = toFilterEquipments(identifiableAttributes); + + FilteredIdentifiables filteredIdentifiables = new FilteredIdentifiables(); + filteredIdentifiables.setEquipmentIds(filterEquipments.getIdentifiableAttributes()); + IdentifiableType idType = IdentifiableType.valueOf(getEquipmentType().name()); + filteredIdentifiables.setNotFoundIds(filterEquipments.getNotFoundEquipments().stream().map(element -> + new IdentifiableAttributes(element, idType, null)).toList()); + + return filteredIdentifiables; + } } diff --git a/src/test/java/org/gridsuite/filter/utils/FiltersUtilsTest.java b/src/test/java/org/gridsuite/filter/utils/FiltersUtilsTest.java index dcfc293..c37142f 100644 --- a/src/test/java/org/gridsuite/filter/utils/FiltersUtilsTest.java +++ b/src/test/java/org/gridsuite/filter/utils/FiltersUtilsTest.java @@ -15,6 +15,7 @@ import org.gridsuite.filter.expertfilter.expertrule.CombinatorExpertRule; import org.gridsuite.filter.expertfilter.expertrule.StringExpertRule; import org.gridsuite.filter.identifierlistfilter.FilterEquipments; +import org.gridsuite.filter.identifierlistfilter.FilteredIdentifiables; import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes; import org.gridsuite.filter.identifierlistfilter.IdentifierListFilter; import org.gridsuite.filter.identifierlistfilter.IdentifierListFilterEquipmentAttributes; @@ -499,6 +500,15 @@ void testIdentifierListFilter() { assertEquals(2, identifiables.size()); assertEquals("GEN", identifiables.get(0).getId()); assertEquals("GEN2", identifiables.get(1).getId()); + + FilteredIdentifiables filteredIdentifiables = identifierListFilter.toFilteredIdentifiables(identifiableAttributes); + assertTrue(CollectionUtils.isEqualCollection(filteredIdentifiables.getNotFoundIds(), + List.of(new IdentifiableAttributes("notFound1", IdentifiableType.GENERATOR, null), + new IdentifiableAttributes("notFound2", IdentifiableType.GENERATOR, null)))); + + assertEquals(2, filteredIdentifiables.getEquipmentIds().size()); + assertEquals("GEN", filteredIdentifiables.getEquipmentIds().getFirst().getId()); + assertEquals("GEN2", filteredIdentifiables.getEquipmentIds().get(1).getId()); } @Test