package org.hive2hive.client.console; /** * An abstract console menu item representing an option. It predefines the execution of an operation by means * of a template method. * * @author Christian * */ public abstract class ConsoleMenuItem { protected String displayText; public ConsoleMenuItem(String displayText) { this.displayText = displayText; } public void invoke() { boolean satisfied = false; try { satisfied = checkPreconditions(); } catch (Exception e) { ConsoleMenu.printError("Exception during precondition check."); ConsoleMenu.printError(e); } if (satisfied) { initialize(); try { execute(); } catch (Exception e) { ConsoleMenu.printError("Exception during menu item execution."); ConsoleMenu.printError(e); } finally { end(); } } } protected boolean checkPreconditions() throws Exception { // nothing by default return true; } protected abstract void initialize(); protected abstract void execute() throws Exception; protected abstract void end(); public String getDisplayText() { return displayText; } }