package com.brightgenerous.cli; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import com.brightgenerous.commons.EqualsUtils; import com.brightgenerous.commons.HashCodeUtils; import com.brightgenerous.commons.ToStringUtils; public class CliUtilsBuilder implements Serializable { private static final long serialVersionUID = -9171290809852973775L; private String cmdLineSyntax; private String opt; private String longOpt; private Integer args; private Boolean required; private Boolean optionalArg; private String argName; private String description; private Character valueSeparator; // must be java.io.Serializable private final List<CliOption> options = new ArrayList<>(); protected CliUtilsBuilder() { } public static CliUtilsBuilder create() { return new CliUtilsBuilder(); } public CliUtilsBuilder clear() { cmdLineSyntax = null; options.clear(); return this; } public String cmdLineSyntax() { return cmdLineSyntax; } public CliUtilsBuilder cmdLineSyntax(String cmdLineSyntax) { this.cmdLineSyntax = cmdLineSyntax; return this; } public String opt() { return opt; } public CliUtilsBuilder opt(String opt) { this.opt = opt; return this; } public String longOpt() { return longOpt; } public CliUtilsBuilder longOpt(String longOpt) { this.longOpt = longOpt; return this; } public Integer args() { return args; } public CliUtilsBuilder args(Integer args) { this.args = args; return this; } public Boolean required() { return required; } public CliUtilsBuilder required(Boolean required) { this.required = required; return this; } public Boolean optionalArg() { return optionalArg; } public CliUtilsBuilder optionalArg(Boolean optionalArg) { this.optionalArg = optionalArg; return this; } public String description() { return description; } public CliUtilsBuilder description(String description) { this.description = description; return this; } public Character valueSeparator() { return valueSeparator; } public CliUtilsBuilder valueSeparator(Character valueSeparator) { this.valueSeparator = valueSeparator; return this; } public CliUtilsBuilder add() { options.add(new CliOption(opt, longOpt, args, required, optionalArg, argName, description, valueSeparator)); opt = null; longOpt = null; args = null; required = null; optionalArg = null; argName = null; description = null; valueSeparator = null; return this; } public CliUtils build() { return CliUtils.get(cmdLineSyntax, options); } @Override public int hashCode() { if (HashCodeUtils.resolved()) { return HashCodeUtils.hashCodeAlt(null, this); } return super.hashCode(); } @Override public boolean equals(Object obj) { if (EqualsUtils.resolved()) { return EqualsUtils.equalsAlt(null, this, obj); } return super.equals(obj); } @Override public String toString() { if (ToStringUtils.resolved()) { return ToStringUtils.toStringAlt(this); } return super.toString(); } }