7
7
import com .google .gson .JsonElement ;
8
8
import com .google .gson .JsonObject ;
9
9
import com .google .gson .JsonParser ;
10
- import org .lfenergy .compas .scl .auto .alignment .model .GenericBay ;
11
- import org .lfenergy .compas .scl .auto .alignment .model .GenericConductingEquipment ;
12
- import org .lfenergy .compas .scl .auto .alignment .model .GenericSCL ;
13
- import org .lfenergy .compas .scl .auto .alignment .model .GenericSubstation ;
10
+ import org .lfenergy .compas .scl .auto .alignment .model .*;
14
11
15
12
import java .util .Optional ;
16
- import java .util .concurrent .atomic .AtomicLong ;
17
13
import java .util .stream .StreamSupport ;
18
14
19
15
import static org .lfenergy .compas .scl .auto .alignment .common .CommonUtil .cleanSXYDeclarationAndAttributes ;
@@ -37,41 +33,61 @@ public void enrich() {
37
33
38
34
// Next process the VoltageLevels.
39
35
if (jsonSubstation .has ("voltageLevels" )) {
40
- jsonSubstation .getAsJsonArray ("voltageLevels" )
41
- .forEach (jsonVoltageLevel -> enrichVoltageLevel (substation , jsonVoltageLevel .getAsJsonObject ()));
36
+ JsonArray jsonNodes = jsonSubstation .getAsJsonArray ("voltageLevels" );
37
+ substation .getVoltageLevels ()
38
+ .forEach (voltageLevel -> enrichVoltageLevel (jsonNodes , voltageLevel ));
42
39
}
43
40
44
- AtomicLong pwtCoordinate = new AtomicLong (1 );
45
- substation .getPowerTransformers ().forEach (powerTransformer ->
46
- powerTransformer .setXYCoordinates (pwtCoordinate .get (), pwtCoordinate .getAndIncrement ()));
41
+ if (jsonSubstation .has ("multitermNodes" )) {
42
+ JsonArray jsonNodes = jsonSubstation .getAsJsonArray ("multitermNodes" );
43
+ substation .getPowerTransformers ()
44
+ .forEach (powerTransformer -> enrichPowerTransformer (jsonNodes , powerTransformer ));
45
+ }
47
46
});
48
47
}
49
48
50
- private void enrichVoltageLevel (GenericSubstation substation , JsonObject jsonVoltageLevel ) {
51
- var voltageLevelFullName = jsonVoltageLevel .get ("voltageLevelInfos" ).getAsJsonObject ().get ("id" ).getAsString ();
52
- var sclVoltageLevel = substation .getVoltageLevelByFullName (voltageLevelFullName );
53
- sclVoltageLevel .ifPresent (voltageLevel -> {
54
- voltageLevel .setXYCoordinates (getCoordinate (jsonVoltageLevel , "x" ),
49
+ private void enrichPowerTransformer (JsonArray jsonNodes , GenericPowerTransformer powerTransformer ) {
50
+ var jsonObject = findNode (jsonNodes , powerTransformer .getFullName ());
51
+ jsonObject .ifPresent (jsonPowerTransformer ->
52
+ powerTransformer .setXYCoordinates (
53
+ getCoordinate (jsonPowerTransformer , "x" ),
54
+ getCoordinate (jsonPowerTransformer , "y" )));
55
+ }
56
+
57
+ private void enrichVoltageLevel (JsonArray jsonNodes , GenericVoltageLevel voltageLevel ) {
58
+ var jsonObject = findVoltageLevelNode (jsonNodes , voltageLevel .getFullName ());
59
+ jsonObject .ifPresent (jsonVoltageLevel -> {
60
+ voltageLevel .setXYCoordinates (
61
+ getCoordinate (jsonVoltageLevel , "x" ),
55
62
getCoordinate (jsonVoltageLevel , "y" ));
56
63
57
64
if (jsonVoltageLevel .has ("nodes" )) {
58
- JsonArray jsonNodes = jsonVoltageLevel .getAsJsonArray ("nodes" );
65
+ JsonArray jsonSubNodes = jsonVoltageLevel .getAsJsonArray ("nodes" );
59
66
voltageLevel .getBays ()
60
67
.forEach (bay -> {
61
68
if (bay .isBusbar ()) {
62
- enrichBusbar (jsonNodes , bay );
69
+ enrichBusbar (jsonSubNodes , bay );
63
70
} else {
64
- enrichBay (jsonNodes , bay );
71
+ enrichBay (jsonSubNodes , bay );
65
72
}
66
73
});
67
74
}
68
75
});
69
76
}
70
77
78
+ private Optional <JsonObject > findVoltageLevelNode (JsonArray jsonNodes , String fullName ) {
79
+ return StreamSupport .stream (jsonNodes .spliterator (), false )
80
+ .map (JsonElement ::getAsJsonObject )
81
+ .filter (jsonObject -> fullName .equals (jsonObject .get ("voltageLevelInfos" ).getAsJsonObject ().get ("id" ).getAsString ()))
82
+ .findFirst ();
83
+ }
84
+
71
85
private void enrichBusbar (JsonArray jsonNodes , GenericBay busbar ) {
72
86
var jsonObject = findNode (jsonNodes , busbar .getFullName ());
73
87
jsonObject .ifPresent (jsonBusbar ->
74
- busbar .setXYCoordinates (getCoordinate (jsonBusbar , "x" ), getCoordinate (jsonBusbar , "y" )));
88
+ busbar .setXYCoordinates (
89
+ getCoordinate (jsonBusbar , "x" ),
90
+ getCoordinate (jsonBusbar , "y" )));
75
91
}
76
92
77
93
private void enrichBay (JsonArray jsonNodes , GenericBay bay ) {
@@ -102,10 +118,10 @@ private long getMinimumCoordinate(JsonArray jsonNodes, GenericBay bay, String fi
102
118
.orElse (1 );
103
119
}
104
120
105
- private Optional <JsonObject > findNode (JsonArray jsonNodes , String fullname ) {
121
+ private Optional <JsonObject > findNode (JsonArray jsonNodes , String fullName ) {
106
122
return StreamSupport .stream (jsonNodes .spliterator (), false )
107
123
.map (JsonElement ::getAsJsonObject )
108
- .filter (jsonObject -> fullname .equals (jsonObject .get ("id" ).getAsString ()))
124
+ .filter (jsonObject -> fullName .equals (jsonObject .get ("id" ).getAsString ()))
109
125
.findFirst ();
110
126
}
111
127
0 commit comments