Skip to content

Commit

Permalink
ZoneRawBuilder : horizontal case
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas ADAM <tadam@silicom.fr>
  • Loading branch information
tadam50 committed Jul 6, 2023
1 parent a116094 commit 578d71a
Show file tree
Hide file tree
Showing 7 changed files with 1,907 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@

import com.powsybl.sld.model.graphs.*;

import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.*;

/**
* @author Geoffroy Jamgotchian <geoffroy.jamgotchian at rte-france.com>
Expand All @@ -22,6 +19,8 @@ public class RawGraphBuilder implements GraphBuilder {
private final Map<String, VoltageLevelRawBuilder> vlBuilders = new TreeMap<>();
private final Map<String, SubstationRawBuilder> ssBuilders = new TreeMap<>();

private ZoneRawBuilder zBuilder;

public VoltageLevelRawBuilder createVoltageLevelBuilder(VoltageLevelInfos voltageLevelInfos, SubstationRawBuilder parentBuilder) {
VoltageLevelRawBuilder vlBuilder = new VoltageLevelRawBuilder(voltageLevelInfos, parentBuilder, this::getVoltageLevelInfosFromId);
if (parentBuilder != null) {
Expand All @@ -36,7 +35,7 @@ public VoltageLevelRawBuilder createVoltageLevelBuilder(String vlId, double vlNo
}

public VoltageLevelRawBuilder createVoltageLevelBuilder(String vlId, double vlNominalV) {
return createVoltageLevelBuilder(new VoltageLevelInfos(vlId, vlId, vlNominalV), null);
return createVoltageLevelBuilder(vlId, vlNominalV, null);
}

public VoltageLevelInfos getVoltageLevelInfosFromId(String id) {
Expand All @@ -46,12 +45,24 @@ public VoltageLevelInfos getVoltageLevelInfosFromId(String id) {
return new VoltageLevelInfos("OTHER", "OTHER", 0);
}

public SubstationRawBuilder createSubstationBuilder(String id) {
SubstationRawBuilder ssb = new SubstationRawBuilder(id);
public SubstationRawBuilder createSubstationBuilder(String id, ZoneRawBuilder parentBuilder) {
SubstationRawBuilder ssb = new SubstationRawBuilder(id, parentBuilder);
if (parentBuilder != null) {
parentBuilder.addSubstationBuilder(ssb);
}
ssBuilders.put(id, ssb);
return ssb;
}

public SubstationRawBuilder createSubstationBuilder(String id) {
return createSubstationBuilder(id, null);
}

public ZoneRawBuilder createZoneBuilder(List<String> substationIds) {
zBuilder = new ZoneRawBuilder(substationIds);
return zBuilder;
}

@Override
public VoltageLevelGraph buildVoltageLevelGraph(String id, Graph parentGraph) {
return vlBuilders.get(id).getGraph();
Expand All @@ -62,15 +73,17 @@ public VoltageLevelGraph buildVoltageLevelGraph(String id) {
return buildVoltageLevelGraph(id, null);
}

// TODO: implement use of zoneGraph
@Override
public SubstationGraph buildSubstationGraph(String id, ZoneGraph zoneGraph) {
public SubstationGraph buildSubstationGraph(String id, ZoneGraph parentGraph) {
SubstationRawBuilder sGraphBuilder = ssBuilders.get(id);
SubstationGraph ssGraph = sGraphBuilder.getGraph();
sGraphBuilder.voltageLevelBuilders.stream()
.map(VoltageLevelRawBuilder::getGraph)
.sorted(Comparator.comparingDouble(vlGraph -> -vlGraph.getVoltageLevelInfos().getNominalVoltage()))
.forEach(ssGraph::addVoltageLevel);
if (parentGraph != null) {
parentGraph.addSubstation(ssGraph);
}
return ssGraph;
}

Expand All @@ -79,8 +92,11 @@ public SubstationGraph buildSubstationGraph(String id) {
return buildSubstationGraph(id, null);
}

//TODO: buildZoneGraph
@Override
public ZoneGraph buildZoneGraph(List<String> substationIds) {
return null;
ZoneRawBuilder zGraphBuilder = zBuilder;
ZoneGraph zGraph = zGraphBuilder.getGraph();
substationIds.forEach(id -> buildSubstationGraph(id, zGraph));
return zGraph;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,24 @@ public class SubstationRawBuilder {
SubstationGraph substationGraph;
List<VoltageLevelRawBuilder> voltageLevelBuilders = new ArrayList<>();

public SubstationRawBuilder(String id) {
substationGraph = SubstationGraph.create(id);
ZoneRawBuilder zBuilder;

public SubstationRawBuilder(String id, ZoneRawBuilder parentBuilder) {
substationGraph = SubstationGraph.create(id, parentBuilder == null ? null : parentBuilder.getGraph());
}

public SubstationGraph getGraph() {
return substationGraph;
}

public ZoneRawBuilder getSubstationBuilder() {
return zBuilder;
}

public void setZoneRawBuilder(ZoneRawBuilder zoneBuilder) {
this.zBuilder = zoneBuilder;
}

public void addVlBuilder(VoltageLevelRawBuilder vlBuilder) {
voltageLevelBuilders.add(vlBuilder);
vlBuilder.setSubstationBuilder(this);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.powsybl.sld.builders;

import com.powsybl.sld.model.graphs.ZoneGraph;

import java.util.ArrayList;
import java.util.List;

public class ZoneRawBuilder {

ZoneGraph zoneGraph;
List<SubstationRawBuilder> substationRawBuilders = new ArrayList<>();

public ZoneRawBuilder(List<String> ids) {
zoneGraph = ZoneGraph.create(ids);
}

public ZoneGraph getGraph() {
return zoneGraph;
}

public void addSubstationBuilder(SubstationRawBuilder ssBuilder) {
substationRawBuilders.add(ssBuilder);
ssBuilder.setZoneRawBuilder(this);
}
}
Loading

0 comments on commit 578d71a

Please sign in to comment.