Skip to content

Commit

Permalink
Add VoltageLevel builder from existing VoltageLevel on Network
Browse files Browse the repository at this point in the history
Signed-off-by: CHIQUET Benoit <benoit.chiquet@rte-france.com>
  • Loading branch information
bc-rte committed Sep 4, 2024
1 parent 7836cf0 commit 45879cd
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
15 changes: 15 additions & 0 deletions iidm/iidm-api/src/main/java/com/powsybl/iidm/network/Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -741,6 +741,21 @@ default VoltageLevelAdder newVoltageLevel() {
.newVoltageLevel();
}

/**
* Get a builder to create a new voltage level from an existing one.
* @return a builder to create a new voltage level
*/
default VoltageLevelAdder newVoltageLevelFrom(VoltageLevel voltagelevel) {
Objects.requireNonNull(voltagelevel);
VoltageLevelAdder adder = newVoltageLevel()
.setTopologyKind(voltagelevel.getTopologyKind())
.setNominalV(voltagelevel.getNominalV())
.setHighVoltageLimit(voltagelevel.getHighVoltageLimit())
.setLowVoltageLimit(voltagelevel.getLowVoltageLimit())
.setName(voltagelevel.getOptionalName().orElse(null));
return adder;
}

/**
* Get all substation voltage levels.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
import com.powsybl.iidm.network.Country;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.Substation;
import com.powsybl.iidm.network.VoltageLevel;
import com.powsybl.iidm.network.tck.AbstractNetworkTest;
import org.junit.jupiter.api.Test;

import java.util.Set;

import static com.powsybl.iidm.network.TopologyKind.BUS_BREAKER;
import static org.junit.jupiter.api.Assertions.assertEquals;

class NetworkTest extends AbstractNetworkTest {
Expand All @@ -39,4 +41,28 @@ void shouldReuseInfoWhenCreatingSubstationFromTemplate() {
assertEquals(Country.AD, newSubstation.getCountry().get());
assertEquals("name", newSubstation.getOptionalName().get());
}

@Test
void shouldReuseInfoWhenCreatingVoltageLevelFromTemplate() {
Network network = Network.create("test", "test");
network.newVoltageLevel()
.setId("existingVoltageLevel")
.setTopologyKind(BUS_BREAKER)
.setName("name")
.setNominalV(225)
.setLowVoltageLimit(200)
.setHighVoltageLimit(250)
.add();

network.newVoltageLevelFrom(network.getVoltageLevel("existingVoltageLevel"))
.setId("newVoltageLevel")
.add();

VoltageLevel newVoltageLevel = network.getVoltageLevel("newVoltageLevel");
assertEquals("name", newVoltageLevel.getOptionalName().get());
assertEquals(BUS_BREAKER, newVoltageLevel.getTopologyKind());
assertEquals(225, newVoltageLevel.getNominalV());
assertEquals(200, newVoltageLevel.getLowVoltageLimit());
assertEquals(250, newVoltageLevel.getHighVoltageLimit());
}
}

0 comments on commit 45879cd

Please sign in to comment.