Skip to content

Commit

Permalink
add connected for branch modification
Browse files Browse the repository at this point in the history
Signed-off-by: David BRAQUART <david.braquart@rte-france.com>
  • Loading branch information
dbraquart committed Jan 23, 2024
1 parent 1e5fc54 commit 3184525
Show file tree
Hide file tree
Showing 12 changed files with 265 additions and 129 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ public class BranchModificationInfos extends BasicEquipmentModificationInfos {
@Schema(description = "Current limits Side 2")
private CurrentLimitsModificationInfos currentLimits2;

@Schema(description = "Connected 1")
private AttributeModification<Boolean> connected1;

@Schema(description = "Connected 2")
private AttributeModification<Boolean> connected2;
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import lombok.NoArgsConstructor;
import org.gridsuite.modification.server.dto.BranchModificationInfos;
import org.gridsuite.modification.server.dto.ModificationInfos;
import org.gridsuite.modification.server.entities.equipment.modification.attribute.BooleanModificationEmbedded;
import org.gridsuite.modification.server.entities.equipment.modification.attribute.DoubleModificationEmbedded;

import jakarta.persistence.*;
Expand Down Expand Up @@ -52,6 +53,20 @@ public class BranchModificationEntity extends BasicEquipmentModificationEntity {
), nullable = true)
private CurrentLimitsModificationEntity currentLimits2;

@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "value", column = @Column(name = "connected1")),
@AttributeOverride(name = "opType", column = @Column(name = "connected1Op"))
})
private BooleanModificationEmbedded connected1;

@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "value", column = @Column(name = "connected2")),
@AttributeOverride(name = "opType", column = @Column(name = "connected2Op"))
})
private BooleanModificationEmbedded connected2;

protected BranchModificationEntity(BranchModificationInfos branchModificationInfos) {
super(branchModificationInfos);
assignAttributes(branchModificationInfos);
Expand All @@ -77,5 +92,7 @@ private void assignAttributes(BranchModificationInfos branchModificationInfos) {
} else {
currentLimits2 = branchModificationInfos.getCurrentLimits2().toEntity();
}
this.connected1 = branchModificationInfos.getConnected1() != null ? new BooleanModificationEmbedded(branchModificationInfos.getConnected1()) : null;
this.connected2 = branchModificationInfos.getConnected2() != null ? new BooleanModificationEmbedded(branchModificationInfos.getConnected2()) : null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ public LineModificationInfos toModificationInfos() {
.stashed(getStashed())
.equipmentId(getEquipmentId())
.equipmentName(AttributeModification.toAttributeModification(getEquipmentNameValue(), getEquipmentNameOp()))
.connected1(toAttributeModification(getConnected1()))
.connected2(toAttributeModification(getConnected2()))
.seriesResistance(toAttributeModification(getSeriesResistance()))
.seriesReactance(toAttributeModification(getSeriesReactance()))
.shuntConductance1(toAttributeModification(getShuntConductance1()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import jakarta.persistence.*;

import static org.gridsuite.modification.server.entities.equipment.modification.attribute.IAttributeModificationEmbeddable.toAttributeModification;

/**
* @author Florent MILLOT <florent.millot at rte-france.com>
*/
Expand Down Expand Up @@ -351,6 +353,8 @@ public TwoWindingsTransformerModificationInfos toModificationInfos() {
.stashed(getStashed())
.equipmentId(getEquipmentId())
.equipmentName(AttributeModification.toAttributeModification(getEquipmentNameValue(), getEquipmentNameOp()))
.connected1(toAttributeModification(getConnected1()))
.connected2(toAttributeModification(getConnected2()))
.seriesResistance(AttributeModification.toAttributeModification(getSeriesResistance()))
.seriesReactance(AttributeModification.toAttributeModification(getSeriesReactance()))
.magnetizingConductance(AttributeModification.toAttributeModification(getMagnetizingConductance()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,20 @@ protected void modifyBranch(Branch<?> branch, BranchModificationInfos branchModi
ModificationUtils.getInstance().reportModifications(limitsReporter, side2LimitsReports, "side2LimitsModification",
" Side 2");
}
if (branchModificationInfos.getConnected1() != null) {
updateConnection(branch, Branch.Side.ONE, modificationInfos.getConnected1().getValue());
}
if (branchModificationInfos.getConnected2() != null) {
updateConnection(branch, Branch.Side.TWO, modificationInfos.getConnected2().getValue());
}
}

private void updateConnection(Branch<?> branch, Branch.Side side, Boolean connectionChange) {
if (branch.getTerminal(side).isConnected() && Boolean.FALSE.equals(connectionChange)) {
branch.getTerminal(side).disconnect();
} else if (!branch.getTerminal(side).isConnected() && Boolean.TRUE.equals(connectionChange)) {
branch.getTerminal(side).connect();
}
}

protected void modifyCurrentLimits(CurrentLimitsModificationInfos currentLimitsInfos, CurrentLimitsAdder limitsAdder, CurrentLimits currentLimits, List<Report> limitsReports) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet author="braquartdav (generated)" id="1705677612077-29">
<addColumn tableName="line_modification">
<column name="connected1" type="boolean"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-30">
<addColumn tableName="two_windings_transformer_modification">
<column name="connected1" type="boolean"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-31">
<addColumn tableName="line_modification">
<column name="connected1op" type="varchar(255)"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-32">
<addColumn tableName="two_windings_transformer_modification">
<column name="connected1op" type="varchar(255)"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-33">
<addColumn tableName="line_modification">
<column name="connected2" type="boolean"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-34">
<addColumn tableName="two_windings_transformer_modification">
<column name="connected2" type="boolean"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-35">
<addColumn tableName="line_modification">
<column name="connected2op" type="varchar(255)"/>
</addColumn>
</changeSet>
<changeSet author="braquartdav (generated)" id="1705677612077-36">
<addColumn tableName="two_windings_transformer_modification">
<column name="connected2op" type="varchar(255)"/>
</addColumn>
</changeSet>
</databaseChangeLog>
3 changes: 3 additions & 0 deletions src/main/resources/db/changelog/db.changelog-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -239,4 +239,7 @@ databaseChangeLog:
relativeToChangelogFile: true
- include:
file: changesets/changelog_20240118T141843Z.xml
relativeToChangelogFile: true
- include:
file: changesets/changelog_20240119T151936Z.xml
relativeToChangelogFile: true
Original file line number Diff line number Diff line change
Expand Up @@ -369,14 +369,14 @@ public void testConnection() throws Exception {
}
assertFalse(existingBattery.getTerminal().isConnected());

String generatorModificationInfosJson = mapper.writeValueAsString(batteryModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
String modificationInfosJson = mapper.writeValueAsString(batteryModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
// now connected
assertTrue(existingBattery.getTerminal().isConnected());

// try to modify again => no change on connection state
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
assertTrue(existingBattery.getTerminal().isConnected());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package org.gridsuite.modification.server.modifications;

import com.fasterxml.jackson.core.type.TypeReference;
import com.powsybl.iidm.network.Branch;
import com.powsybl.iidm.network.Line;
import com.powsybl.iidm.network.LoadingLimits.TemporaryLimit;
import com.powsybl.iidm.network.Network;
Expand Down Expand Up @@ -357,4 +358,51 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos
Map<String, String> updatedValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { });
assertEquals("line1", updatedValues.get("equipmentId"));
}

@Test
public void testDisconnection() throws Exception {
changeBranchConnectionState(getNetwork().getLine("line1"), false);
}

@Test
public void testConnection() throws Exception {
changeBranchConnectionState(getNetwork().getLine("line1"), true);
}

private void changeBranchConnectionState(Branch<?> existingEquipment, boolean expectedState) throws Exception {
BranchModificationInfos modificationInfos = (BranchModificationInfos) buildModification();
modificationInfos.setConnected1(new AttributeModification<>(expectedState, OperationType.SET));
modificationInfos.setConnected2(new AttributeModification<>(expectedState, OperationType.SET));

if (expectedState) {
if (existingEquipment.getTerminal1().isConnected()) {
existingEquipment.getTerminal1().disconnect();
}
if (existingEquipment.getTerminal2().isConnected()) {
existingEquipment.getTerminal2().disconnect();
}
} else {
if (!existingEquipment.getTerminal1().isConnected()) {
existingEquipment.getTerminal1().connect();
}
if (!existingEquipment.getTerminal2().isConnected()) {
existingEquipment.getTerminal2().connect();
}
}
assertEquals(!expectedState, existingEquipment.getTerminal1().isConnected());
assertEquals(!expectedState, existingEquipment.getTerminal2().isConnected());

String modificationInfosJson = mapper.writeValueAsString(modificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
// connection state has changed
assertEquals(expectedState, existingEquipment.getTerminal1().isConnected());
assertEquals(expectedState, existingEquipment.getTerminal2().isConnected());

// try to modify again => no change on connection state
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
assertEquals(expectedState, existingEquipment.getTerminal1().isConnected());
assertEquals(expectedState, existingEquipment.getTerminal2().isConnected());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,14 +144,14 @@ public void testConnection() throws Exception {
}
assertFalse(existingLoad.getTerminal().isConnected());

String generatorModificationInfosJson = mapper.writeValueAsString(loadModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
String modificationInfosJson = mapper.writeValueAsString(loadModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
// now connected
assertTrue(existingLoad.getTerminal().isConnected());

// try to modify again => no change on connection state
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
assertTrue(existingLoad.getTerminal().isConnected());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,14 +350,14 @@ public void testConnection() throws Exception {
}
assertFalse(existingShunt.getTerminal().isConnected());

String generatorModificationInfosJson = mapper.writeValueAsString(shuntModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
String modificationInfosJson = mapper.writeValueAsString(shuntModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
// now connected
assertTrue(existingShunt.getTerminal().isConnected());

// try to modify again => no change on connection state
mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON))
mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
assertTrue(existingShunt.getTerminal().isConnected());
}
Expand Down
Loading

0 comments on commit 3184525

Please sign in to comment.