21 package org.matsim.core.config;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.HashMap;
29 import java.util.Map.Entry;
30 import java.util.TreeMap;
32 import jakarta.validation.Valid;
34 import org.apache.logging.log4j.LogManager;
35 import org.apache.logging.log4j.Logger;
53 private final TreeMap<String,String>
params;
61 this.params =
new TreeMap<>();
64 public void addParam(
final String paramName,
final String value) {
65 if (this.params.containsKey(paramName)) {
66 log.info(this.
toString() +
"[paramName=" + paramName +
",oldValue=" + this.params.get(paramName) +
",value=" + value +
" value replaced]");
68 this.params.put(paramName, value);
81 String value = this.
getValue(paramName);
82 if (!((value == null) || value.equalsIgnoreCase(
"null"))) {
83 map.put(paramName, value);
85 map.put(paramName,
"null");
101 for ( Collection<? extends ConfigGroup> sets :
getParameterSets().values() ) {
102 for (
ConfigGroup set : sets )
set.checkConsistency(config);
107 return this.params.get(paramName);
123 return new HashMap<>();
128 StringBuilder str =
new StringBuilder();
129 for ( Entry<String, String> entry : this.
getParams().entrySet() ) {
131 str.append(entry.getKey());
133 str.append(entry.getValue());
136 return "[name=" + this.
getName() +
"]" +
137 "[nOfParams=" + this.
getParams().size() +
"]" + str.toString();
167 Collection<ConfigGroup> parameterSets = parameterSetsPerType.get(
set.
getName() );
169 if ( parameterSets == null ) {
170 parameterSets =
new ArrayList<>();
171 parameterSetsPerType.put(
set.
getName() , parameterSets );
174 parameterSets.add(
set );
178 final Collection<ConfigGroup> parameterSets = parameterSetsPerType.get(
set.
getName() );
179 return parameterSets != null ?
180 parameterSets.remove(
set ) :
200 return parameterSetsPerType.remove( type );
204 final Collection<ConfigGroup> sets = parameterSetsPerType.get( type );
205 return sets == null ?
207 Collections.unmodifiableCollection( sets );
216 Map<String, Collection<ConfigGroup>> parameterSetsPerType2 =
new TreeMap<>() ;
217 for ( Entry<String, Collection<ConfigGroup>> entry : parameterSetsPerType.entrySet() ) {
218 parameterSetsPerType2.put( entry.getKey(), Collections.unmodifiableCollection(entry.getValue()) ) ;
220 return Collections.unmodifiableMap( parameterSetsPerType2 ) ;
230 for ( Collection<ConfigGroup> parameterSets : this.parameterSetsPerType.values() ) {
232 parameterSet.setLocked();
244 if (filename.startsWith(
"~/")) {
245 filename = System.getProperty(
"user.home") + filename.substring(1);
248 if ( filename.startsWith(
"/") ) {
ConfigGroup createParameterSet(final String type)
Map< String, String > getParams()
void addParameterSet(final ConfigGroup set)
final Collection<? extends ConfigGroup > clearParameterSetsForType(final String type)
void checkParameterSet(final ConfigGroup set)
static URL getFileUrl(String filename)
final Collection<? extends ConfigGroup > getParameterSets(final String type)
void checkConsistency(Config config)
Map< String, String > getComments()
static URL getInputFileURL(URL context, String filename)
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
ConfigGroup(final String name)
void addParameterToMap(final Map< String, String > map, final String paramName)
final Map< String, Collection< @Valid ConfigGroup > > parameterSetsPerType
final TreeMap< String, String > params
boolean removeParameterSet(final ConfigGroup set)
String getValue(final String paramName)
static URL extendUrl(URL context, String extension)
final void testForLocked()
void addParam(final String paramName, final String value)