Skip to content

Commit 9074122

Browse files
authored
Feat(StandaloneModeChoice): passing down extra parameters to simulations + supporting of transit with abstract access (#265)
* feat: passing extra arguments down to the simulation * feat: TransitWithAbstractAccess handled in mode StandaloneModeChoiceConfigurator
1 parent f37713d commit 9074122

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

core/src/main/java/org/eqasim/core/standalone_mode_choice/RunStandaloneModeChoice.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
import java.util.Collection;
1515
import java.util.List;
1616
import java.util.Optional;
17+
import java.util.stream.Stream;
1718

19+
import org.apache.commons.lang3.ArrayUtils;
1820
import org.apache.logging.log4j.LogManager;
1921
import org.apache.logging.log4j.Logger;
2022
import org.eqasim.core.analysis.DistanceUnit;
@@ -152,6 +154,7 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
152154
.allowOptions(CMD_SIMULATE_AFTER)
153155
.allowOptions(CMD_SKIP_SCENARIO_CHECK)
154156
.allowOptions(EQASIM_CONFIGURATOR_CLASS, MODE_CHOICE_CONFIGURATOR_CLASS)
157+
.allowAnyOption(true)
155158
.build();
156159

157160
// Loading the config
@@ -272,22 +275,28 @@ RecordedTravelTime provideRecordedTravelTime() {
272275
try {
273276
Class<?> runClass = Class.forName(cmd.getOptionStrict(CMD_SIMULATE_AFTER));
274277
Method method = runClass.getMethod("main", String[].class);
278+
279+
String[] extraArgs = cmd.getAvailableOptions().stream()
280+
.filter(argName -> argName.startsWith("config:"))
281+
.filter(argName -> !argName.startsWith("config:standaloneModeChoice"))
282+
.filter(argName -> !argName.equals("config:plans.inputPlansFile"))
283+
.flatMap(argName -> Stream.of("--"+argName, cmd.getOption(argName).get()))
284+
.toArray(String[]::new);
285+
286+
String[] baseArgs = new String[]{
287+
"--config-path", cmd.getOptionStrict(CMD_CONFIG_PATH),
288+
"--config:plans.inputPlansFile", Paths.get(outputDirectoryHierarchy.getOutputFilename("output_plans.xml.gz")).toAbsolutePath().toString(),
289+
"--config:controler.outputDirectory", outputDirectoryHierarchy.getOutputFilename("sim"),
290+
"--config:controler.lastIteration", "0"
291+
};
292+
String[] allArgs = ArrayUtils.addAll(baseArgs, extraArgs);
293+
275294
method.invoke(null, new Object[]{
276-
new String[]{
277-
"--config-path", cmd.getOptionStrict(CMD_CONFIG_PATH),
278-
"--config:plans.inputPlansFile", Paths.get(outputDirectoryHierarchy.getOutputFilename("output_plans.xml.gz")).toAbsolutePath().toString(),
279-
"--config:controler.outputDirectory", outputDirectoryHierarchy.getOutputFilename("sim"),
280-
"--config:controler.lastIteration", "0"
281-
}
295+
allArgs
282296
});
283297

284-
} catch (ClassNotFoundException e) {
285-
throw new RuntimeException(e);
286-
} catch (InvocationTargetException e) {
287-
throw new RuntimeException(e);
288-
} catch (NoSuchMethodException e) {
289-
throw new RuntimeException(e);
290-
} catch (IllegalAccessException e) {
298+
} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException |
299+
IllegalAccessException e) {
291300
throw new RuntimeException(e);
292301
}
293302
}

core/src/main/java/org/eqasim/core/standalone_mode_choice/StandaloneModeChoiceConfigurator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import org.eqasim.core.analysis.DefaultPersonAnalysisFilter;
44
import org.eqasim.core.analysis.PersonAnalysisFilter;
55
import org.eqasim.core.simulation.EqasimConfigurator;
6+
import org.eqasim.core.simulation.modes.transit_with_abstract_access.TransitWithAbstractAbstractAccessModuleConfigGroup;
7+
import org.eqasim.core.simulation.modes.transit_with_abstract_access.TransitWithAbstractAccessModule;
8+
import org.eqasim.core.simulation.modes.transit_with_abstract_access.mode_choice.TransitWithAbstractAccessModeChoiceModule;
69
import org.eqasim.core.simulation.termination.EqasimTerminationModule;
710
import org.eqasim.core.simulation.vdf.VDFConfigGroup;
811
import org.eqasim.core.simulation.vdf.VDFModule;
@@ -31,6 +34,8 @@ public StandaloneModeChoiceConfigurator(Config config, CommandLine commandLine)
3134
this.optionalModules = new LinkedHashMap<>();
3235

3336
this.registerOptionalModule(new VDFConfigGroup(), new VDFModule());
37+
this.registerOptionalModule(TransitWithAbstractAbstractAccessModuleConfigGroup.GROUP_NAME, new TransitWithAbstractAccessModeChoiceModule());
38+
this.registerOptionalModule(TransitWithAbstractAbstractAccessModuleConfigGroup.GROUP_NAME, new TransitWithAbstractAccessModule());
3439
}
3540

3641
public Config getConfig() {

0 commit comments

Comments
 (0)