Skip to content

Commit

Permalink
Add substation in voltage level creation (#7)
Browse files Browse the repository at this point in the history
Signed-off-by: Rehili Ghazwa <[email protected]>
  • Loading branch information
ghazwarhili authored Dec 9, 2024
1 parent 2cbf6c7 commit 8112014
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;

import org.gridsuite.modification.dto.annotation.ModificationErrorTypeName;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.modifications.VoltageLevelCreation;
Expand Down Expand Up @@ -65,6 +64,9 @@ public class VoltageLevelCreationInfos extends EquipmentCreationInfos {
@Schema(description = "coupling devices infos")
private List<CouplingDeviceInfos> couplingDevices;

@Schema(description = "substation Creation infos")
private SubstationCreationInfos substationCreation;

@Override
public AbstractModification toModification() {
return new VoltageLevelCreation(this);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package org.gridsuite.modification.modifications;

import org.gridsuite.modification.dto.SubstationCreationInfos;
import org.gridsuite.modification.utils.ModificationUtils;
import org.gridsuite.modification.utils.PropertiesUtils;

import com.powsybl.commons.report.ReportNode;
import com.powsybl.commons.report.TypedValue;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.Substation;
import org.gridsuite.modification.dto.SubstationCreationInfos;
import org.gridsuite.modification.utils.ModificationUtils;
import org.gridsuite.modification.utils.PropertiesUtils;

public class SubstationCreation extends AbstractModification {

Expand All @@ -19,27 +17,8 @@ public SubstationCreation(SubstationCreationInfos modificationInfos) {

@Override
public void apply(Network network, ReportNode subReportNode) {
Substation substation = network.newSubstation()
.setId(modificationInfos.getEquipmentId())
.setName(modificationInfos.getEquipmentName())
.setCountry(modificationInfos.getCountry())
.add();

subReportNode.newReportNode()
.withMessageTemplate("substationCreated", "New substation with id=${id} created")
.withUntypedValue("id", modificationInfos.getEquipmentId())
.withSeverity(TypedValue.INFO_SEVERITY)
.add();

// name and country
if (modificationInfos.getEquipmentName() != null) {
ModificationUtils.getInstance()
.reportElementaryCreation(subReportNode, modificationInfos.getEquipmentName(), "Name");
}
if (modificationInfos.getCountry() != null) {
ModificationUtils.getInstance()
.reportElementaryCreation(subReportNode, modificationInfos.getCountry(), "Country");
}
ModificationUtils.getInstance().createSubstation(modificationInfos, subReportNode, network);
Substation substation = network.getSubstation(modificationInfos.getEquipmentId());
// properties
PropertiesUtils.applyProperties(substation, subReportNode, modificationInfos.getProperties(), "SubstationProperties");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,9 +326,37 @@ private boolean checkBbs(Network network, String busbarSectionId1, String busbar
return true;
}

public void createSubstation(SubstationCreationInfos substationCreationInfos,
ReportNode subReportNode, Network network) {
network.newSubstation()
.setId(substationCreationInfos.getEquipmentId())
.setName(substationCreationInfos.getEquipmentName())
.setCountry(substationCreationInfos.getCountry())
.add();

subReportNode.newReportNode()
.withMessageTemplate("substationCreated", "New substation with id=${id} created")
.withUntypedValue("id", substationCreationInfos.getEquipmentId())
.withSeverity(TypedValue.INFO_SEVERITY)
.add();

// name and country
if (substationCreationInfos.getEquipmentName() != null) {
ModificationUtils.getInstance()
.reportElementaryCreation(subReportNode, substationCreationInfos.getEquipmentName(), "Name");
}
if (substationCreationInfos.getCountry() != null) {
ModificationUtils.getInstance()
.reportElementaryCreation(subReportNode, substationCreationInfos.getCountry(), "Country");
}
}

public void createVoltageLevel(VoltageLevelCreationInfos voltageLevelCreationInfos,
ReportNode subReportNode, Network network) {
String substationId = voltageLevelCreationInfos.getSubstationId();
if (voltageLevelCreationInfos.getSubstationCreation() != null) {
createSubstation(voltageLevelCreationInfos.getSubstationCreation(), subReportNode, network);
}
Substation substation = network.getSubstation(substationId);
if (substation == null) {
throw new NetworkModificationException(SUBSTATION_NOT_FOUND, substationId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@
package org.gridsuite.modification.modifications;

import com.fasterxml.jackson.core.type.TypeReference;
import com.powsybl.iidm.network.Country;
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.NetworkModificationException;
import org.gridsuite.modification.dto.FreePropertyInfos;
import org.gridsuite.modification.dto.ModificationInfos;
import org.gridsuite.modification.dto.SubstationCreationInfos;
import org.gridsuite.modification.dto.VoltageLevelCreationInfos;
import org.gridsuite.modification.utils.ModificationCreation;
import org.gridsuite.modification.utils.NetworkCreation;
import org.junit.jupiter.api.Test;

import java.util.List;
import java.util.Map;
import java.util.UUID;
Expand Down Expand Up @@ -101,6 +104,26 @@ void testCreateWithBbsNotExist() throws Exception {
assertNotNull(getNetwork().getVoltageLevel("vl_2"));
}

@Test
void testCreateWithSubstationCreation() throws Exception {
SubstationCreationInfos substationCreationInfos = SubstationCreationInfos.builder()
.stashed(false)
.equipmentId("newSubstationId")
.equipmentName("newSubstationName")
.country(Country.AF)
.build();
VoltageLevelCreationInfos vli = (VoltageLevelCreationInfos) buildModification();
vli.setSubstationId(substationCreationInfos.getEquipmentId());
vli.setSubstationCreation(substationCreationInfos);
vli.toModification().apply(getNetwork());
assertNotNull(getNetwork().getVoltageLevel("vlId"));
assertNotNull(getNetwork().getSubstation("newSubstationId"));
assertTrue(getNetwork().getSubstation("newSubstationId").getVoltageLevelStream()
.anyMatch(vl -> vl.getId().equals("vlId")));
assertEquals(1, getNetwork().getSubstation("newSubstationId").getVoltageLevelStream()
.filter(vl -> vl.getId().equals("vlId")).count());
}

@Test
void testIpMinEqualsIpMax() throws Exception {
VoltageLevelCreationInfos vli = (VoltageLevelCreationInfos) buildModification();
Expand Down

0 comments on commit 8112014

Please sign in to comment.