From 17e750b246318d2218bf6bcbc595fb38518861da Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Fri, 7 Feb 2025 15:51:00 +0100 Subject: [PATCH 1/4] reindex equipmentType to separate lcc and vsc types of Hvdcline --- .../server/dto/elasticsearch/EquipmentInfos.java | 8 ++++++++ .../server/modifications/NetworkStoreListener.java | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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..7dd17db16 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,14 @@ public static Set getVoltageLevels(@NonNull Identifiable identi throw NetworkModificationException.createEquipmentTypeUnknown(identifiable.getClass().getSimpleName()); } + public static String getEquipmentTypeName(@NonNull Identifiable identifiable) { + return identifiable instanceof HvdcLine hvdcLine + ? String.format("%s_%s", + identifiable.getType().name(), + hvdcLine.getConverterStation1().getHvdcType().name()) + : identifiable.getType().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 e155587dc..94852a15e 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(); From b8f048189f3c8469590cc114afcddf99d2ed3fe5 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 13 Feb 2025 18:18:16 +0100 Subject: [PATCH 2/4] check on converter station types --- .../dto/elasticsearch/EquipmentInfos.java | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) 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 7dd17db16..e62f9a8a3 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 @@ -16,6 +16,7 @@ import org.springframework.data.elasticsearch.annotations.*; import org.springframework.lang.NonNull; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -88,11 +89,31 @@ public static Set getVoltageLevels(@NonNull Identifiable identi } public static String getEquipmentTypeName(@NonNull Identifiable identifiable) { - return identifiable instanceof HvdcLine hvdcLine - ? String.format("%s_%s", - identifiable.getType().name(), - hvdcLine.getConverterStation1().getHvdcType().name()) - : identifiable.getType().name(); + return Optional.of(identifiable) + .filter(HvdcLine.class::isInstance) + .map(i -> (HvdcLine) i) + .map(EquipmentInfos::getHvdcTypeName) + .orElseGet(() -> 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) { + Optional.of(hvdcLine) + .filter(hvdc -> { + var type1 = hvdc.getConverterStation1().getHvdcType(); + var type2 = hvdc.getConverterStation2().getHvdcType(); + return type1.equals(type2); + }) + .orElseThrow(() -> NetworkModificationException.createEquipmentTypeNotSupported( + hvdcLine.getClass().getSimpleName())); + + return String.format("%s_%s", + hvdcLine.getType().name(), + hvdcLine.getConverterStation1().getHvdcType().name()); } public static Set getVoltageLevelsInfos(@NonNull Identifiable identifiable) { From 196c6cf63f1336ba2322120e3d28411b3189c68c Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Fri, 14 Feb 2025 16:30:54 +0100 Subject: [PATCH 3/4] Slimane reviews --- .../dto/elasticsearch/EquipmentInfos.java | 22 +++++-------------- .../service/EquipmentInfosServiceTests.java | 12 +++++++--- 2 files changed, 14 insertions(+), 20 deletions(-) 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 e62f9a8a3..cb231c22e 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 @@ -16,7 +16,6 @@ import org.springframework.data.elasticsearch.annotations.*; import org.springframework.lang.NonNull; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -89,11 +88,7 @@ public static Set getVoltageLevels(@NonNull Identifiable identi } public static String getEquipmentTypeName(@NonNull Identifiable identifiable) { - return Optional.of(identifiable) - .filter(HvdcLine.class::isInstance) - .map(i -> (HvdcLine) i) - .map(EquipmentInfos::getHvdcTypeName) - .orElseGet(() -> identifiable.getType().name()); + return identifiable.getType() == IdentifiableType.HVDC_LINE ? getHvdcTypeName((HvdcLine) identifiable) : identifiable.getType().name(); } /** @@ -102,18 +97,11 @@ public static String getEquipmentTypeName(@NonNull Identifiable identifiable) * @throws NetworkModificationException if converter station types don't match */ private static String getHvdcTypeName(HvdcLine hvdcLine) { - Optional.of(hvdcLine) - .filter(hvdc -> { - var type1 = hvdc.getConverterStation1().getHvdcType(); - var type2 = hvdc.getConverterStation2().getHvdcType(); - return type1.equals(type2); - }) - .orElseThrow(() -> NetworkModificationException.createEquipmentTypeNotSupported( - hvdcLine.getClass().getSimpleName())); + if (hvdcLine.getConverterStation1().getHvdcType() != hvdcLine.getConverterStation2().getHvdcType()) { + throw NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()); + } - return String.format("%s_%s", - hvdcLine.getType().name(), - hvdcLine.getConverterStation1().getHvdcType().name()); + return String.format("%s_%s", hvdcLine.getType(), hvdcLine.getConverterStation1().getHvdcType()); } public static Set getVoltageLevelsInfos(@NonNull Identifiable identifiable) { 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)); From 7aec4842d6564a2f4ff08fe680b7e0a60c543443 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 20 Feb 2025 16:05:27 +0100 Subject: [PATCH 4/4] Thang review --- .../modification/server/dto/elasticsearch/EquipmentInfos.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 cb231c22e..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 @@ -101,7 +101,7 @@ private static String getHvdcTypeName(HvdcLine hvdcLine) { throw NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()); } - return String.format("%s_%s", hvdcLine.getType(), hvdcLine.getConverterStation1().getHvdcType()); + return String.format("%s_%s", hvdcLine.getType().name(), hvdcLine.getConverterStation1().getHvdcType().name()); } public static Set getVoltageLevelsInfos(@NonNull Identifiable identifiable) {