Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(properties): add on load creation/modification #415

Merged
merged 6 commits into from
Jan 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import org.gridsuite.modification.server.dto.ModificationInfos;

import jakarta.persistence.*;
import org.gridsuite.modification.server.entities.equipment.modification.FreePropertyEntity;
import org.springframework.util.CollectionUtils;

/**
* @author Franck Lecuyer <franck.lecuyer at rte-france.com>
Expand Down Expand Up @@ -73,6 +75,11 @@ public LoadCreationInfos toModificationInfos() {
// load
.loadType(getLoadType())
.activePower(getActivePower())
.reactivePower(getReactivePower());
.reactivePower(getReactivePower())
// properties
.properties(CollectionUtils.isEmpty(getProperties()) ? null :
getProperties().stream()
.map(FreePropertyEntity::toInfos)
.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.gridsuite.modification.server.dto.OperationType;

import jakarta.persistence.*;
import org.springframework.util.CollectionUtils;

/**
* @author Nicolas Noir <nicolas.noir at rte-france.com>
Expand Down Expand Up @@ -84,6 +85,11 @@ public LoadModificationInfos toModificationInfos() {
.busOrBusbarSectionId(AttributeModification.toAttributeModification(getBusOrBusbarSectionIdValue(), getBusOrBusbarSectionIdOp()))
.loadType(AttributeModification.toAttributeModification(getLoadTypeValue(), getLoadTypeOp()))
.constantActivePower(AttributeModification.toAttributeModification(getActivePowerValue(), getActivePowerOp()))
.constantReactivePower(AttributeModification.toAttributeModification(getReactivePowerValue(), getReactivePowerOp()));
.constantReactivePower(AttributeModification.toAttributeModification(getReactivePowerValue(), getReactivePowerOp()))
// properties
.properties(CollectionUtils.isEmpty(getProperties()) ? null :
getProperties().stream()
.map(FreePropertyEntity::toInfos)
.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ public void apply(Network network, Reporter subReporter) {
}
reportElementaryCreations(subReporter);
ModificationUtils.getInstance().disconnectInjection(modificationInfos, network.getLoad(modificationInfos.getEquipmentId()), subReporter);

// properties
Load load = network.getLoad(modificationInfos.getEquipmentId());
PropertiesUtils.applyProperties(load, subReporter, modificationInfos.getProperties());
}

private void reportElementaryCreations(Reporter subReporter) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,24 @@ public void check(Network network) throws NetworkModificationException {
public void apply(Network network, Reporter subReporter) {
Load load = network.getLoad(modificationInfos.getEquipmentId());
// modify the load in the network
modifyLoad(load, modificationInfos, subReporter);
modifyLoad(load, subReporter);
}

private void modifyLoad(Load load, LoadModificationInfos loadModificationInfos, Reporter subReporter) {
private void modifyLoad(Load load, Reporter subReporter) {
subReporter.report(Report.builder()
.withKey("loadModification")
.withDefaultMessage("Load with id=${id} modified :")
.withValue("id", loadModificationInfos.getEquipmentId())
.withValue("id", modificationInfos.getEquipmentId())
.withSeverity(TypedValue.INFO_SEVERITY)
.build());

ModificationUtils.getInstance().applyElementaryModifications(load::setName, () -> load.getOptionalName().orElse("No value"), loadModificationInfos.getEquipmentName(), subReporter, "Name");
ModificationUtils.getInstance().applyElementaryModifications(load::setLoadType, load::getLoadType, loadModificationInfos.getLoadType(), subReporter, "Type");
ModificationUtils.getInstance().applyElementaryModifications(load::setP0, load::getP0, loadModificationInfos.getConstantActivePower(), subReporter, "Constant active power");
ModificationUtils.getInstance().applyElementaryModifications(load::setQ0, load::getQ0, loadModificationInfos.getConstantReactivePower(), subReporter, "Constant reactive power");
ModificationUtils.getInstance().applyElementaryModifications(load::setName, () -> load.getOptionalName().orElse("No value"), modificationInfos.getEquipmentName(), subReporter, "Name");
ModificationUtils.getInstance().applyElementaryModifications(load::setLoadType, load::getLoadType, modificationInfos.getLoadType(), subReporter, "Type");
ModificationUtils.getInstance().applyElementaryModifications(load::setP0, load::getP0, modificationInfos.getConstantActivePower(), subReporter, "Constant active power");
ModificationUtils.getInstance().applyElementaryModifications(load::setQ0, load::getQ0, modificationInfos.getConstantReactivePower(), subReporter, "Constant reactive power");

// properties
PropertiesUtils.applyProperties(load, subReporter, modificationInfos.getProperties());

// TODO connectivity modification
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.extensions.ConnectablePosition;
import lombok.SneakyThrows;
import org.gridsuite.modification.server.dto.FreePropertyInfos;
import org.gridsuite.modification.server.dto.LoadCreationInfos;
import org.gridsuite.modification.server.dto.ModificationInfos;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;

import java.util.List;
import java.util.Map;
import java.util.UUID;

Expand All @@ -26,6 +28,9 @@

@Tag("IntegrationTest")
public class LoadCreationInBusBreakerTest extends AbstractNetworkModificationTest {
private static String PROPERTY_NAME = "property-name";
private static String PROPERTY_VALUE = "property-value";

@Override
protected Network createNetwork(UUID networkUuid) {
return NetworkCreation.createBusBreaker(networkUuid);
Expand All @@ -44,6 +49,7 @@ protected ModificationInfos buildModification() {
.reactivePower(30.0)
.connectionName("top")
.connectionDirection(ConnectablePosition.Direction.TOP)
.properties(List.of(FreePropertyInfos.builder().name(PROPERTY_NAME).value(PROPERTY_VALUE).build()))
.build();
}

Expand All @@ -66,6 +72,7 @@ protected ModificationInfos buildModificationUpdate() {
@Override
protected void assertAfterNetworkModificationCreation() {
assertNotNull(getNetwork().getLoad("idLoad1"));
assertEquals(PROPERTY_VALUE, getNetwork().getLoad("idLoad1").getProperty(PROPERTY_NAME));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.powsybl.iidm.network.extensions.ConnectablePosition;
import lombok.SneakyThrows;
import org.gridsuite.modification.server.NetworkModificationException;
import org.gridsuite.modification.server.dto.FreePropertyInfos;
import org.gridsuite.modification.server.dto.LoadCreationInfos;
import org.gridsuite.modification.server.dto.ModificationInfos;
import org.gridsuite.modification.server.dto.NetworkModificationResult;
Expand All @@ -22,6 +23,7 @@
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MvcResult;

import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
Expand All @@ -36,6 +38,8 @@

@Tag("IntegrationTest")
public class LoadCreationInNodeBreakerTest extends AbstractNetworkModificationTest {
private static String PROPERTY_NAME = "property-name";
private static String PROPERTY_VALUE = "property-value";

@Test
public void testCreateWithErrors() throws Exception {
Expand Down Expand Up @@ -113,6 +117,7 @@ protected ModificationInfos buildModification() {
.reactivePower(60.0)
.connectionDirection(ConnectablePosition.Direction.TOP)
.connectionName("top")
.properties(List.of(FreePropertyInfos.builder().name(PROPERTY_NAME).value(PROPERTY_VALUE).build()))
.build();
}

Expand All @@ -135,6 +140,7 @@ protected ModificationInfos buildModificationUpdate() {
@Override
protected void assertAfterNetworkModificationCreation() {
assertNotNull(getNetwork().getLoad("idLoad1"));
assertEquals(PROPERTY_VALUE, getNetwork().getLoad("idLoad1").getProperty(PROPERTY_NAME));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,27 @@
import com.powsybl.iidm.network.LoadType;
import com.powsybl.iidm.network.Network;
import lombok.SneakyThrows;
import org.gridsuite.modification.server.dto.AttributeModification;
import org.gridsuite.modification.server.dto.LoadModificationInfos;
import org.gridsuite.modification.server.dto.ModificationInfos;
import org.gridsuite.modification.server.dto.OperationType;
import org.gridsuite.modification.server.dto.*;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.Test;
import org.junit.jupiter.api.Tag;
import org.springframework.http.MediaType;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@Tag("IntegrationTest")
public class LoadModificationTest extends AbstractNetworkModificationTest {
private static String PROPERTY_NAME = "property-name";
private static String PROPERTY_VALUE = "property-value";

@Override
protected Network createNetwork(UUID networkUuid) {
Expand All @@ -47,6 +48,7 @@ protected ModificationInfos buildModification() {
.loadType(new AttributeModification<>(LoadType.FICTITIOUS, OperationType.SET))
.constantActivePower(new AttributeModification<>(200.0, OperationType.SET))
.constantReactivePower(new AttributeModification<>(30.0, OperationType.SET))
.properties(List.of(FreePropertyInfos.builder().name(PROPERTY_NAME).value(PROPERTY_VALUE).build()))
.build();
}

Expand All @@ -70,6 +72,7 @@ protected void assertAfterNetworkModificationCreation() {
assertEquals(200.0, modifiedLoad.getP0(), 0.0);
assertEquals(30.0, modifiedLoad.getQ0(), 0.0);
assertEquals("nameLoad1", modifiedLoad.getNameOrId());
assertEquals(PROPERTY_VALUE, modifiedLoad.getProperty(PROPERTY_NAME));
}

@Override
Expand All @@ -80,6 +83,7 @@ protected void assertAfterNetworkModificationDeletion() {
assertEquals(0.0, modifiedLoad.getP0(), 0.0);
assertEquals(0.0, modifiedLoad.getQ0(), 0.0);
assertEquals("v1load", modifiedLoad.getNameOrId());
assertNull(modifiedLoad.getProperty(PROPERTY_NAME));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,6 @@ private SubstationCreationInfos getSubstationCreationModification(UUID modificat
return (SubstationCreationInfos) networkModificationRepository.getModificationInfo(modificationUuid);
}

private SubstationModificationInfos getSubstationModificationInfos(UUID modificationUuid) {
return (SubstationModificationInfos) networkModificationRepository.getModificationInfo(modificationUuid);
}

private VoltageLevelCreationInfos getVoltageLevelCreationModification(UUID modificationUuid) {
return (VoltageLevelCreationInfos) networkModificationRepository.getModificationInfo(modificationUuid);
}
Expand Down
Loading