Abstract base class for all commands. More...
#include <utils.h>
Public Types | |
enum | inheritableBool { INHERIT = -1, YES = 0, NO = 1 } |
Public Member Functions | |
Command () | |
virtual void | execute ()=0 |
bool | getVerbose () const |
void | setVerbose (bool b) |
virtual void | undo () |
virtual bool | undoable () const |
virtual | ~Command () |
Static Public Attributes | |
static const MetaCategory * | metadataInstruction |
Friends | |
class | CommandList |
class | frepple::CommandMoveOperationPlan |
Abstract base class for all commands.
All changes in the system state are expected to be wrapped in a command object. The execute() and undo() methods update the model.
Adhering to this principle makes it easy to trace, time and log changes appropriately.
Command objects can't be persisted.
Definition at line 3747 of file utils.h.
frepple::utils::Command::Command | ( | ) | [inline] |
virtual frepple::utils::Command::~Command | ( | ) | [inline, virtual] |
virtual void frepple::utils::Command::execute | ( | ) | [pure virtual] |
This method is used to actually execute the action.
A couple of notes on how this method should be implemented by the subclasses:
Implemented in frepple::CommandReadXMLFile, frepple::CommandReadXMLString, frepple::CommandSave, frepple::CommandSavePlan, frepple::CommandPlanSize, frepple::CommandErase, frepple::CommandCreateOperationPlan, frepple::CommandDeleteOperationPlan, frepple::CommandMoveOperationPlan, frepple::SolverMRP::SolverMRPdata, frepple::utils::CommandList, frepple::utils::CommandLoadLibrary, frepple::utils::CommandPython, and module_webservice::CommandWebservice.
bool frepple::utils::Command::getVerbose | ( | ) | const |
Returns whether verbose output is required during the execution of the command.
Reimplemented in frepple::SolverMRP::SolverMRPdata.
Definition at line 46 of file utils/actions.cpp.
void frepple::utils::Command::setVerbose | ( | bool | b | ) | [inline] |
virtual void frepple::utils::Command::undo | ( | ) | [inline, virtual] |
This method is undoing the state change of the execute() method.
Reversing the action is not possible for all commands. Command subclasses should override the undo() and undoable() method in case they are reversible.
A couple of notes on how this method should be implemented by the subclasses:
Reimplemented in frepple::CommandPlanSize, frepple::CommandCreateOperationPlan, frepple::CommandDeleteOperationPlan, frepple::CommandMoveOperationPlan, and frepple::utils::CommandList.
virtual bool frepple::utils::Command::undoable | ( | ) | const [inline, virtual] |
Returns true if the execution of this command can be undone.
Reimplemented in frepple::CommandPlanSize, frepple::CommandCreateOperationPlan, frepple::CommandDeleteOperationPlan, frepple::CommandMoveOperationPlan, and frepple::utils::CommandList.
friend class CommandList [friend] |
friend class frepple::CommandMoveOperationPlan [friend] |
const MetaCategory * frepple::utils::Command::metadataInstruction [static] |