Skip to content

Commit cd8c1dd

Browse files
authored
chore: simplify configurator structure (#272)
1 parent feb5793 commit cd8c1dd

File tree

35 files changed

+330
-269
lines changed

35 files changed

+330
-269
lines changed

core/src/main/java/org/eqasim/core/components/config/ConfigAdapter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ static public void run(String[] args, EqasimConfigurator configurator, ConfigAda
1414
.requireOptions("input-path", "output-path", "prefix") //
1515
.build();
1616

17-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("input-path"), configurator.getConfigGroups());
18-
configurator.addOptionalConfigGroups(config);
17+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("input-path"));
18+
configurator.updateConfig(config);
1919
adapter.accept(config, cmd.getOptionStrict("prefix"));
2020

2121
new ConfigWriter(config).write(cmd.getOptionStrict("output-path"));

core/src/main/java/org/eqasim/core/components/emissions/RunComputeEmissionsEvents.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.eqasim.core.components.emissions;
22

3-
import org.apache.commons.lang3.ArrayUtils;
43
import org.apache.commons.lang3.StringUtils;
54
import org.eqasim.core.misc.ClassUtils;
65
import org.eqasim.core.simulation.EqasimConfigurator;
@@ -13,7 +12,6 @@
1312
import org.matsim.core.api.experimental.events.EventsManager;
1413
import org.matsim.core.config.CommandLine;
1514
import org.matsim.core.config.Config;
16-
import org.matsim.core.config.ConfigGroup;
1715
import org.matsim.core.config.ConfigUtils;
1816
import org.matsim.core.controler.AbstractModule;
1917
import org.matsim.core.controler.Injector;
@@ -39,9 +37,9 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
3937
configurator = new EqasimConfigurator();
4038
}
4139

42-
ConfigGroup[] configGroups = ArrayUtils.addAll(configurator.getConfigGroups(), new EmissionsConfigGroup());
43-
44-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configGroups);
40+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
41+
configurator.registerConfigGroup(new EmissionsConfigGroup(), false);
42+
configurator.updateConfig(config);
4543
cmd.applyConfiguration(config);
4644

4745
EmissionsConfigGroup emissionsConfig = (EmissionsConfigGroup) config.getModules().get("emissions");

core/src/main/java/org/eqasim/core/components/emissions/RunComputeEmissionsGrid.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package org.eqasim.core.components.emissions;
22

3-
import org.apache.commons.lang3.ArrayUtils;
43
import org.eqasim.core.misc.ClassUtils;
54
import org.eqasim.core.simulation.EqasimConfigurator;
65
import org.geotools.api.feature.simple.SimpleFeature;
76
import org.locationtech.jts.geom.Geometry;
87
import org.matsim.api.core.v01.network.Network;
98
import org.matsim.contrib.emissions.analysis.EmissionGridAnalyzer;
10-
import org.matsim.contrib.emissions.utils.EmissionsConfigGroup;
119
import org.matsim.core.config.CommandLine;
1210
import org.matsim.core.config.Config;
13-
import org.matsim.core.config.ConfigGroup;
1411
import org.matsim.core.config.ConfigUtils;
1512
import org.matsim.core.network.NetworkUtils;
1613
import org.matsim.core.network.io.MatsimNetworkReader;
@@ -32,9 +29,8 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
3229
configurator = new EqasimConfigurator();
3330
}
3431

35-
ConfigGroup[] configGroups = ArrayUtils.addAll(configurator.getConfigGroups(), new EmissionsConfigGroup());
36-
37-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configGroups);
32+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
33+
configurator.updateConfig(config);
3834
cmd.applyConfiguration(config);
3935
final String outputDirectory = config.controller().getOutputDirectory() + "/";
4036

core/src/main/java/org/eqasim/core/components/emissions/RunExportEmissionsNetwork.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.List;
77
import java.util.Map;
88

9-
import org.apache.commons.lang3.ArrayUtils;
109
import org.eqasim.core.misc.ClassUtils;
1110
import org.eqasim.core.simulation.EqasimConfigurator;
1211
import org.geotools.api.feature.simple.SimpleFeature;
@@ -19,11 +18,9 @@
1918
import org.matsim.contrib.emissions.analysis.EmissionsByPollutant;
2019
import org.matsim.contrib.emissions.analysis.EmissionsOnLinkEventHandler;
2120
import org.matsim.contrib.emissions.events.EmissionEventsReader;
22-
import org.matsim.contrib.emissions.utils.EmissionsConfigGroup;
2321
import org.matsim.core.api.experimental.events.EventsManager;
2422
import org.matsim.core.config.CommandLine;
2523
import org.matsim.core.config.Config;
26-
import org.matsim.core.config.ConfigGroup;
2724
import org.matsim.core.config.ConfigUtils;
2825
import org.matsim.core.events.EventsUtils;
2926
import org.matsim.core.network.NetworkUtils;
@@ -49,9 +46,8 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
4946
configurator = new EqasimConfigurator();
5047
}
5148

52-
ConfigGroup[] configGroups = ArrayUtils.addAll(configurator.getConfigGroups(), new EmissionsConfigGroup());
53-
54-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configGroups);
49+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
50+
configurator.updateConfig(config);
5551
cmd.applyConfiguration(config);
5652
final String outputDirectory = config.controller().getOutputDirectory() + "/";
5753

core/src/main/java/org/eqasim/core/scenario/config/RunGenerateConfig.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ static public void main(String[] args) throws ConfigurationException {
1515
.build();
1616

1717
EqasimConfigurator configurator = new EqasimConfigurator();
18-
Config config = ConfigUtils.createConfig(configurator.getConfigGroups());
18+
Config config = ConfigUtils.createConfig();
19+
configurator.updateConfig(config);
1920

2021
String prefix = cmd.getOptionStrict("prefix");
2122
double sampleSize = Double.parseDouble(cmd.getOptionStrict("sample-size"));

core/src/main/java/org/eqasim/core/scenario/cutter/RunScenarioCutter.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import org.eqasim.core.scenario.validation.VehiclesValidator;
3232
import org.eqasim.core.simulation.EqasimConfigurator;
3333
import org.eqasim.core.simulation.mode_choice.AbstractEqasimExtension;
34-
import org.eqasim.core.simulation.termination.EqasimTerminationModule;
34+
import org.eqasim.core.simulation.termination.EqasimTerminationConfigGroup;
3535
import org.matsim.api.core.v01.Scenario;
3636
import org.matsim.contribs.discrete_mode_choice.modules.DiscreteModeChoiceModule;
3737
import org.matsim.core.config.CommandLine;
@@ -71,9 +71,9 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
7171

7272
// Load scenario
7373
EqasimConfigurator configurator = new EqasimConfigurator();
74-
configurator.getModules().removeIf(m -> m instanceof EqasimTerminationModule);
75-
76-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configurator.getConfigGroups());
74+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
75+
configurator.updateConfig(config);
76+
config.removeModule(EqasimTerminationConfigGroup.GROUP_NAME);
7777
cmd.applyConfiguration(config);
7878

7979
VehiclesValidator.validate(config);
@@ -111,7 +111,7 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
111111

112112
// Cut population
113113
Injector populationCutterInjector = new InjectorBuilder(scenario) //
114-
.addOverridingModules(configurator.getModules().stream()
114+
.addOverridingModules(configurator.getModules(config).stream()
115115
.filter(module -> !(module instanceof AbstractEqasimExtension) && !(module instanceof DiscreteModeChoiceModule)).toList()) //
116116
.addOverridingModule(
117117
new PopulationCutterModule(extent, numberOfThreads, 40, cmd.getOption("events-path"))) //
@@ -162,14 +162,15 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
162162

163163
// "Cut" config
164164
// (we need to reload it, because it has become locked at this point)
165-
config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configurator.getConfigGroups());
165+
config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
166+
configurator.updateConfig(config);
166167
cmd.applyConfiguration(config);
167168
ConfigCutter configCutter = new ConfigCutter(prefix);
168169
configCutter.run(config);
169170

170171
// Final routing
171172
Injector routingInjector = new InjectorBuilder(scenario) //
172-
.addOverridingModules(configurator.getModules().stream()
173+
.addOverridingModules(configurator.getModules(config).stream()
173174
.filter(module -> !(module instanceof AbstractEqasimExtension) && !(module instanceof DiscreteModeChoiceModule)).toList()) //
174175
.addOverridingModule(new PopulationRouterModule(numberOfThreads, 100, false)) //
175176
.addOverridingModule(new CutterTravelTimeModule(travelTime)) //

core/src/main/java/org/eqasim/core/scenario/cutter/RunScenarioCutterV2.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ static public void main(String[] args)
4444
String outputPath = cmd.getOptionStrict("output-path");
4545

4646
EqasimConfigurator eqasimConfigurator = new EqasimConfigurator();
47-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), eqasimConfigurator.getConfigGroups());
47+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
48+
eqasimConfigurator.updateConfig(config);
4849
cmd.applyConfiguration(config);
49-
eqasimConfigurator.addOptionalConfigGroups(config);
5050

5151
if(!config.getModules().containsKey(VDFConfigGroup.GROUP_NAME) || !config.getModules().containsKey(VDFEngineConfigGroup.GROUP_NAME)) {
5252
throw new IllegalStateException(String.format("This scenario cutter only works with configs where both '%s' and '%s' modules are used", VDFConfigGroup.GROUP_NAME, VDFEngineConfigGroup.GROUP_NAME));
@@ -126,9 +126,9 @@ static public void main(String[] args)
126126

127127
// "Cut" config
128128
// (we need to reload it, because it has become locked at this point)
129-
config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), eqasimConfigurator.getConfigGroups());
129+
config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
130+
eqasimConfigurator.updateConfig(config);
130131
cmd.applyConfiguration(config);
131-
eqasimConfigurator.addOptionalConfigGroups(config);
132132
ConfigCutter configCutter = new ConfigCutter(prefix);
133133
configCutter.run(config);
134134

core/src/main/java/org/eqasim/core/scenario/routing/RunPopulationRouting.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ static public void main(String[] args) throws ConfigurationException, Interrupte
2929
.build();
3030

3131
EqasimConfigurator configurator = new EqasimConfigurator();
32-
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"), configurator.getConfigGroups());
32+
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
33+
configurator.updateConfig(config);
3334
config.getModules().remove(EqasimTerminationConfigGroup.GROUP_NAME);
34-
configurator.addOptionalConfigGroups(config);
3535
cmd.applyConfiguration(config);
3636
config.replanning().clearStrategySettings();
3737
VehiclesValidator.validate(config);
@@ -59,7 +59,7 @@ static public void main(String[] args) throws ConfigurationException, Interrupte
5959
}
6060

6161
Injector injector = new InjectorBuilder(scenario) //
62-
.addOverridingModules(configurator.getModules().stream()
62+
.addOverridingModules(configurator.getModules(config).stream()
6363
.filter(module -> !(module instanceof AbstractEqasimExtension)) //
6464
.filter(module -> !(module instanceof DiscreteModeChoiceModule)).toList()) //
6565
.addOverridingModule(new PopulationRouterModule(numberOfThreads, batchSize, true, modes)) //

0 commit comments

Comments
 (0)