21 package org.matsim.core.config;
23 import java.net.MalformedURLException;
25 import java.nio.file.Paths;
26 import java.util.ArrayList;
27 import java.util.Collection;
28 import java.util.List;
30 import java.util.TreeMap;
31 import org.apache.logging.log4j.LogManager;
32 import org.apache.logging.log4j.Logger;
80 private final TreeMap<String, ConfigGroup>
modules =
new TreeMap<>();
93 private static final Logger
log = LogManager.getLogger(
Config.class);
105 URL currentDir = Paths.get(
"").toUri().toURL();
107 }
catch (MalformedURLException e) {
182 m.checkConsistency(
this);
185 c.checkConsistency(
this);
211 if (this.modules.containsKey(name)) {
212 throw new IllegalArgumentException(
"Module " + name +
" exists already.");
215 this.modules.put(name, m);
230 String name = specializedConfigModule.
getName();
231 if (name == null || name.isEmpty()) {
244 copyTo(m, specializedConfigModule);
247 this.modules.put(name, specializedConfigModule);
249 throw new IllegalArgumentException(
"Module " + name +
" exists already.");
252 this.modules.put(name, specializedConfigModule);
256 for (Map.Entry<String, String> e : source.
getParams().entrySet()) {
257 destination.
addParam(e.getKey(), e.getValue());
260 for (Collection<? extends ConfigGroup> sourceSets : source.
getParameterSets().values()) {
263 copyTo(sourceSet, destinationSet);
277 if (this.modules.containsKey(name)) {
278 this.modules.remove(name);
279 log.warn(
"Module \"" + name +
"\" is removed manually from config");
302 return this.modules.get(moduleName);
318 public final String
getParam(
final String moduleName,
final String paramName) {
321 log.error(
"Module \"" + moduleName +
"\" is not known.");
322 throw new IllegalArgumentException(
"Module \"" + moduleName +
"\" is not known.");
326 String message =
"Parameter \"" + paramName +
"\" of module \"" + moduleName +
"\" is not known";
328 throw new IllegalArgumentException(message);
346 public final String
findParam(
final String moduleName,
final String paramName) {
354 }
catch (IllegalArgumentException e) {
365 return "[nof_modules=" + this.modules.size() +
"]";
381 public final void setParam(
final String moduleName,
final String paramName,
final String value) {
386 log.info(
"module \"" + moduleName +
"\" added.");
494 boolean alreadyExists =
false;
496 if (
ch.getClass().equals(checker.getClass())) {
497 alreadyExists =
true;
500 if ( !alreadyExists ) {
501 this.consistencyCheckers.add(checker);
503 log.info(
"ConfigConsistencyChecker with runtime type=" + checker.getClass() +
" was already added; not adding it a second time" ) ;
510 consistencyCheckers.removeIf(
ch ->
ch.getClass().equals( clazz ) );
523 log.error(
"too late in execution sequence to set config items. Use");
524 log.error(
" Config config = ConfigUtils.loadConfig(filename); ");
525 log.error(
" config.xxx().setYyy(...); ");
526 log.error(
" Controler ctrl = new Controler( config );");
528 log.error(
" Config config = ConfigUtils.loadConfig(filename); ");
529 log.error(
" config.xxx().setYyy(...); ");
530 log.error(
" Scenario scenario = ScenarioUtils.loadScenario(config);") ;
531 log.error(
" // do something with scenario") ;
532 log.error(
" Controler ctrl = new Controler( scenario );");
533 log.error(
"This will be changed to an abortive error in the future.");
542 if ( this.context==null || !(context.toString().equals( this.context.toString() ) ) ) {
543 log.info(
"setting context to [" + context +
"]");
ConfigGroup createParameterSet(final String type)
static final String GROUP_NAME
final void setParam(final String moduleName, final String paramName, final String value)
final String getParam(final String moduleName, final String paramName)
static final String GROUP_NAME
Map< String, String > getParams()
void removeConfigConsistencyChecker(final Class clazz)
final VehiclesConfigGroup vehicles()
static final String GROUP_NAME
void addParameterSet(final ConfigGroup set)
static void copyTo(ConfigGroup source, ConfigGroup destination)
LinkStatsConfigGroup linkStats()
static final String CONFIG_MODULE
final NetworkConfigGroup network()
static final String GROUP_NAME
EventsManagerConfigGroup eventsManager()
static final String GROUP_NAME
ReplanningAnnealerConfigGroup replanningAnnealer()
TransitRouterConfigGroup transitRouter()
static final String GROUPNAME
static final String GROUP_NAME
final Collection<? extends ConfigGroup > getParameterSets(final String type)
final ScoringConfigGroup scoring()
final CountsConfigGroup counts()
final String findParam(final String moduleName, final String paramName)
static final String GROUP_NAME
static final String GROUP_NAME
final void removeModule(final String name)
static final String GROUP_NAME
static final String GROUP_NAME
final FacilitiesConfigGroup facilities()
HermesConfigGroup hermes()
TravelTimeCalculatorConfigGroup travelTimeCalculator()
static final String GROUP_NAME
VspExperimentalConfigGroup vspExperimental()
static final String GROUP_NAME
final void setLocked(boolean locked)
static final String GROUP_NAME
static final String GROUP_NAME
void addConfigConsistencyChecker(final ConfigConsistencyChecker checker)
static final String GROUP_NAME
final void addModule(final ConfigGroup specializedConfigModule)
TransitConfigGroup transit()
TimeAllocationMutatorConfigGroup timeAllocationMutator()
static final String GROUP_NAME
final PlansConfigGroup plans()
static final String CONFIG_MODULE
static final String GROUP_NAME
RoutingConfigGroup routing()
ScenarioConfigGroup scenario()
SubtourModeChoiceConfigGroup subtourModeChoice()
void setContext(URL context)
PlanInheritanceConfigGroup planInheritance()
static final String GROUP_NAME
String getValue(final String paramName)
final TreeMap< String, ConfigGroup > getModules()
final ConfigGroup createModule(final String name)
ChangeModeConfigGroup changeMode()
final ReplanningConfigGroup replanning()
final ControllerConfigGroup controller()
final ConfigGroup getModule(final String moduleName)
final List< ConfigConsistencyChecker > consistencyCheckers
final HouseholdsConfigGroup households()
static final String GROUP_NAME
static final String GROUP_NAME
final GlobalConfigGroup global()
static final String GROUP_NAME
void addParam(final String paramName, final String value)
static final String GROUP_NAME
final TreeMap< String, ConfigGroup > modules