@@ -9,9 +9,12 @@ package com.powsybl.metrix.integration
9
9
10
10
11
11
import com.powsybl.iidm.network.Network
12
+ import com.powsybl.metrix.mapping.DataTableStore
12
13
import com.powsybl.metrix.mapping.LogDslLoader
13
14
import com.powsybl.metrix.mapping.TimeSeriesMappingConfig
14
15
import com.powsybl.metrix.mapping.TimeSeriesMappingConfigLoader
16
+ import com.powsybl.scripting.groovy.GroovyScriptExtension
17
+ import com.powsybl.scripting.groovy.GroovyScripts
15
18
import com.powsybl.timeseries.ReadOnlyTimeSeriesStore
16
19
import com.powsybl.timeseries.TimeSeriesFilter
17
20
import com.powsybl.timeseries.dsl.CalculatedTimeSeriesGroovyDslLoader
@@ -31,10 +34,10 @@ import static GeneratorsBindingData.generatorsBindingData
31
34
import static HvdcData.hvdcData
32
35
import static LoadData.loadData
33
36
import static LoadsBindingData.loadsBindingData
37
+ import static LossesData.lossesData
34
38
import static ParametersData.parametersData
35
39
import static PhaseShifterData.phaseShifterData
36
40
import static SectionMonitoringData.sectionMonitoringData
37
- import static LossesData.lossesData
38
41
39
42
/**
40
43
* @author Paul Bui-Quang {@literal <paul.buiquang at rte-france.com> }
@@ -121,8 +124,18 @@ class MetrixDslDataLoader {
121
124
shell. evaluate(dslSrc)
122
125
}
123
126
124
- static void bind (Binding binding , Network network , ReadOnlyTimeSeriesStore store , MetrixParameters parameters , TimeSeriesMappingConfig mappingConfig , MetrixDslData data , LogDslLoader logDslLoader ) {
127
+ static void bind (Binding binding , Network network , ReadOnlyTimeSeriesStore store , DataTableStore dataTableStore , MetrixParameters parameters , TimeSeriesMappingConfig mappingConfig , MetrixDslData data , LogDslLoader logDslLoader ) {
128
+ // External bindings
125
129
CalculatedTimeSeriesGroovyDslLoader . bind(binding, store, mappingConfig. getTimeSeriesNodes())
130
+
131
+ // Context objects
132
+ Map<Class<?> , Object > contextObjects = new HashMap<> ()
133
+ contextObjects. put(DataTableStore . class, dataTableStore)
134
+
135
+ // Bindings through extensions
136
+ Iterable<GroovyScriptExtension > extensions = ServiceLoader . load(GroovyScriptExtension . class, GroovyScripts . class. getClassLoader())
137
+ extensions. forEach { it. load(binding, contextObjects) }
138
+
126
139
TimeSeriesMappingConfigLoader loader = new TimeSeriesMappingConfigLoader (mappingConfig, store. getTimeSeriesNames(new TimeSeriesFilter ()))
127
140
128
141
// map the base case to network variable
@@ -186,15 +199,25 @@ class MetrixDslDataLoader {
186
199
187
200
static MetrixDslData load (Reader reader , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
188
201
TimeSeriesMappingConfig mappingConfig , Writer out ) {
202
+ load(reader, network, parameters, store, new DataTableStore (), mappingConfig, out)
203
+ }
204
+
205
+ static MetrixDslData load (Reader reader , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
206
+ DataTableStore dataTableStore , TimeSeriesMappingConfig mappingConfig , Writer out ) {
189
207
MetrixDslDataLoader dslLoader = new MetrixDslDataLoader (reader, " metrixDsl.groovy" )
190
- dslLoader. load(network, parameters, store, mappingConfig, out)
208
+ dslLoader. load(network, parameters, store, dataTableStore, mappingConfig, out)
191
209
}
192
210
193
211
static MetrixDslData load (Path metrixDslFile , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
194
212
TimeSeriesMappingConfig mappingConfig ) {
195
213
load(metrixDslFile, network, parameters, store, mappingConfig, null )
196
214
}
197
215
216
+ static MetrixDslData load (Path metrixDslFile , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
217
+ DataTableStore dataTableStore , TimeSeriesMappingConfig mappingConfig ) {
218
+ load(metrixDslFile, network, parameters, store, dataTableStore, mappingConfig, null )
219
+ }
220
+
198
221
static MetrixDslData load (Path metrixDslFile , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
199
222
TimeSeriesMappingConfig mappingConfig , Writer out ) {
200
223
@@ -203,13 +226,21 @@ class MetrixDslDataLoader {
203
226
}
204
227
}
205
228
229
+ static MetrixDslData load (Path metrixDslFile , Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
230
+ DataTableStore dataTableStore , TimeSeriesMappingConfig mappingConfig , Writer out ) {
231
+
232
+ Files . newBufferedReader(metrixDslFile, StandardCharsets . UTF_8 ). withReader { Reader reader ->
233
+ load(reader, network, parameters, store, dataTableStore, mappingConfig, out)
234
+ }
235
+ }
236
+
206
237
MetrixDslData load (Network network , MetrixParameters parameters , ReadOnlyTimeSeriesStore store ,
207
- TimeSeriesMappingConfig mappingConfig , Writer out ) {
238
+ DataTableStore dataTableStore , TimeSeriesMappingConfig mappingConfig , Writer out ) {
208
239
209
240
MetrixDslData data = new MetrixDslData ()
210
241
Binding binding = new Binding ()
211
242
LogDslLoader logDslLoader = LogDslLoader . create(binding, out, METRIX_SCRIPT_SECTION )
212
- bind(binding, network, store, parameters, mappingConfig, data, logDslLoader)
243
+ bind(binding, network, store, dataTableStore, parameters, mappingConfig, data, logDslLoader)
213
244
214
245
evaluate(dslSrc, binding)
215
246
0 commit comments