Index: lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableEditConfig.java diff -u lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableEditConfig.java:1.2 lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableEditConfig.java:1.3 --- lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableEditConfig.java:1.2 Sun Mar 16 17:54:55 2008 +++ lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableEditConfig.java Sun Mar 16 21:15:58 2008 @@ -2,11 +2,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.codelutin.option.OptionActionRunnable; -import org.codelutin.option.OptionAction; import org.codelutin.option.AbstractContext; import org.codelutin.option.Config; import org.codelutin.option.ConfigKey; +import org.codelutin.option.OptionAction; +import org.codelutin.option.OptionActionRunnable; /** @author chemit */ public class OptionActionRunnableEditConfig implements OptionActionRunnable { @@ -23,7 +23,7 @@ configs[i] = context.getParser().getConfig(configKey); } javax.swing.JDialog ui = (javax.swing.JDialog) Class.forName(UI_FQN).newInstance(); - ui.getClass().getMethod("init", AbstractContext.class,Config[].class).invoke(context,ui, new Object[]{configs}); + ui.getClass().getMethod("init", AbstractContext.class, Config[].class).invoke(context, ui, new Object[]{configs}); ui.setVisible(true); } } \ No newline at end of file Index: lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeConfig.java diff -u lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeConfig.java:1.1 lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeConfig.java:1.2 --- lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeConfig.java:1.1 Sun Mar 16 11:08:27 2008 +++ lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeConfig.java Sun Mar 16 21:15:58 2008 @@ -1,14 +1,67 @@ package org.codelutin.option.actions; -import org.codelutin.option.OptionActionRunnable; -import org.codelutin.option.OptionAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import static org.codelutin.i18n.I18n._; import org.codelutin.option.AbstractContext; +import org.codelutin.option.Config; +import org.codelutin.option.ConfigKey; +import org.codelutin.option.ConfigPropertyKey; +import org.codelutin.option.Option; +import org.codelutin.option.OptionAction; +import org.codelutin.option.OptionActionRunnable; /** @author chemit */ public class OptionActionRunnableChangeConfig implements OptionActionRunnable { + protected final Log log = LogFactory.getLog(getClass()); + public void run(OptionAction action, AbstractContext context) throws Exception { // Do nothing, this action is treated while init of config file //TODO transfert logic from config to here (to make change of behevior possible more easier) + // surcharge config + + Option option = action.getOption(); + String category = getCategory(context, option); + + ConfigKey configKey = context.getParser().getConfigKey(category); + + Config config = context.getParser().getConfig(configKey); + + if (config == null) { + return; + } + + String key = option.getValuedArgumentValue(0, String.class, null, false); + + String value = option.getValuedArgumentValue(1, String.class, null, false); + + ConfigPropertyKey propKey = config.getPropertyKey(key); + + if (propKey == null) { + // fatal error , could not found a matching configuration property + throw new IllegalArgumentException(_("lutinutil.error.unfound.config.property", category, key)); + } + Object oldVal = propKey.getCurrentValue(); + config.setProperty(propKey, value); + Object newVal = propKey.getCurrentValue(); + + log.info(_("lutinutil.change.config.property", category, propKey, oldVal, newVal)); + + + } + + /** + * @param context current context + * @param option the option to test + * @return the category of an IsisOptionConfig + */ + protected String getCategory(AbstractContext context, Option option) { + String value = option.getConstantArgumentValue(-1); + if (value == null) { + value = "main"; + } + ConfigKey configKey = context.getParser().getConfigKey(value); + return configKey == null ? null : configKey.getCategory(); } } Index: lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeFileConfig.java diff -u lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeFileConfig.java:1.1 lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeFileConfig.java:1.2 --- lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeFileConfig.java:1.1 Sun Mar 16 11:08:27 2008 +++ lutincommandline/src/java/org/codelutin/option/actions/OptionActionRunnableChangeFileConfig.java Sun Mar 16 21:15:58 2008 @@ -3,12 +3,22 @@ import org.codelutin.option.OptionActionRunnable; import org.codelutin.option.OptionAction; import org.codelutin.option.AbstractContext; +import org.codelutin.option.Option; + +import java.io.File; /** @author chemit */ public class OptionActionRunnableChangeFileConfig implements OptionActionRunnable { public void run(OptionAction action, AbstractContext context) throws Exception { - // Do nothing, this action is treated while init of config file - //TODO transfert logic from config to here (to make change of behevior possible more easier) + + Option option = action.getOption(); + + File source = option.getValuedArgumentValue(0, File.class,null,false); + + if (source.exists()) { + context.setSource(source); + } + } } \ No newline at end of file