@Override public void addParam(final String key, final String value) { // adding underscore parameters is still supported for backward compatibility. if (key != null && key.startsWith(MODULE)) { StrategySettings settings = getStrategySettings( Id.create(key.substring(MODULE.length()), StrategySettings.class), true); settings.setStrategyName(value); } else if (key != null && key.startsWith(MODULE_PROBABILITY)) { StrategySettings settings = getStrategySettings( Id.create(key.substring(MODULE_PROBABILITY.length()), StrategySettings.class), true); settings.setWeight(Double.parseDouble(value)); } else if (key != null && key.startsWith(MODULE_DISABLE_AFTER_ITERATION)) { StrategySettings settings = getStrategySettings( Id.create( key.substring(MODULE_DISABLE_AFTER_ITERATION.length()), StrategySettings.class), true); settings.setDisableAfter(Integer.parseInt(value)); } else if (key != null && key.startsWith(MODULE_EXE_PATH)) { StrategySettings settings = getStrategySettings( Id.create(key.substring(MODULE_EXE_PATH.length()), StrategySettings.class), true); settings.setExePath(value); } else if (key != null && key.startsWith(MODULE_SUBPOPULATION)) { StrategySettings settings = getStrategySettings( Id.create(key.substring(MODULE_SUBPOPULATION.length()), StrategySettings.class), true); settings.setSubpopulation(value); } else { delegate.addParam(key, value); } }
private StrategySettings getStrategySettings( final Id<StrategySettings> index, final boolean createIfMissing) { StrategySettings settings = null; // should be in a map, but it is difficult to keep consistency with the // delegate... for (StrategySettings s : getStrategySettings()) { if (!s.getId().equals(index)) continue; if (settings != null) throw new IllegalStateException("several settings with id " + index); settings = s; } if (settings == null && createIfMissing) { settings = new StrategySettings(index); addStrategySettings(settings); } return settings; }