summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/cli/GenericCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/main/java/bjc/utils/cli/GenericCommand.java')
-rw-r--r--base/src/main/java/bjc/utils/cli/GenericCommand.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/cli/GenericCommand.java b/base/src/main/java/bjc/utils/cli/GenericCommand.java
new file mode 100644
index 0000000..4ae4dea
--- /dev/null
+++ b/base/src/main/java/bjc/utils/cli/GenericCommand.java
@@ -0,0 +1,84 @@
+package bjc.utils.cli;
+
+/**
+ * Generic command implementation.
+ *
+ * @author ben
+ *
+ */
+public class GenericCommand implements Command {
+ /*
+ * The behavior for invoking the command.
+ */
+ private final CommandHandler handler;
+
+ /*
+ * The help for the command.
+ */
+ private CommandHelp help;
+
+ /**
+ * Create a new generic command.
+ *
+ * @param handler
+ * The handler to use for the command.
+ * @param description
+ * The description of the command. May be null, in which
+ * case a default is provided.
+ * @param help
+ * The detailed help message for the command. May be
+ * null, in which case the description is repeated for
+ * the detailed help.
+ */
+ public GenericCommand(final CommandHandler handler, final String description, final String help) {
+ if (handler == null) throw new NullPointerException("Command handler must not be null");
+
+ this.handler = handler;
+
+ if (description == null) {
+ this.help = new NullHelp();
+ } else {
+ this.help = new GenericHelp(description, help);
+ }
+ }
+
+ @Override
+ public Command aliased() {
+ return new DelegatingCommand(this);
+ }
+
+ @Override
+ public CommandHandler getHandler() {
+ return handler;
+ }
+
+ @Override
+ public CommandHelp getHelp() {
+ return help;
+ }
+
+ @Override
+ public boolean isAlias() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("GenericCommand [");
+
+ if (help != null) {
+ builder.append("help=");
+ builder.append(help);
+ }
+
+ builder.append("]");
+
+ return builder.toString();
+ }
+}