From 0ffd6ad58cc9aa0b4e3c056ab81f28e7e632c0ca Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 2 Oct 2021 01:36:54 +0200 Subject: [PATCH] Created the SimpleUsageBuilder to build a custom usage --- .../commands/usage/SimpleUsageBuilder.java | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/main/java/de/gnmyt/autoresponder/commands/usage/SimpleUsageBuilder.java diff --git a/src/main/java/de/gnmyt/autoresponder/commands/usage/SimpleUsageBuilder.java b/src/main/java/de/gnmyt/autoresponder/commands/usage/SimpleUsageBuilder.java new file mode 100644 index 0000000..77ae315 --- /dev/null +++ b/src/main/java/de/gnmyt/autoresponder/commands/usage/SimpleUsageBuilder.java @@ -0,0 +1,94 @@ +package de.gnmyt.autoresponder.commands.usage; + +import de.gnmyt.autoresponder.commands.ResponderCommand; + +public class SimpleUsageBuilder { + + private final UsageElement usageElement = new UsageElement(); + + private final ResponderCommand responderCommand; + + /** + * Constructor of the {@link SimpleUsageBuilder} + * + * @param responderCommand The created {@link ResponderCommand} to add the created usage element + */ + public SimpleUsageBuilder(ResponderCommand responderCommand) { + this.responderCommand = responderCommand; + } + + /** + * Sets the name of the usage element + * + * @param name The new name of the usage element + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder name(String name) { + usageElement.setName(name); + return this; + } + + /** + * Sets the length of the usage element + * + * @param length The new length of the usage element + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder length(int length) { + usageElement.setLength(length); + return this; + } + + /** + * Sets the required-state of the usage element + * + * @param required The new required state of the usage element + * true if the provided usage element should be required, otherwise false + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder required(boolean required) { + usageElement.setRequired(required); + return this; + } + + /** + * Sets the type of the usage element + * + * @param type The new type of the usage element + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder type(UsageType type) { + usageElement.setType(type); + return this; + } + + /** + * Sets the description of the usage element + * + * @param description The new description of the usage element + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder description(String description) { + usageElement.setDescription(description); + return this; + } + + /** + * Sets the allowed values of the usage element + * + * @param values The new allowed values of the usage element + * @return the current {@link SimpleUsageBuilder} instance + */ + public SimpleUsageBuilder allowedValues(Object... values) { + usageElement.setAllowedValues(values); + return this; + } + + /** + * Adds the provided usage element to the list of the {@link ResponderCommand} + */ + public void add() { + responderCommand.addUsageElement(usageElement); + } + +}