21 package org.matsim.core.config;
23 import org.apache.logging.log4j.LogManager;
24 import org.apache.logging.log4j.Logger;
28 import org.xml.sax.Attributes;
30 import java.util.ArrayDeque;
31 import java.util.Deque;
32 import java.util.Stack;
41 class ConfigReaderMatsimV1
extends MatsimXmlParser {
43 private final static Logger log = LogManager.getLogger(ConfigReaderMatsimV1.class);
45 private final static String MODULE =
"module";
46 private final static String INCLUDE =
"include";
47 private final static String PARAM =
"param";
49 private static final String msg =
"using deprecated config version; please switch to config v2; your output_config.xml " +
50 "will be in the correct version; v1 will fail eventually, since we want to reduce the " +
51 "workload on keeping everything between v1 and v2 consistent (look into " +
52 "ScoringConfigGroup or RoutingConfigGroup if you want to know what we mean).";
55 private final Config config;
56 private final ConfigAliases aliases;
57 private final Deque<String> pathStack =
new ArrayDeque<>();
58 private ConfigGroup currmodule = null;
60 private String localDtd;
62 public ConfigReaderMatsimV1(
final Config config) {
63 super(ValidationType.DTD_ONLY);
65 this.aliases =
new ConfigAliases();
69 public ConfigReaderMatsimV1(
final Config config,
final ConfigAliases aliases) {
70 super(ValidationType.DTD_ONLY);
72 this.aliases = aliases;
77 public void startTag(
final String name,
final Attributes atts,
final Stack<String> context) {
78 if (PARAM.equals(name)) {
80 }
else if (MODULE.equals(name)) {
82 }
else if (INCLUDE.equals(name)) {
83 log.warn(
"<include> is currently not supported.");
88 public void endTag(
final String name,
final String content,
final Stack<String> context) {
89 if (MODULE.equals(name)) {
91 if (GlobalConfigGroup.GROUP_NAME.equals(name) ) {
92 if (!config.global().isInsistingOnDeprecatedConfigVersion()) {
101 this.currmodule = null;
102 this.pathStack.removeFirst();
106 private void startModule(
final Attributes atts) {
107 String name = this.aliases.resolveAlias(atts.getValue(NAME), this.pathStack);
108 this.currmodule = this.config.getModule(name);
110 if (this.currmodule == null) {
112 if (name.equals(QSimConfigGroup.GROUP_NAME)){
113 this.currmodule = this.config.qsim();
117 this.currmodule = this.config.createModule(atts.getValue(
"name"));
120 this.pathStack.addFirst(name);
123 private void startParam(
final Attributes atts) {
124 String name = this.aliases.resolveAlias(atts.getValue(NAME), this.pathStack);
125 this.currmodule.addParam(name, atts.getValue(
"value"));
135 public void readFile(
final String filename,
final String dtdFilename) {
136 this.localDtd = dtdFilename;
138 this.localDtd = null;
final void readFile(final String filename)