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

Bump powsybl.version from 4.8.0 to 4.9.0 #236

Merged
merged 2 commits into from
Jun 22, 2022
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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SPDX-License-Identifier: Apache-2.0
<quarkus.platform.version>2.9.2.Final</quarkus.platform.version>
<microprofile-openapi-api.version>3.0</microprofile-openapi-api.version>
<slf4j.version>1.7.36</slf4j.version>
<powsybl.version>4.8.0</powsybl.version>
<powsybl.version>4.9.0</powsybl.version>
<mapstruct.version>1.5.2.Final</mapstruct.version>
<openpojo.version>0.9.1</openpojo.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class CimToSclMapperContext {
public static final String TERMINAL_PROP = "Terminal";
public static final String CONNECTIVITY_NODE_PROP = "ConnectivityNode";
public static final String EQUIPMENT_CONTAINER_PROP = "EquipmentContainer";
public static final String CONDUCTING_EQUIPMENT_PROP = "ConductingEquipment";

public static final String NAME_PROP = "name";
public static final String DESCRIPTION_PROP = "description";
Expand Down Expand Up @@ -74,16 +75,16 @@ public List<CgmesVoltageLevel> getVoltageLevelsBySubstation(String substationId)
" cim:VoltageLevel.Substation ?Substation ; \n" +
" cim:VoltageLevel.BaseVoltage ?BaseVoltage . \n" +
" OPTIONAL { ?VoltageLevel cim:IdentifiedObject.name ?name } \n" +
" FILTER (str(?Substation) = \"http://default-cgmes-model/#" + substationId + "\") \n" +
"}} \n" +
"OPTIONAL { GRAPH ?graphBaseVoltage { \n" +
" ?BaseVoltage cim:BaseVoltage.nominalVoltage ?nominalVoltage . \n" +
END_QUERY)
.stream()
.map(propertyBag -> new CgmesVoltageLevel(
propertyBag.getId(VOLTAGE_LEVEL_PROP),
propertyBag.get(NAME_PROP),
propertyBag.asDouble(NOMINAL_VOLTAGE_PROP)))
.filter(bag -> substationId.equals(bag.getId(SUBSTATION_PROP)))
.map(bag -> new CgmesVoltageLevel(
bag.getId(VOLTAGE_LEVEL_PROP),
bag.get(NAME_PROP),
bag.asDouble(NOMINAL_VOLTAGE_PROP)))
.collect(Collectors.toList());
}

Expand All @@ -100,8 +101,9 @@ public List<CgmesBusbarSection> getBusbarSectionsByEquipmentContainer(String con
" a cim:BusbarSection ; \n" +
" cim:Equipment.EquipmentContainer ?EquipmentContainer . \n" +
" OPTIONAL { ?BusbarSection cim:IdentifiedObject.name ?name } \n" +
" FILTER (str(?EquipmentContainer) = \"http://default-cgmes-model/#" + containerId + "\") \n" +
END_QUERY).stream()
END_QUERY)
.stream()
.filter(bag -> containerId.equals(bag.getId(EQUIPMENT_CONTAINER_PROP)))
.map(bag -> new CgmesBusbarSection(
bag.getId(BUSBARSECTION_PROP),
bag.get(NAME_PROP)))
Expand All @@ -121,8 +123,9 @@ public List<CgmesBay> getBaysByVoltageLevel(String voltageLevelId) {
" a cim:Bay ;\n" +
" cim:Bay.VoltageLevel ?VoltageLevel . \n" +
" OPTIONAL { ?Bay cim:IdentifiedObject.name ?name } \n" +
" FILTER (str(?VoltageLevel) = \"http://default-cgmes-model/#" + voltageLevelId + "\") \n" +
END_QUERY).stream()
END_QUERY)
.stream()
.filter(bag -> voltageLevelId.equals(bag.getId(VOLTAGE_LEVEL_PROP)))
.map(bag -> new CgmesBay(
bag.getId(BAY_PROP),
bag.get(NAME_PROP)))
Expand All @@ -143,13 +146,13 @@ public List<CgmesTransformer> getTransformers(String containerId) {
" cim:Equipment.EquipmentContainer ?EquipmentContainer . \n" +
" OPTIONAL { ?PowerTransformer cim:IdentifiedObject.name ?name } \n" +
" OPTIONAL { ?PowerTransformer cim:IdentifiedObject.description ?description } \n" +
" FILTER (str(?EquipmentContainer) = \"http://default-cgmes-model/#" + containerId + "\") \n" +
END_QUERY)
.stream()
.map(propertyBag -> new CgmesTransformer(
propertyBag.getId(POWER_TRANSFORMER_PROP),
propertyBag.get(NAME_PROP),
propertyBag.get(DESCRIPTION_PROP)))
.filter(bag -> containerId.equals(bag.getId(EQUIPMENT_CONTAINER_PROP)))
.map(bag -> new CgmesTransformer(
bag.getId(POWER_TRANSFORMER_PROP),
bag.get(NAME_PROP),
bag.get(DESCRIPTION_PROP)))
.collect(Collectors.toList());
}

Expand All @@ -170,9 +173,9 @@ public List<CgmesTransformerEnd> getTransformerEnds(String powerTransformerId) {
" cim:PowerTransformerEnd.PowerTransformer ?PowerTransformer ; \n" +
" cim:TransformerEnd.endNumber ?endNumber ; \n" +
" cim:TransformerEnd.Terminal ?Terminal . \n" +
" FILTER (str(?PowerTransformer) = \"http://default-cgmes-model/#" + powerTransformerId + "\") \n" +
END_QUERY)
.stream()
.filter(bag -> powerTransformerId.equals(bag.getId(POWER_TRANSFORMER_PROP)))
.map(propertyBag -> new CgmesTransformerEnd(
propertyBag.getId(TRANSFORMER_END_PROP),
propertyBag.get(NAME_PROP),
Expand All @@ -189,42 +192,41 @@ public List<CgmesTransformerEnd> getTransformerEnds(String powerTransformerId) {
*/
public Optional<CgmesTapChanger> getTapChanger(String powerTransformerEndId) {
// Convert all the RatioTapChangers from CIM.
var tapChanger = processTapChangerStream(getRatioTapChangers(powerTransformerEndId), RATIO_TAP_CHANGER_PROP);
var tapChanger = processTapChangerStream(getRatioTapChangers(), powerTransformerEndId, RATIO_TAP_CHANGER_PROP);
if (!tapChanger.isPresent()) {
// Convert all the PhaseTapChangers from CIM.
tapChanger = processTapChangerStream(getPhaseTapChangers(powerTransformerEndId), PHASE_TAP_CHANGER_PROP);
tapChanger = processTapChangerStream(getPhaseTapChangers(), powerTransformerEndId, PHASE_TAP_CHANGER_PROP);
}
return tapChanger;
}

private Optional<CgmesTapChanger> processTapChangerStream(Stream<PropertyBag> tapChangerStream, String idName) {
private Optional<CgmesTapChanger> processTapChangerStream(Stream<PropertyBag> tapChangerStream, String powerTransformerEndId, String idName) {
return tapChangerStream
.filter(bag -> powerTransformerEndId.equals(bag.getId(TRANSFORMER_END_PROP)))
.map(propertyBag -> new CgmesTapChanger(
propertyBag.getId(idName),
propertyBag.get(NAME_PROP)))
.findFirst();
}

private Stream<PropertyBag> getRatioTapChangers(String powerTransformerEndId) {
private Stream<PropertyBag> getRatioTapChangers() {
return cgmesModel.tripleStore().query(
START_QUERY +
" ?RatioTapChanger \n" +
" a cim:RatioTapChanger ; \n" +
" cim:RatioTapChanger.TransformerEnd ?TransformerEnd . \n" +
" OPTIONAL { ?RatioTapChanger cim:IdentifiedObject.name ?name } \n" +
" FILTER (str(?TransformerEnd) = \"http://default-cgmes-model/#" + powerTransformerEndId + "\") \n" +
END_QUERY)
.stream();
}

private Stream<PropertyBag> getPhaseTapChangers(String powerTransformerEndId) {
private Stream<PropertyBag> getPhaseTapChangers() {
return cgmesModel.tripleStore().query(
START_QUERY +
" ?PhaseTapChanger \n" +
" a ?phaseTapChangerType ; \n" +
" cim:PhaseTapChanger.TransformerEnd ?TransformerEnd . \n" +
" OPTIONAL { ?PhaseTapChanger cim:IdentifiedObject.name ?name } \n" +
" FILTER (str(?TransformerEnd) = \"http://default-cgmes-model/#" + powerTransformerEndId + "\") \n" +
END_QUERY)
.stream();
}
Expand All @@ -244,9 +246,9 @@ public List<CgmesConnectivityNode> getConnectivityNodeByBusbarSection(String bus
" ?Terminal \n" +
" cim:Terminal.ConnectivityNode ?ConnectivityNode; \n" +
" cim:Terminal.ConductingEquipment ?ConductingEquipment; \n" +
" FILTER (str(?ConductingEquipment) = \"http://default-cgmes-model/#" + busbarSectionId + "\") \n" +
END_QUERY)
.stream()
.filter(bag -> busbarSectionId.equals(bag.getId(CONDUCTING_EQUIPMENT_PROP)))
.map(propertyBag -> new CgmesConnectivityNode(
propertyBag.getId(CONNECTIVITY_NODE_PROP),
propertyBag.get(NAME_PROP)))
Expand All @@ -261,7 +263,7 @@ public List<CgmesConnectivityNode> getConnectivityNodeByBusbarSection(String bus
*/
public List<CgmesConnectivityNode> getConnectivityNodeByBay(String containerId) {
return cgmesModel.tripleStore().query(
"SELECT DISTINCT ?ConnectivityNode ?name \n" +
"SELECT DISTINCT ?ConnectivityNode ?name ?EquipmentContainer \n" +
"WHERE {{\n" +
" GRAPH ?graph {\n" +
" ?ConnectivityNode a cim:ConnectivityNode . \n" +
Expand All @@ -272,10 +274,10 @@ public List<CgmesConnectivityNode> getConnectivityNodeByBay(String containerId)
" ?Switch a ?type ; \n" +
" cim:Equipment.EquipmentContainer ?EquipmentContainer . \n" +
" VALUES ?type { cim:Switch cim:Breaker cim:Disconnector cim:LoadBreakSwitch cim:ProtectedSwitch } . \n" +
" FILTER (str(?EquipmentContainer) = \"http://default-cgmes-model/#" + containerId + "\") \n" +
END_QUERY +
"ORDER BY ?name ")
.stream()
.filter(bag -> containerId.equals(bag.getId(EQUIPMENT_CONTAINER_PROP)))
.map(propertyBag -> new CgmesConnectivityNode(
propertyBag.getId(CONNECTIVITY_NODE_PROP),
propertyBag.get(NAME_PROP)))
Expand All @@ -296,9 +298,9 @@ public List<CgmesSwitch> getSwitches(String containerId) {
" cim:Equipment.EquipmentContainer ?EquipmentContainer . \n" +
" OPTIONAL { ?Switch cim:IdentifiedObject.name ?name } \n" +
" VALUES ?type { cim:Switch cim:Breaker cim:Disconnector cim:LoadBreakSwitch cim:ProtectedSwitch cim:GroundDisconnector } . \n" +
" FILTER (str(?EquipmentContainer) = \"http://default-cgmes-model/#" + containerId + "\") \n" +
END_QUERY)
.stream()
.filter(bag -> containerId.equals(bag.getId(EQUIPMENT_CONTAINER_PROP)))
.map(propertyBag -> new CgmesSwitch(
propertyBag.getId(SWITCH_PROP),
propertyBag.get(NAME_PROP),
Expand All @@ -321,12 +323,12 @@ public List<CgmesTerminal> getTerminalsByConductingEquipment(String conductingEq
" OPTIONAL { ?Terminal cim:IdentifiedObject.name ?name }\n" +
" ?ConductingEquipment \n" +
" a ?conductingEquipmentType .\n" +
" FILTER (str(?ConductingEquipment) = \"http://default-cgmes-model/#" + conductingEquipmentId + "\") \n" +
"}}\n" +
"OPTIONAL { GRAPH ?graphCN {\n" +
" ?Terminal cim:Terminal.ConnectivityNode ?ConnectivityNode .\n" +
END_QUERY)
.stream()
.filter(bag -> conductingEquipmentId.equals(bag.getId(CONDUCTING_EQUIPMENT_PROP)))
.map(propertyBag -> new CgmesTerminal(
propertyBag.getId(TERMINAL_PROP),
propertyBag.get(NAME_PROP),
Expand All @@ -349,12 +351,12 @@ public Optional<CgmesTerminal> getTerminalById(String terminalId) {
" OPTIONAL { ?Terminal cim:IdentifiedObject.name ?name }\n" +
" ?ConductingEquipment \n" +
" a ?conductingEquipmentType .\n" +
" FILTER (str(?Terminal) = \"http://default-cgmes-model/#" + terminalId + "\") \n" +
"}}\n" +
"OPTIONAL { GRAPH ?graphCN {\n" +
" ?Terminal cim:Terminal.ConnectivityNode ?ConnectivityNode .\n" +
END_QUERY)
.stream()
.filter(bag -> terminalId.equals(bag.getId(TERMINAL_PROP)))
.map(propertyBag -> new CgmesTerminal(
propertyBag.getId(TERMINAL_PROP),
propertyBag.get(NAME_PROP),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,18 @@ void getVoltageLevelsBySubstation_WhenCalledWithKnownId_ThenPropertyBagsIsFilter
void getBusbarSectionsByEquipmentContainer_WhenSparQLReturnsBags_ThenPropertyBagIsConvertedToCgmesBusbarSection() {
var busbarSectionId = "BusbarSectionId";
var busbarSectionName = "Name BusbarSection";
var equipmentContainerId = "ContainerId";

var bags = new PropertyBags();
var bag = new PropertyBag(List.of(BUSBARSECTION_PROP, NAME_PROP));
var bag = new PropertyBag(List.of(BUSBARSECTION_PROP, NAME_PROP, EQUIPMENT_CONTAINER_PROP));
bag.put(BUSBARSECTION_PROP, busbarSectionId);
bag.put(NAME_PROP, busbarSectionName);
bag.put(EQUIPMENT_CONTAINER_PROP, equipmentContainerId);
bags.add(bag);

setupTripleStore(bags);

var result = context.getBusbarSectionsByEquipmentContainer("Random VoltageId");
var result = context.getBusbarSectionsByEquipmentContainer(equipmentContainerId);
assertNotNull(result);
assertEquals(1, result.size());
var busbarSection = result.get(0);
Expand All @@ -102,16 +104,18 @@ void getBusbarSectionsByEquipmentContainer_WhenSparQLReturnsBags_ThenPropertyBag
void getBaysByVoltageLevel_WhenSparQLReturnsBags_ThenPropertyBagIsConvertedToCgmesBay() {
var bayId = "BayId";
var bayName = "Name Bay";
var voltageLevelId = "VoltageLevelId";

var bags = new PropertyBags();
var bag = new PropertyBag(List.of(BAY_PROP, NAME_PROP));
var bag = new PropertyBag(List.of(BAY_PROP, NAME_PROP, VOLTAGE_LEVEL_PROP));
bag.put(BAY_PROP, bayId);
bag.put(NAME_PROP, bayName);
bag.put(VOLTAGE_LEVEL_PROP, voltageLevelId);
bags.add(bag);

setupTripleStore(bags);

var result = context.getBaysByVoltageLevel("Random VoltageId");
var result = context.getBaysByVoltageLevel(voltageLevelId);
assertNotNull(result);
assertEquals(1, result.size());
var bay = result.get(0);
Expand Down Expand Up @@ -242,9 +246,10 @@ void getConnectivityNodeByBusbarSection_WhenCalledWithKnownId_ThenPropertyBagsIs
var busbarSectionId = "BusbarSection ID";

var bags = new PropertyBags();
var bag = new PropertyBag(List.of(CONNECTIVITY_NODE_PROP, NAME_PROP));
var bag = new PropertyBag(List.of(CONNECTIVITY_NODE_PROP, NAME_PROP, CONDUCTING_EQUIPMENT_PROP));
bag.put(CONNECTIVITY_NODE_PROP, ccnId);
bag.put(NAME_PROP, ccnName);
bag.put(CONDUCTING_EQUIPMENT_PROP, busbarSectionId);
bags.add(bag);

setupTripleStore(bags);
Expand All @@ -264,9 +269,10 @@ void getConnectivityNodeByBay_WhenCalledWithKnownId_ThenPropertyBagsIsConvertedT
var bayID = "Bay ID";

var bags = new PropertyBags();
var bag = new PropertyBag(List.of(CONNECTIVITY_NODE_PROP, NAME_PROP));
var bag = new PropertyBag(List.of(CONNECTIVITY_NODE_PROP, NAME_PROP, EQUIPMENT_CONTAINER_PROP));
bag.put(CONNECTIVITY_NODE_PROP, ccnId);
bag.put(NAME_PROP, ccnName);
bag.put(EQUIPMENT_CONTAINER_PROP, bayID);
bags.add(bag);

setupTripleStore(bags);
Expand Down Expand Up @@ -315,6 +321,7 @@ void getTerminalsByConductingEquipment_WhenCalledWithKnownId_ThenPropertyBagsIsF
bag.put(TERMINAL_PROP, terminalId);
bag.put(NAME_PROP, terminalName);
bag.put(CONNECTIVITY_NODE_PROP, ccnNode);
bag.put(CONDUCTING_EQUIPMENT_PROP, containerId);
bags.add(bag);

setupTripleStore(bags);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void map_WhenWithCimData_ThenSclMapped() throws IOException {
assertTransformerWinding(transformerWinding);
assertTapChanger(transformerWinding.getTapChanger());
assertTerminal(transformerWinding.getTerminal(), 1, "T3_0", "CONNECTIVITY_NODE88",
"_af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T3_0/CONNECTIVITY_NODE88");
"af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T3_0/CONNECTIVITY_NODE88");

assertEquals(3, substation.getVoltageLevel().size());
var voltageLevel = substation.getVoltageLevel().get(0);
Expand All @@ -76,20 +76,20 @@ void map_WhenWithCimData_ThenSclMapped() throws IOException {
var busbarSection = voltageLevel.getBay().get(0);
assertBay(busbarSection, "BUSBAR10", 1, 0);
assertConnectivityNode(busbarSection.getConnectivityNode().get(0), "CONNECTIVITY_NODE82",
"_af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BUSBAR10/CONNECTIVITY_NODE82");
"af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BUSBAR10/CONNECTIVITY_NODE82");

// The others bay are actual bays from CIM.
var bay = voltageLevel.getBay().get(1);
assertBay(bay, "BAY_T4_2", 3, 3);

assertConnectivityNode(bay.getConnectivityNode().get(0), "CONNECTIVITY_NODE83",
"_af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T4_2/CONNECTIVITY_NODE83");
"af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T4_2/CONNECTIVITY_NODE83");

var conductingEquipment = bay.getConductingEquipment().get(0);
assertConductingEquipment(conductingEquipment);

assertTerminal(conductingEquipment.getTerminal(), 2, "T4_2_ADDB1", "CONNECTIVITY_NODE83",
"_af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T4_2/CONNECTIVITY_NODE83");
"af9a4ae3-ba2e-4c34-8e47-5af894ee20f4/S1 380kV/BAY_T4_2/CONNECTIVITY_NODE83");
}

private void assertBay(TBay tBay, String name, int numberOfConnectivityNodes, int numberOfConductionEquipment) {
Expand All @@ -99,7 +99,7 @@ private void assertBay(TBay tBay, String name, int numberOfConnectivityNodes, in
}

private void assertSubstation(TSubstation substation) {
assertEquals("_af9a4ae3-ba2e-4c34-8e47-5af894ee20f4", substation.getName());
assertEquals("af9a4ae3-ba2e-4c34-8e47-5af894ee20f4", substation.getName());
assertEquals("Sub1", substation.getDesc());
}

Expand Down