package marmot.util; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; public class KeyValueOptions { private Map<String, String> map_ = new HashMap<>(); private String default_option_; public KeyValueOptions(String format) { parse(format); } private void parse(String format) { String[] args = format.split(","); for (String arg : args) { if (arg.length() == 0) { continue; } int index = arg.indexOf('='); if (index < 0) { if (default_option_ != null) throw new RuntimeException("Default option already set: %s" + args); default_option_ = arg; } else { String key = arg.substring(0, index); String value = arg.substring(index + 1, arg.length()); if (map_.containsKey(key)) { throw new RuntimeException("Key already definded: %s" + args); } map_.put(key, value); } } } public Integer getValueAsInteger(String option) { String value = map_.get(option); if (value == null) { throw new NoSuchElementException(); } return Integer.valueOf(value); } public Collection<String> getKeys() { return map_.keySet(); } public Collection<String> getSortedKeys() { List<String> keys = new LinkedList<>(); for (String key : getKeys()) { keys.add(key); } Collections.sort(keys); return keys; } public String getDefaultOption() { return default_option_; } }