package edu.umd.rhsmith.diads.meater.core.config.setup.ops.instance; import edu.umd.rhsmith.diads.meater.core.config.container.InstanceConfig; import edu.umd.rhsmith.diads.meater.core.config.container.InstanceConfigContainer; import edu.umd.rhsmith.diads.meater.core.config.setup.MEaterSetupConsole; import edu.umd.rhsmith.diads.meater.core.config.setup.ops.SetupConsoleOperation; import edu.umd.rhsmith.diads.meater.util.console.BooleanPrompter; public class RemoveInstanceOperation<I extends InstanceConfig> extends SetupConsoleOperation { public static final String OP_SHORTNAME = "remove-instance"; public static final String OP_UINAME = "Remove instance from current unit"; private final InstanceConfigContainer<I> owner; public RemoveInstanceOperation(InstanceConfigContainer<I> owner) { super(OP_UINAME, OP_SHORTNAME); this.owner = owner; } @Override public void go(MEaterSetupConsole setup) { // get name of submodule to remove setup.getConsole().say(MSG_PROMPT); String instanceName = setup.getConsole().prompt(false); // make sure we have it I config = this.owner.getInstanceConfigByName(instanceName); if (config == null) { setup.getConsole().error(MSG_ERR_INVALID_NAME_FMT, instanceName, ListInstancesOperation.OP_SHORTNAME); return; } // okay then setup.getConsole().say(MSG_WARN_PROMPT_REMOVE); if (setup.getConsole().prompt(BooleanPrompter.PROMPT_YESNO, false)) { this.owner.removeInstanceConfig(config); setup.getConsole().say(MSG_SUCCESS); } } /* * -------------------------------- * Messages * -------------------------------- */ private static final String MSG_PROMPT = "Enter the name of the instance you would like to remove"; private static final String MSG_ERR_INVALID_NAME_FMT = "Invalid instance name specified: '%s' (use '%s' to list current unit's instances)"; private static final String MSG_WARN_PROMPT_REMOVE = "Really remove instance '%s' and all associated configuration information?"; private static final String MSG_SUCCESS = "instance removed"; }