diff --git a/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java b/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java index c228b44ab..bdb5cf51f 100644 --- a/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java +++ b/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java @@ -87,6 +87,23 @@ public static Set getVoltageLevels(@NonNull Identifiable identi throw NetworkModificationException.createEquipmentTypeUnknown(identifiable.getClass().getSimpleName()); } + public static String getEquipmentTypeName(@NonNull Identifiable identifiable) { + return identifiable.getType() == IdentifiableType.HVDC_LINE ? getHvdcTypeName((HvdcLine) identifiable) : identifiable.getType().name(); + } + + /** + * @param hvdcLine The hvdc line to get hvdc type name + * @return The hvdc type name string + * @throws NetworkModificationException if converter station types don't match + */ + private static String getHvdcTypeName(HvdcLine hvdcLine) { + if (hvdcLine.getConverterStation1().getHvdcType() != hvdcLine.getConverterStation2().getHvdcType()) { + throw NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()); + } + + return String.format("%s_%s", hvdcLine.getType().name(), hvdcLine.getConverterStation1().getHvdcType().name()); + } + public static Set getVoltageLevelsInfos(@NonNull Identifiable identifiable) { return getVoltageLevels(identifiable).stream() diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java index f55a48e52..74d0b746a 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java @@ -181,7 +181,7 @@ public void onCreation(Identifiable identifiable) { .variantId(network.getVariantManager().getWorkingVariantId()) .id(identifiable.getId()) .name(identifiable.getNameOrId()) - .type(identifiable.getType().name()) + .type(EquipmentInfos.getEquipmentTypeName(identifiable)) .voltageLevels(EquipmentInfos.getVoltageLevelsInfos(identifiable)) .substations(EquipmentInfos.getSubstationsInfos(identifiable)) .build()); @@ -231,7 +231,7 @@ private static EquipmentInfos toEquipmentInfos(Identifiable identifiable, UUI .variantId(variantId) .id(identifiable.getId()) .name(identifiable.getNameOrId()) - .type(identifiable.getType().name()) + .type(EquipmentInfos.getEquipmentTypeName(identifiable)) .voltageLevels(EquipmentInfos.getVoltageLevelsInfos(identifiable)) .substations(EquipmentInfos.getSubstationsInfos(identifiable)) .build(); diff --git a/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java b/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java index 0b3d15e59..158bd744f 100644 --- a/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java +++ b/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java @@ -6,9 +6,7 @@ */ package org.gridsuite.modification.server.service; -import com.powsybl.iidm.network.Identifiable; -import com.powsybl.iidm.network.IdentifiableType; -import com.powsybl.iidm.network.Network; +import com.powsybl.iidm.network.*; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; import com.powsybl.network.store.iidm.impl.NetworkImpl; import org.gridsuite.modification.NetworkModificationException; @@ -269,6 +267,14 @@ void testBadType() { assertTrue(errorMessage.contains(String.format("The equipment type : %s is unknown", NetworkImpl.class.getSimpleName()))); } + @Test + void testUnsupportedHybridHvdc() { + Network network = NetworkCreation.create(NETWORK_UUID, true); + HvdcLine hvdcLine = network.getHvdcLine("hvdcLine"); + String errorMessage = assertThrows(NetworkModificationException.class, () -> EquipmentInfos.getEquipmentTypeName(hvdcLine)).getMessage(); + assertEquals(NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()).getMessage(), errorMessage); + } + @AfterEach public void tearDown() { equipmentInfosService.deleteVariants(NETWORK_UUID, List.of(VARIANT_NAME_1, VARIANT_NAME_2, VARIANT_NAME_3));