diff --git a/ampl-converter/src/main/java/com/powsybl/ampl/converter/AmplUtil.java b/ampl-converter/src/main/java/com/powsybl/ampl/converter/AmplUtil.java index 5a4246c1ac8..6048d31489d 100644 --- a/ampl-converter/src/main/java/com/powsybl/ampl/converter/AmplUtil.java +++ b/ampl-converter/src/main/java/com/powsybl/ampl/converter/AmplUtil.java @@ -55,11 +55,11 @@ public static StringToIntMapper createMapper(Network network) { } static String getXnodeBusId(TieLine tieLine) { - return tieLine.getUcteXnodeCode(); + return tieLine.getPairingKey(); } static String getXnodeVoltageLevelId(TieLine tieLine) { - return tieLine.getUcteXnodeCode(); + return tieLine.getPairingKey(); } public static void fillMapper(StringToIntMapper mapper, Network network) { diff --git a/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java b/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java index 07fc12bd462..0547cb82939 100644 --- a/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java +++ b/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java @@ -118,7 +118,7 @@ private static Network microBE(String modelId) { .setX(69.0) .setG(5.75e-5) .setB(2.1677e-5) - .setUcteXnodeCode("TN_Border_ST24") + .setPairingKey("TN_Border_ST24") .add(); be7.newCurrentLimits().setPermanentLimit(1180) .beginTemporaryLimit() @@ -144,7 +144,7 @@ private static Network microBE(String modelId) { .setX(68.2) .setG(3.08e-5) .setB(8.2938E-5) - .setUcteXnodeCode("TN_Border_ST23") + .setPairingKey("TN_Border_ST23") .add(); Bus busBrussels225 = vlBrussels225.getBusBreakerView().newBus() @@ -212,7 +212,7 @@ private static Network microBE(String modelId) { .setX(12.0) .setG(6e-5) .setB(1.49854e-4) - .setUcteXnodeCode("TN_Border_AL11") + .setPairingKey("TN_Border_AL11") .add(); be3.newCurrentLimits().setPermanentLimit(1371) .beginTemporaryLimit() @@ -238,7 +238,7 @@ private static Network microBE(String modelId) { .setX(6.3) .setG(4.2e-5) .setB(6.59734E-5) - .setUcteXnodeCode("TN_Border_GY11") + .setPairingKey("TN_Border_GY11") .add(); be5.newCurrentLimits().setPermanentLimit(1804) .beginTemporaryLimit() @@ -264,7 +264,7 @@ private static Network microBE(String modelId) { .setX(2.0) .setG(4e-5) .setB(2.51956e-5) - .setUcteXnodeCode("TN_Border_MA11") + .setPairingKey("TN_Border_MA11") .add(); be4.newCurrentLimits().setPermanentLimit(1226) .beginTemporaryLimit() diff --git a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/ACLineSegmentConversion.java b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/ACLineSegmentConversion.java index bae8276ffbc..6300c16a1f7 100644 --- a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/ACLineSegmentConversion.java +++ b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/ACLineSegmentConversion.java @@ -160,6 +160,6 @@ private static DanglingLineAdder getDanglingLineAdder(Context context, String bo .setX(boundaryLine.getX()) .setG(boundaryLine.getG1() + boundaryLine.getG2()) .setB(boundaryLine.getB1() + boundaryLine.getB2()) - .setUcteXnodeCode(findUcteXnodeCode(context, boundaryNode)); + .setPairingKey(findPairingKey(context, boundaryNode)); } } diff --git a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/AbstractConductingEquipmentConversion.java b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/AbstractConductingEquipmentConversion.java index a8cee8f4ab0..5c0b6389b10 100644 --- a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/AbstractConductingEquipmentConversion.java +++ b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/elements/AbstractConductingEquipmentConversion.java @@ -83,11 +83,11 @@ protected AbstractConductingEquipmentConversion( steadyStatePowerFlow = PowerFlow.UNDEFINED; } - public String findUcteXnodeCode(String boundaryNode) { - return findUcteXnodeCode(context, boundaryNode); + public String findPairingKey(String boundaryNode) { + return findPairingKey(context, boundaryNode); } - public static String findUcteXnodeCode(Context context, String boundaryNode) { + public static String findPairingKey(Context context, String boundaryNode) { return context.boundary().nameAtBoundary(boundaryNode); } @@ -232,7 +232,7 @@ public void convertToDanglingLine(int boundarySide, double r, double x, double g .setX(x) .setG(gch) .setB(bch) - .setUcteXnodeCode(findUcteXnodeCode(boundaryNode))) + .setPairingKey(findPairingKey(boundaryNode))) .orElseThrow(() -> new CgmesModelException("Dangling line " + id + " has no container")); identify(dlAdder); connect(dlAdder, modelSide); diff --git a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/EquipmentExport.java b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/EquipmentExport.java index af80c119f61..cc8f06da8c2 100644 --- a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/EquipmentExport.java +++ b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/EquipmentExport.java @@ -865,7 +865,7 @@ private static String writeDanglingLineConnectivity(DanglingLine danglingLine, S // If no information about original boundary has been preserved in the IIDM model, // we create a new ConnectivityNode in a fictitious Substation and Voltage Level LOG.info("Dangling line {}{} is not connected to a connectivity node in boundaries files: a fictitious substation and voltage level are created", - danglingLine.getId(), danglingLine.getUcteXnodeCode() != null ? " linked to X-node " + danglingLine.getUcteXnodeCode() : ""); + danglingLine.getId(), danglingLine.getPairingKey() != null ? " linked to X-node " + danglingLine.getPairingKey() : ""); connectivityNodeId = CgmesExportUtil.getUniqueId(); String connectivityNodeContainerId = createFictitiousContainerFor(danglingLine, baseVoltageId, cimNamespace, writer, context); ConnectivityNodeEq.write(connectivityNodeId, danglingLine.getNameOrId() + "_NODE", connectivityNodeContainerId, cimNamespace, writer, context); @@ -875,7 +875,7 @@ private static String writeDanglingLineConnectivity(DanglingLine danglingLine, S if (danglingLine.getProperty(Conversion.CGMES_PREFIX_ALIAS_PROPERTIES + CgmesNames.TOPOLOGICAL_NODE_BOUNDARY) == null) { // Also create a container if we will have to create a Topological Node for the boundary LOG.info("Dangling line {}{} is not connected to a topology node in boundaries files: a fictitious substation and voltage level are created", - danglingLine.getId(), danglingLine.getUcteXnodeCode() != null ? " linked to X-node " + danglingLine.getUcteXnodeCode() : ""); + danglingLine.getId(), danglingLine.getPairingKey() != null ? " linked to X-node " + danglingLine.getPairingKey() : ""); createFictitiousContainerFor(danglingLine, baseVoltageId, cimNamespace, writer, context); } } diff --git a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/TopologyExport.java b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/TopologyExport.java index 6650a2f6c4e..4aa3746fbbe 100644 --- a/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/TopologyExport.java +++ b/cgmes/cgmes-conversion/src/main/java/com/powsybl/cgmes/conversion/export/TopologyExport.java @@ -251,7 +251,7 @@ private static void writeDanglingLineTopologicalNodes(Network network, String ci // As a last resort, we create the TN in the same container of the dangling line LOG.error("Dangling line {}{} is not connected to a topology node in boundaries files: EQ profile must be exported for consistent results." + " Dangling line {} is considered entirely inside voltage level {}", - dl.getId(), dl.getUcteXnodeCode() != null ? " linked to X-node " + dl.getUcteXnodeCode() : "", dl.getId(), dl.getTerminal().getVoltageLevel().getId()); + dl.getId(), dl.getPairingKey() != null ? " linked to X-node " + dl.getPairingKey() : "", dl.getId(), dl.getTerminal().getVoltageLevel().getId()); containerId = context.getNamingStrategy().getCgmesId(dl.getTerminal().getVoltageLevel()); } String fictTopologicalNodeId = CgmesExportUtil.getUniqueId(); diff --git a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/network/compare/Comparison.java b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/network/compare/Comparison.java index d56961affab..b43788250f4 100644 --- a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/network/compare/Comparison.java +++ b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/network/compare/Comparison.java @@ -572,7 +572,7 @@ private void compareDanglingLines(DanglingLine expected, DanglingLine actual) { compare("b", expected.getB(), actual.getB()); compare("p0", expected.getP0(), actual.getP0()); compare("q0", expected.getQ0(), actual.getQ0()); - compare("UcteXnodeCode", expected.getUcteXnodeCode(), actual.getUcteXnodeCode()); + compare("pairingKey", expected.getPairingKey(), actual.getPairingKey()); compareLoadingLimits(expected, actual, expected.getActivePowerLimits().orElse(null), actual.getActivePowerLimits().orElse(null)); diff --git a/cgmes/cgmes-extensions/src/test/resources/eurostag_cgmes_line_boundary_node.xml b/cgmes/cgmes-extensions/src/test/resources/eurostag_cgmes_line_boundary_node.xml index cf930777f21..6a646020cdc 100644 --- a/cgmes/cgmes-extensions/src/test/resources/eurostag_cgmes_line_boundary_node.xml +++ b/cgmes/cgmes-extensions/src/test/resources/eurostag_cgmes_line_boundary_node.xml @@ -13,8 +13,8 @@ - - + + @@ -23,8 +23,8 @@ - - + + diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLine.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLine.java index c3951c6dcf8..e1b44b027c0 100644 --- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLine.java +++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLine.java @@ -100,12 +100,12 @@ * The shunt susceptance * * - * UcteXnodeCode + * PairingKey * String * - * no * - - * The dangling line's UCTE Xnode code + * The dangling line's pairing key * * * @@ -274,10 +274,10 @@ default Generation getGeneration() { } /** - * Get the UCTE Xnode code corresponding to this dangling line in the case + * Get the pairing key corresponding to this dangling line in the case * where the line is a boundary, return null otherwise. */ - String getUcteXnodeCode(); + String getPairingKey(); Boundary getBoundary(); diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLineAdder.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLineAdder.java index d2cfaec905e..97a1acb7a55 100644 --- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLineAdder.java +++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DanglingLineAdder.java @@ -41,7 +41,7 @@ interface GenerationAdder { DanglingLineAdder setB(double b); - DanglingLineAdder setUcteXnodeCode(String ucteXnodeCode); + DanglingLineAdder setPairingKey(String pairingKey); default GenerationAdder newGeneration() { throw new UnsupportedOperationException(); diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/TieLine.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/TieLine.java index 258041c16f3..1c8aa6754c7 100644 --- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/TieLine.java +++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/TieLine.java @@ -68,7 +68,7 @@ * * *

- * A tie line is created by matching two {@link DanglingLine} with the same Xnode code.
+ * A tie line is created by matching two {@link DanglingLine} with the same pairing key.
* We have two Dangling Lines within the Tie Line.
*

* @@ -91,10 +91,10 @@ public interface TieLine extends Branch, LineCharacteristics { /** - * Get the UCTE Xnode code corresponding to this tie line in the case where the + * Get the pairing key corresponding to this tie line in the case where the * line is a boundary, return null otherwise. */ - String getUcteXnodeCode(); + String getPairingKey(); /** * Get first dangling line of this tie line diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/util/TieLineUtil.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/util/TieLineUtil.java index 2c14bec5d93..e230f460707 100644 --- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/util/TieLineUtil.java +++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/util/TieLineUtil.java @@ -20,6 +20,7 @@ import java.util.*; import java.util.function.BiConsumer; import java.util.function.Function; +import java.util.stream.Collectors; import static com.powsybl.iidm.network.util.TieLineReports.*; @@ -157,41 +158,41 @@ public static void mergeDifferentAliases(DanglingLine dl1, DanglingLine dl2, Map /** * If it exists, find the dangling line in the merging network that should be associated to a candidate dangling line in the network to be merged. * Two dangling lines in different IGM should be associated if: - * - they have the same non-null X-node code and are the only dangling lines to have this X-node code in their respective networks + * - they have the same non-null pairing key and are the only dangling lines to have this pairing key in their respective networks * OR - * - they have the same non-null X-node code and are the only connected dangling lines to have this X-node code in their respective networks + * - they have the same non-null pairing key and are the only connected dangling lines to have this pairing key in their respective networks * * @param candidateDanglingLine candidate dangling line in the network to be merged - * @param getDanglingLinesByXnodeCode function to retrieve dangling lines with a given X-node code in the merging network. + * @param getDanglingLinesByPairingKey function to retrieve dangling lines with a given pairing key in the merging network. * @param associateDanglingLines function associating two dangling lines */ - public static void findAndAssociateDanglingLines(DanglingLine candidateDanglingLine, - Function> getDanglingLinesByXnodeCode, + public static void findAndAssociateDanglingLines(DanglingLine candidateDanglingLine, Function> getDanglingLinesByPairingKey, BiConsumer associateDanglingLines) { Objects.requireNonNull(candidateDanglingLine); - Objects.requireNonNull(getDanglingLinesByXnodeCode); + Objects.requireNonNull(getDanglingLinesByPairingKey); Objects.requireNonNull(associateDanglingLines); - // mapping by ucte xnode code - if (candidateDanglingLine.getUcteXnodeCode() != null) { // if X-node code null: no associated dangling line + // mapping by pairing key + if (candidateDanglingLine.getPairingKey() != null) { // if pairing key null: no associated dangling line if (candidateDanglingLine.getNetwork().getDanglingLineStream(DanglingLineFilter.UNPAIRED) .filter(d -> d != candidateDanglingLine) - .filter(d -> candidateDanglingLine.getUcteXnodeCode().equals(d.getUcteXnodeCode())) - .anyMatch(d -> d.getTerminal().isConnected())) { // check that there is no connected dangling line with same X-node code in the network to be merged + .filter(d -> candidateDanglingLine.getPairingKey().equals(d.getPairingKey())) + .anyMatch(d -> d.getTerminal().isConnected())) { // check that there is no connected dangling line with same pairing key in the network to be merged return; // in that case, do nothing } - List dls = getDanglingLinesByXnodeCode.apply(candidateDanglingLine.getUcteXnodeCode()); + List dls = getDanglingLinesByPairingKey.apply(candidateDanglingLine.getPairingKey()); if (dls != null) { if (dls.size() == 1) { // if there is exactly one dangling line in the merging network, merge it associateDanglingLines.accept(dls.get(0), candidateDanglingLine); } if (dls.size() > 1) { // if more than one dangling line in the merging network, check how many are connected - List connectedDls = dls.stream().filter(dl -> dl.getTerminal().isConnected()).toList(); + List connectedDls = dls.stream().filter(dl -> dl.getTerminal().isConnected()).collect(Collectors.toList()); if (connectedDls.size() == 1) { // if there is exactly one connected dangling line in the merging network, merge it. Otherwise, do nothing associateDanglingLines.accept(connectedDls.get(0), candidateDanglingLine); } } } } + } public static double getR(DanglingLine dl1, DanglingLine dl2) { diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineAdderImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineAdderImpl.java index 0c29771d173..67d55ed6224 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineAdderImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineAdderImpl.java @@ -32,7 +32,7 @@ class DanglingLineAdderImpl extends AbstractInjectionAdder network, String id, String name, boolean fictitious, double p0, double q0, double r, double x, double g, double b, String ucteXnodeCode, GenerationImpl generation) { + DanglingLineImpl(Ref network, String id, String name, boolean fictitious, double p0, double q0, double r, double x, double g, double b, String pairingKey, GenerationImpl generation) { super(network, id, name, fictitious); this.network = network; int variantArraySize = network.get().getVariantManager().getVariantArraySize(); @@ -267,7 +267,7 @@ void allocateVariantArrayElement(int[] indexes, int sourceIndex) { this.x = x; this.g = g; this.b = b; - this.ucteXnodeCode = ucteXnodeCode; + this.pairingKey = pairingKey; this.operationalLimitsHolder = new OperationalLimitsHolderImpl(this, "limits"); this.boundary = new DanglingLineBoundaryImpl(this); this.generation = generation != null ? generation.attach(this) : null; @@ -410,8 +410,8 @@ public DanglingLineImpl setB(double b) { } @Override - public String getUcteXnodeCode() { - return ucteXnodeCode; + public String getPairingKey() { + return pairingKey; } @Override diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NetworkImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NetworkImpl.java index 328853266f9..5f42be35f58 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NetworkImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NetworkImpl.java @@ -909,15 +909,15 @@ private void merge(Network other) { // try to find dangling lines couples List lines = new ArrayList<>(); - Map> dl1byXnodeCode = new HashMap<>(); + Map> dl1byPairingKey = new HashMap<>(); for (DanglingLine dl1 : getDanglingLines(DanglingLineFilter.ALL)) { - if (dl1.getUcteXnodeCode() != null) { - dl1byXnodeCode.computeIfAbsent(dl1.getUcteXnodeCode(), k -> new ArrayList<>()).add(dl1); + if (dl1.getPairingKey() != null) { + dl1byPairingKey.computeIfAbsent(dl1.getPairingKey(), k -> new ArrayList<>()).add(dl1); } } for (DanglingLine dl2 : Lists.newArrayList(other.getDanglingLines(DanglingLineFilter.ALL))) { - findAndAssociateDanglingLines(dl2, dl1byXnodeCode::get, (dll1, dll2) -> pairDanglingLines(lines, dll1, dll2, dl1byXnodeCode)); + findAndAssociateDanglingLines(dl2, dl1byPairingKey::get, (dll1, dll2) -> pairDanglingLines(lines, dll1, dll2, dl1byPairingKey)); } // create a subnetwork for the other network @@ -979,10 +979,10 @@ private static void createSubnetwork(NetworkImpl parent, NetworkImpl original) { parent.index.checkAndAdd(sn); } - private void pairDanglingLines(List danglingLinePairs, DanglingLine dl1, DanglingLine dl2, Map> dl1byXnodeCode) { + private void pairDanglingLines(List danglingLinePairs, DanglingLine dl1, DanglingLine dl2, Map> dl1byPairingKey) { if (dl1 != null) { - if (dl1.getUcteXnodeCode() != null) { - dl1byXnodeCode.get(dl1.getUcteXnodeCode()).remove(dl1); + if (dl1.getPairingKey() != null) { + dl1byPairingKey.get(dl1.getPairingKey()).remove(dl1); } DanglingLinePair l = new DanglingLinePair(); l.id = buildMergedId(dl1.getId(), dl2.getId()); diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineAdderImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineAdderImpl.java index a2e68c5cda2..9a405b00f89 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineAdderImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineAdderImpl.java @@ -65,8 +65,8 @@ public TieLineImpl add() { if (dl1.getTieLine().isPresent() || dl2.getTieLine().isPresent()) { throw new ValidationException(this, "danglingLine1 (" + dl1Id + ") and/or danglingLine2 (" + dl2Id + ") already has a tie line"); } - if (dl1.getUcteXnodeCode() != null && dl2.getUcteXnodeCode() != null && !Objects.equals(dl1.getUcteXnodeCode(), dl2.getUcteXnodeCode())) { - throw new ValidationException(this, "ucteXnodeCode is not consistent"); + if (dl1.getPairingKey() != null && dl2.getPairingKey() != null && !Objects.equals(dl1.getPairingKey(), dl2.getPairingKey())) { + throw new ValidationException(this, "pairingKey is not consistent"); } VoltageLevelExt voltageLevel1 = dl1.getTerminal().getVoltageLevel(); VoltageLevelExt voltageLevel2 = dl2.getTerminal().getVoltageLevel(); diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java index 3b35ae036e2..113ba56ba00 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java @@ -70,8 +70,8 @@ private DanglingLineImpl attach(DanglingLineImpl danglingLine) { } @Override - public String getUcteXnodeCode() { - return Optional.ofNullable(danglingLine1.getUcteXnodeCode()).orElseGet(() -> danglingLine2.getUcteXnodeCode()); + public String getPairingKey() { + return Optional.ofNullable(danglingLine1.getPairingKey()).orElseGet(() -> danglingLine2.getPairingKey()); } @Override diff --git a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/MergeTest.java b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/MergeTest.java index ef9ec429b32..69e6b563a56 100644 --- a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/MergeTest.java +++ b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/MergeTest.java @@ -86,8 +86,8 @@ private static Network createNetworkWithDanglingLine(String nid) { .setB(0.001) .setP0(10) .setQ0(1) - // Same UCTE XnodeCode for dangling lines - .setUcteXnodeCode("X") + // Same pairing key for dangling lines + .setPairingKey("X") .add(); vl.getNodeBreakerView().newBreaker() .setId(id("voltageLevel1BreakerDLb", nid)) @@ -235,7 +235,7 @@ private static Network createNodeBreakerWithVoltageAngleLimit(NetworkFactory net createInternalConnection(s2vl1, 0, 3); createLoad(s2vl1, id("S2VL1-Load", nid), 45.0, 9.0, 1); - createDanglingLine(network, id("S2VL1", nid), id("Dl-3", nid), 70.0, 10.0, "ucteNode", 3); + createDanglingLine(network, id("S2VL1", nid), id("Dl-3", nid), 70.0, 10.0, "pairingKey", 3); // Line between both substations createLine(network, id("S1VL1", nid), id("S2VL1", nid), id("Line-2-2", nid), 2, 2); @@ -311,7 +311,7 @@ private static void createLine(Network network, String vl1id, String vl2id, Stri .add(); } - private static void createDanglingLine(Network network, String vlId, String id, double p0, double q0, String ucteCode, int node) { + private static void createDanglingLine(Network network, String vlId, String id, double p0, double q0, String pairingKey, int node) { network.getVoltageLevel(vlId).newDanglingLine() .setId(id) .setR(0.01) @@ -320,7 +320,7 @@ private static void createDanglingLine(Network network, String vlId, String id, .setB(0.0) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteCode) + .setPairingKey(pairingKey) .setNode(node) .setEnsureIdUnicity(false) .add(); diff --git a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/TieLineTest.java b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/TieLineTest.java index 8da9427fe1e..a5e5e82ecda 100644 --- a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/TieLineTest.java +++ b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/TieLineTest.java @@ -243,7 +243,7 @@ void testDefaultValuesTieLine() { .setR(1.0) .setX(2.0) .setBus("S1VL1-BUS") - .setUcteXnodeCode("UcteNode") + .setPairingKey("key") .add(); DanglingLine dl2 = s2vl1.newDanglingLine() .setId(boundarySide2.name()) @@ -253,7 +253,7 @@ void testDefaultValuesTieLine() { .setR(1.0) .setX(2.0) .setBus("S2VL1-BUS") - .setUcteXnodeCode("UcteNode") + .setPairingKey("key") .add(); TieLine tieLine = network.newTieLine() @@ -334,7 +334,7 @@ private static Network createNetworkWithTieLine(NetworkFactory networkFactory, .setX(0.118) .setG(0.04) .setB(0.13) - .setUcteXnodeCode("UcteNode") + .setPairingKey("key") .add(); TieLine tieLine = network.newTieLine() @@ -406,7 +406,7 @@ private static Network createNetworkWithTieLineWithDifferentNominalVoltageAtEnds .setX(9.5543748) .setG(0.0) .setB(0.00032976265) - .setUcteXnodeCode("UcteNode") + .setPairingKey("key") .add(); DanglingLine dl2 = s2vl1.newDanglingLine() .setBus("S2VL1-BUS") diff --git a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SVTest.java b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SVTest.java index 946e321786b..0a394b5ae96 100644 --- a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SVTest.java +++ b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SVTest.java @@ -256,7 +256,7 @@ private static void createDanglingLine(Network network, String vlId, String id, .setB(0.0005) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteCode) + .setPairingKey(ucteCode) .setNode(node) .setEnsureIdUnicity(false) .add(); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceTieLinesByLines.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceTieLinesByLines.java index bf931617cc2..340479fc5ee 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceTieLinesByLines.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceTieLinesByLines.java @@ -71,7 +71,7 @@ public void apply(Network network, boolean throwException, ComputationManager co dl1::getApparentPowerLimits, dl1::getCurrentLimits); TopologyModificationUtils.LoadingLimitsBags limits2 = new TopologyModificationUtils.LoadingLimitsBags(dl2::getActivePowerLimits, dl2::getApparentPowerLimits, dl2::getCurrentLimits); - String xNode = tl.getUcteXnodeCode(); + String pairingKey = tl.getPairingKey(); double p1 = dl1.getTerminal().getP(); double q1 = dl1.getTerminal().getQ(); double p2 = dl2.getTerminal().getP(); @@ -98,14 +98,14 @@ public void apply(Network network, boolean throwException, ComputationManager co line.getTerminal2().setP(p2).setQ(q2); addLoadingLimits(line, limits1, Branch.Side.ONE); addLoadingLimits(line, limits2, Branch.Side.TWO); - // Add previous dangling lines ID and Xnode + // Add previous dangling lines ID and pairing key line.addAlias(dl1Id, "danglingLine1Id"); line.addAlias(dl2Id, "danglingLine2Id"); - if (xNode != null) { - line.addAlias(xNode, "xNode"); + if (pairingKey != null) { + line.addAlias(pairingKey, "pairingKey"); } - LOG.info("Removed tie line {} and associated dangling lines {} and {} at X-node {}. Created line {}", line.getId(), dl1Id, dl2Id, xNode, line.getId()); - removedTieLineAndAssociatedDanglingLines(reporter, line.getId(), dl1Id, dl2Id, xNode); + LOG.info("Removed tie line {} and associated dangling lines {} and {} with pairing key {}. Created line {}", line.getId(), dl1Id, dl2Id, pairingKey, line.getId()); + removedTieLineAndAssociatedDanglingLines(reporter, line.getId(), dl1Id, dl2Id, pairingKey); createdLineReport(reporter, line.getId()); } } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationReports.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationReports.java index 48f38bc259c..85de74f9f45 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationReports.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationReports.java @@ -62,14 +62,14 @@ public static void removedLineReport(Reporter reporter, String lineId) { .build()); } - public static void removedTieLineAndAssociatedDanglingLines(Reporter reporter, String tieLineId, String danglingLineId1, String danglingLineId2, String xnode) { + public static void removedTieLineAndAssociatedDanglingLines(Reporter reporter, String tieLineId, String danglingLineId1, String danglingLineId2, String pairingKey) { reporter.report(Report.builder() .withKey("removedTieLineAndAssociatedDanglingLines") - .withDefaultMessage("Removed tie line ${tieLineId} and associated dangling lines ${danglingLineId1} and ${danglingLineId2} at X-node ${xnode}") + .withDefaultMessage("Removed tie line ${tieLineId} and associated dangling lines ${danglingLineId1} and ${danglingLineId2} with pairing key ${pairingKey}") .withValue("tieLineId", tieLineId) .withValue("danglingLineId1", danglingLineId1) .withValue("danglingLineId2", danglingLineId2) - .withValue("xnode", xnode == null ? "" : xnode) + .withValue("pairingKey", pairingKey == null ? "" : pairingKey) .withSeverity(TypedValue.INFO_SEVERITY) .build()); } diff --git a/iidm/iidm-modification/src/test/resources/eurostag-replace-tl.xml b/iidm/iidm-modification/src/test/resources/eurostag-replace-tl.xml index 3c00becea8a..a8938566468 100644 --- a/iidm/iidm-modification/src/test/resources/eurostag-replace-tl.xml +++ b/iidm/iidm-modification/src/test/resources/eurostag-replace-tl.xml @@ -44,7 +44,7 @@ NHV1_XNODE1 XNODE1_NHV2 test1 - XNODE1 + XNODE1 @@ -54,7 +54,7 @@ - XNODE2 + XNODE2 XNODE2_NHV2 NVH1_XNODE2 diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractComponentCalculationBugWhenMergingTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractComponentCalculationBugWhenMergingTest.java index 507f53b972a..35e25d7aa35 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractComponentCalculationBugWhenMergingTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractComponentCalculationBugWhenMergingTest.java @@ -42,7 +42,7 @@ public void shouldNotThrowShouldNotHappen() { .setX(1) .setG(0) .setB(0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); Network n2 = Network.create("n2", "test"); Substation s2 = n2.newSubstation() @@ -67,7 +67,7 @@ public void shouldNotThrowShouldNotHappen() { .setX(1) .setG(0) .setB(0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); // to reproduce the issue, force connected components on one of the network (n1) // and not the other one diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractConnectedComponentWithTieLineBugTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractConnectedComponentWithTieLineBugTest.java index f50e482c096..f31a95d17db 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractConnectedComponentWithTieLineBugTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractConnectedComponentWithTieLineBugTest.java @@ -69,7 +69,7 @@ public void test() { .setX(1.0) .setG(0.0) .setB(0.0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); DanglingLine dl2 = vl2.newDanglingLine() .setBus("b2") @@ -80,7 +80,7 @@ public void test() { .setX(1.0) .setG(0.0) .setB(0.0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); n.newTieLine() .setId("l1 + l2") diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java index 073bf3bb93d..ddd95e2fa18 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java @@ -63,7 +63,7 @@ public void baseTests() { double q0 = 60.0; String id = "danglingId"; String name = "danlingName"; - String ucteXnodeCode = "code"; + String pairingKey = "code"; voltageLevel.newDanglingLine() .setId(id) .setName(name) @@ -73,7 +73,7 @@ public void baseTests() { .setB(b) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteXnodeCode) + .setPairingKey(pairingKey) .setBus(BUS_VL_ID) .setConnectableBus(BUS_VL_ID) .add(); @@ -89,7 +89,7 @@ public void baseTests() { assertEquals(id, danglingLine.getId()); assertEquals(name, danglingLine.getOptionalName().orElse(null)); assertEquals(name, danglingLine.getNameOrId()); - assertEquals(ucteXnodeCode, danglingLine.getUcteXnodeCode()); + assertEquals(pairingKey, danglingLine.getPairingKey()); assertNull(danglingLine.getGeneration()); // setter getter @@ -141,7 +141,7 @@ public void testDefaultValuesDanglingLine() { .setX(20.0) .setP0(30.0) .setQ0(40.0) - .setUcteXnodeCode("code") + .setPairingKey("code") .setBus(BUS_VL_ID) .add(); @@ -256,7 +256,7 @@ public void withRegulatingCapabilityTests() { double q0 = 0.0; String id = "danglingId"; String name = "danlingName"; - String ucteXnodeCode = "code"; + String pairingKey = "code"; DanglingLineAdder adder = voltageLevel.newDanglingLine() .setId(id) .setName(name) @@ -266,7 +266,7 @@ public void withRegulatingCapabilityTests() { .setB(b) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteXnodeCode) + .setPairingKey(pairingKey) .setBus(BUS_VL_ID) .setConnectableBus(BUS_VL_ID) .newGeneration() @@ -308,7 +308,7 @@ private void createDanglingLine(String id, String name, double r, double x, doub .setB(b) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteCode) + .setPairingKey(ucteCode) .setBus(BUS_VL_ID) .setConnectableBus(BUS_VL_ID) .add(); diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractMergeNetworkTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractMergeNetworkTest.java index b67e8abeef6..e8dc69631b3 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractMergeNetworkTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractMergeNetworkTest.java @@ -490,7 +490,7 @@ private static void addDanglingLine(Network n, String voltageLevelId, String id, .setX(2.0) .setG(4.0) .setB(5.0) - .setUcteXnodeCode(code) + .setPairingKey(code) .add(); Terminal t = dl.getTerminal(); t.setP(1.); diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractNullPointerWhenRemovingMergedLineBugTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractNullPointerWhenRemovingMergedLineBugTest.java index 64d03c32e68..fb71216b185 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractNullPointerWhenRemovingMergedLineBugTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractNullPointerWhenRemovingMergedLineBugTest.java @@ -41,7 +41,7 @@ public void test() { .setX(1) .setG(0) .setB(0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); Network n2 = Network.create("n2", "test"); Substation s2 = n2.newSubstation() @@ -66,7 +66,7 @@ public void test() { .setX(1) .setG(0) .setB(0) - .setUcteXnodeCode("XNODE") + .setPairingKey("XNODE") .add(); assertEquals(0, n1.getLineCount()); assertEquals(1, n1.getDanglingLineCount()); diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractSubnetworksExplorationTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractSubnetworksExplorationTest.java index 142ef254f19..ac0f6921f5e 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractSubnetworksExplorationTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractSubnetworksExplorationTest.java @@ -218,7 +218,7 @@ private static Network createNetwork(String networkId, Country otherSubstationCo .setId(id("danglingLine3", networkId)) .setNode(17) .setR(1.0).setX(0.1).setG(0.0).setB(0.001).setP0(10).setQ0(1) - .setUcteXnodeCode("mergingKey") // when merging both networks, this key will be used to create a tie line + .setPairingKey("mergingKey") // when merging both networks, this key will be used to create a tie line .add(); return n; } diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractTieLineTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractTieLineTest.java index 054c86167e7..680114c48b8 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractTieLineTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractTieLineTest.java @@ -75,7 +75,7 @@ public void testTieLineAdder() { .setX(x) .setB(hl1b1 + hl1b2) .setG(hl1g1 + hl1g2) - .setUcteXnodeCode("ucte") + .setPairingKey("ucte") .add(); DanglingLine dl2 = voltageLevelB.newDanglingLine() .setBus("busB") @@ -107,7 +107,7 @@ public void testTieLineAdder() { assertFalse(network.getDanglingLines(DanglingLineFilter.UNPAIRED).iterator().hasNext()); assertEquals(IdentifiableType.TIE_LINE, tieLine.getType()); - assertEquals("ucte", tieLine.getUcteXnodeCode()); + assertEquals("ucte", tieLine.getPairingKey()); assertEquals("hl1", tieLine.getDanglingLine1().getId()); assertEquals(DANGLING1_NAME, tieLine.getDanglingLine1().getOptionalName().orElse(null)); assertEquals("hl2", tieLine.getDanglingLine2().getId()); @@ -212,7 +212,7 @@ public void danglingLine2NotSet() { .setG(65.0) .setP0(0.0) .setQ0(0.0) - .setUcteXnodeCode("ucte") + .setPairingKey("ucte") .add(); // adder ValidationException e = assertThrows(ValidationException.class, () -> network.newTieLine() @@ -418,7 +418,7 @@ private void createTieLineWithDanglingline2ByDefault(String id, String name, Str .setG(8.5) .setP0(0) .setQ0(0) - .setUcteXnodeCode(code) + .setPairingKey(code) .add(); network.newTieLine() .setId(id) diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java index 9474f8d1a9f..a62a102e77b 100644 --- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java +++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java @@ -211,7 +211,7 @@ public static Network createWithTieLines(NetworkFactory networkFactory) { .setG(1E-6) .setB(386E-6 / 2) .setBus("NHV1") - .setUcteXnodeCode("XNODE1") + .setPairingKey("XNODE1") .add(); DanglingLine xnode1nhv2 = network.getVoltageLevel("VLHV2").newDanglingLine() .setId(DANGLING_LINE_XNODE1_2) @@ -222,7 +222,7 @@ public static Network createWithTieLines(NetworkFactory networkFactory) { .setG(2E-6) .setB(386E-6 / 2) .setBus("NHV2") - .setUcteXnodeCode("XNODE1") + .setPairingKey("XNODE1") .add(); network.newTieLine() .setId("NHV1_NHV2_1") @@ -238,7 +238,7 @@ public static Network createWithTieLines(NetworkFactory networkFactory) { .setG(1E-6) .setB(386E-6 / 2) .setBus("NHV1") - .setUcteXnodeCode("XNODE2") + .setPairingKey("XNODE2") .add(); DanglingLine xnode2nhv2 = network.getVoltageLevel("VLHV2").newDanglingLine() .setId(DANGLING_LINE_XNODE2_2) @@ -249,7 +249,7 @@ public static Network createWithTieLines(NetworkFactory networkFactory) { .setG(2E-6) .setB(386E-6 / 2) .setBus("NHV2") - .setUcteXnodeCode("XNODE2") + .setPairingKey("XNODE2") .add(); network.newTieLine() .setId("NHV1_NHV2_2") diff --git a/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/DanglingLineXml.java b/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/DanglingLineXml.java index 246a2b88ad4..d6d3ff90efa 100644 --- a/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/DanglingLineXml.java +++ b/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/DanglingLineXml.java @@ -84,8 +84,13 @@ static void writeRootElementAttributesInternal(DanglingLine dl, Supplier context.getWriter().writeAttribute("ucteXnodeCode", dl.getPairingKey()) + ); + IidmXmlUtil.runFromMinimumVersion(IidmXmlVersion.V_1_11, context, + () -> context.getWriter().writeAttribute("pairingKey", dl.getPairingKey()) + ); } Terminal t = terminalGetter.get(); writeNodeOrBus(null, t, context); @@ -130,8 +135,14 @@ protected void writeSubElements(DanglingLine dl, VoltageLevel vl, NetworkXmlWrit @Override protected DanglingLine readRootElementAttributes(DanglingLineAdder adder, VoltageLevel voltageLevel, NetworkXmlReaderContext context) { readRootElementAttributesInternal(adder, context); - String ucteXnodeCode = context.getReader().getAttributeValue(null, "ucteXnodeCode"); - adder.setUcteXnodeCode(ucteXnodeCode); + IidmXmlUtil.runUntilMaximumVersion(IidmXmlVersion.V_1_10, context, () -> { + String pairingKey = context.getReader().getAttributeValue(null, "ucteXnodeCode"); + adder.setPairingKey(pairingKey); + }); + IidmXmlUtil.runFromMinimumVersion(IidmXmlVersion.V_1_11, context, () -> { + String pairingKey = context.getReader().getAttributeValue(null, "pairingKey"); + adder.setPairingKey(pairingKey); + }); DanglingLine dl = adder.add(); readPQ(null, dl.getTerminal(), context.getReader()); return dl; diff --git a/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/TieLineXml.java b/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/TieLineXml.java index abfc6214f4d..b5822914bca 100644 --- a/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/TieLineXml.java +++ b/iidm/iidm-xml-converter/src/main/java/com/powsybl/iidm/xml/TieLineXml.java @@ -76,8 +76,8 @@ protected void writeRootElementAttributes(TieLine tl, Network n, NetworkXmlWrite context.getWriter().writeAttribute("danglingLineId2", context.getAnonymizer().anonymizeString(tl.getDanglingLine2().getId())); }); IidmXmlUtil.runUntilMaximumVersion(IidmXmlVersion.V_1_9, context, () -> { - if (tl.getUcteXnodeCode() != null) { - context.getWriter().writeAttribute("ucteXnodeCode", tl.getUcteXnodeCode()); + if (tl.getPairingKey() != null) { + context.getWriter().writeAttribute("ucteXnodeCode", tl.getPairingKey()); } writeNodeOrBus(1, tl.getDanglingLine1().getTerminal(), context); writeNodeOrBus(2, tl.getDanglingLine2().getTerminal(), context); @@ -171,7 +171,6 @@ private static String readDanglingLine(Network network, NetworkXmlReaderContext double b1 = XmlUtil.readDoubleAttribute(context.getReader(), "b1_" + side); double g2 = XmlUtil.readDoubleAttribute(context.getReader(), "g2_" + side); double b2 = XmlUtil.readDoubleAttribute(context.getReader(), "b2_" + side); - String ucteXnodeCode = context.getReader().getAttributeValue(null, "ucteXnodeCode"); DanglingLineAdder adder = network.getVoltageLevel(voltageLevelId).newDanglingLine().setId(id) .setName(name) .setR(r) @@ -179,8 +178,15 @@ private static String readDanglingLine(Network network, NetworkXmlReaderContext .setG(g1 + g2) .setB(b1 + b2) .setP0(0.0) - .setQ0(0.0) - .setUcteXnodeCode(ucteXnodeCode); + .setQ0(0.0); + IidmXmlUtil.runUntilMaximumVersion(IidmXmlVersion.V_1_10, context, () -> { + String pairingKey = context.getReader().getAttributeValue(null, "ucteXnodeCode"); + adder.setPairingKey(pairingKey); + }); + IidmXmlUtil.runFromMinimumVersion(IidmXmlVersion.V_1_11, context, () -> { + String pairingKey = context.getReader().getAttributeValue(null, "pairingKey"); + adder.setPairingKey(pairingKey); + }); readNodeOrBus(adder, String.valueOf(side), context); IidmXmlUtil.runFromMinimumVersion(IidmXmlVersion.V_1_3, context, () -> { diff --git a/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_V1_11.xsd b/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_V1_11.xsd index 20a603dac18..96aeeccc824 100644 --- a/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_V1_11.xsd +++ b/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_V1_11.xsd @@ -373,7 +373,7 @@ - + diff --git a/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_equipment_V1_11.xsd b/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_equipment_V1_11.xsd index da3ccb95bdb..6b321062d1e 100644 --- a/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_equipment_V1_11.xsd +++ b/iidm/iidm-xml-converter/src/main/resources/xsd/iidm_equipment_V1_11.xsd @@ -369,7 +369,7 @@ - + diff --git a/iidm/iidm-xml-converter/src/test/java/com/powsybl/iidm/xml/NetworkXmlTest.java b/iidm/iidm-xml-converter/src/test/java/com/powsybl/iidm/xml/NetworkXmlTest.java index fcaa6d054bc..54c53e052eb 100644 --- a/iidm/iidm-xml-converter/src/test/java/com/powsybl/iidm/xml/NetworkXmlTest.java +++ b/iidm/iidm-xml-converter/src/test/java/com/powsybl/iidm/xml/NetworkXmlTest.java @@ -212,7 +212,7 @@ private Network createNetwork(int num) { .setX(2.0) .setG(4.0) .setB(5.0) - .setUcteXnodeCode("code") + .setPairingKey("code") .add(); // Add an extension on the network and on an inner element diff --git a/iidm/iidm-xml-converter/src/test/resources/V1_11/multiple-subnetwork-levels.xml b/iidm/iidm-xml-converter/src/test/resources/V1_11/multiple-subnetwork-levels.xml index a8e1c018e3b..e266636e5df 100644 --- a/iidm/iidm-xml-converter/src/test/resources/V1_11/multiple-subnetwork-levels.xml +++ b/iidm/iidm-xml-converter/src/test/resources/V1_11/multiple-subnetwork-levels.xml @@ -8,7 +8,7 @@
- +
@@ -20,7 +20,7 @@ - + diff --git a/iidm/iidm-xml-converter/src/test/resources/V1_11/subnetworks.xml b/iidm/iidm-xml-converter/src/test/resources/V1_11/subnetworks.xml index b5927e4b1fe..5f6b99cd357 100644 --- a/iidm/iidm-xml-converter/src/test/resources/V1_11/subnetworks.xml +++ b/iidm/iidm-xml-converter/src/test/resources/V1_11/subnetworks.xml @@ -9,7 +9,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/iidm/iidm-xml-converter/src/test/resources/V1_11/tieline.xml b/iidm/iidm-xml-converter/src/test/resources/V1_11/tieline.xml index cc678e06500..9566204e2bb 100644 --- a/iidm/iidm-xml-converter/src/test/resources/V1_11/tieline.xml +++ b/iidm/iidm-xml-converter/src/test/resources/V1_11/tieline.xml @@ -13,8 +13,8 @@ - - + + @@ -23,8 +23,8 @@ - - + + diff --git a/iidm/iidm-xml-converter/src/test/resources/V1_11/tielineWithAliases.xml b/iidm/iidm-xml-converter/src/test/resources/V1_11/tielineWithAliases.xml index bc6b2fe32a1..63e4287ba0c 100644 --- a/iidm/iidm-xml-converter/src/test/resources/V1_11/tielineWithAliases.xml +++ b/iidm/iidm-xml-converter/src/test/resources/V1_11/tielineWithAliases.xml @@ -13,8 +13,8 @@ - - + + @@ -23,8 +23,8 @@ - - + + diff --git a/iidm/iidm-xml-converter/src/test/resources/V1_11/tl-loading-limits.xml b/iidm/iidm-xml-converter/src/test/resources/V1_11/tl-loading-limits.xml index 5b300f0bd50..a0b972890ce 100644 --- a/iidm/iidm-xml-converter/src/test/resources/V1_11/tl-loading-limits.xml +++ b/iidm/iidm-xml-converter/src/test/resources/V1_11/tl-loading-limits.xml @@ -13,7 +13,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/DefaultNamingStrategy.java b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/DefaultNamingStrategy.java index e89178889b3..83ae2d064b7 100644 --- a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/DefaultNamingStrategy.java +++ b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/DefaultNamingStrategy.java @@ -44,7 +44,7 @@ public UcteNodeCode getUcteNodeCode(Bus bus) { @Override public UcteNodeCode getUcteNodeCode(DanglingLine danglingLine) { - return getUcteNodeCode(danglingLine.getUcteXnodeCode()); + return getUcteNodeCode(danglingLine.getPairingKey()); } @Override diff --git a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteExporter.java b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteExporter.java index 357bec3e1b6..f216fdacbc4 100644 --- a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteExporter.java +++ b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteExporter.java @@ -358,7 +358,7 @@ private static void convertXNode(UcteNetwork ucteNetwork, DanglingLine danglingL * @param context The context used to store temporary data during the conversion */ private static void convertXNode(UcteNetwork ucteNetwork, TieLine tieLine, UcteExporterContext context) { - UcteNodeCode xnodeCode = context.getNamingStrategy().getUcteNodeCode(tieLine.getUcteXnodeCode()); + UcteNodeCode xnodeCode = context.getNamingStrategy().getUcteNodeCode(tieLine.getPairingKey()); String geographicalName = mergedProperty(tieLine.getDanglingLine1(), tieLine.getDanglingLine2(), GEOGRAPHICAL_NAME_PROPERTY_KEY); UcteNodeStatus ucteNodeStatus = getXnodeStatus(mergedProperty(tieLine.getDanglingLine1(), tieLine.getDanglingLine2(), STATUS_PROPERTY_KEY + "_XNode")); convertXNode(ucteNetwork, xnodeCode, geographicalName, ucteNodeStatus); diff --git a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java index 2348024db91..5282764b6e2 100644 --- a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java +++ b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java @@ -300,7 +300,7 @@ private static void createDanglingLine(UcteLine ucteLine, boolean connected, .setB(getSusceptance(ucteLine)) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(xnode.getCode().toString()) + .setPairingKey(xnode.getCode().toString()) .setFictitious(isFictitious(ucteLine)) .newGeneration() .setTargetP(-targetP) @@ -683,7 +683,7 @@ private static TwoWindingsTransformer createXnodeTransfo(UcteNetworkExt ucteNetw .setB(0) .setP0(p0) .setQ0(q0) - .setUcteXnodeCode(ucteXnode.getCode().toString()) + .setPairingKey(ucteXnode.getCode().toString()) .newGeneration() .setTargetP(-targetP) .setTargetQ(-targetQ) @@ -831,9 +831,9 @@ private static String getBusId(Bus bus) { return bus != null ? bus.getId() : null; } - private static DanglingLine getMatchingDanglingLine(DanglingLine dl1, Map> danglingLinesByXnodeCode) { - String otherXnodeCode = dl1.getUcteXnodeCode(); - List matchingDanglingLines = danglingLinesByXnodeCode.get(otherXnodeCode) + private static DanglingLine getMatchingDanglingLine(DanglingLine dl1, Map> danglingLinesByPairingKey) { + String otherPairingKey = dl1.getPairingKey(); + List matchingDanglingLines = danglingLinesByPairingKey.get(otherPairingKey) .stream().filter(dl -> dl != dl1) .toList(); if (matchingDanglingLines.isEmpty()) { @@ -853,7 +853,7 @@ private static DanglingLine getMatchingDanglingLine(DanglingLine dl1, Map properties, DanglingLine dl1, DanglingLine dl2) { - Optional optUcteNodeCode = UcteNodeCode.parseUcteNodeCode(dl1.getUcteXnodeCode()); + Optional optUcteNodeCode = UcteNodeCode.parseUcteNodeCode(dl1.getPairingKey()); if (optUcteNodeCode.isPresent()) { UcteNode ucteNode = ucteNetwork.getNode(optUcteNodeCode.get()); @@ -974,16 +974,16 @@ public boolean exists(ReadOnlyDataSource dataSource) { } } - private void mergeXnodeDanglingLines(UcteNetwork ucteNetwork, Network network) { - Map> danglingLinesByXnodeCode = new HashMap<>(); + private void mergeDanglingLines(UcteNetwork ucteNetwork, Network network) { + Map> danglingLinesByPairingKey = new HashMap<>(); for (DanglingLine dl : network.getDanglingLines(DanglingLineFilter.ALL)) { - danglingLinesByXnodeCode.computeIfAbsent(dl.getUcteXnodeCode(), code -> new ArrayList<>()).add(dl); + danglingLinesByPairingKey.computeIfAbsent(dl.getPairingKey(), code -> new ArrayList<>()).add(dl); } Set danglingLinesToProcess = Sets.newHashSet(network.getDanglingLines(DanglingLineFilter.ALL)); while (!danglingLinesToProcess.isEmpty()) { DanglingLine dlToProcess = danglingLinesToProcess.iterator().next(); - DanglingLine dlMatchingDlToProcess = getMatchingDanglingLine(dlToProcess, danglingLinesByXnodeCode); + DanglingLine dlMatchingDlToProcess = getMatchingDanglingLine(dlToProcess, danglingLinesByPairingKey); if (dlMatchingDlToProcess != null) { // lexical sort to always end up with same merge line id @@ -1055,7 +1055,7 @@ public Network importData(ReadOnlyDataSource dataSource, NetworkFactory networkF createLines(ucteNetwork, network); createTransformers(ucteNetwork, network, ucteFileName, combinePhaseAngleRegulation); - mergeXnodeDanglingLines(ucteNetwork, network); + mergeDanglingLines(ucteNetwork, network); stopwatch.stop();