From ab727513337a4729c57220367d67eaa8bc6ce6ff Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 27 Mar 2017 23:26:37 -0400 Subject: Continue work on FDS --- .../main/java/bjc/utils/cli/fds/SimpleFDSMode.java | 32 +++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/cli/fds/SimpleFDSMode.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/cli/fds/SimpleFDSMode.java b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/SimpleFDSMode.java index 2f6e660..1dceb3a 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/cli/fds/SimpleFDSMode.java +++ b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/SimpleFDSMode.java @@ -1,10 +1,14 @@ package bjc.utils.cli.fds; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + import bjc.utils.cli.CommandHelp; import static java.lang.String.format; @@ -18,9 +22,9 @@ import static java.lang.String.format; * The FDS state type. */ public class SimpleFDSMode implements FDSMode { - private Map> commands; - private Map> modes; - private Map help; + private Map> commands; + private Map> modes; + private Multimap help; private Set registered; private char[] registeredArray; @@ -32,7 +36,7 @@ public class SimpleFDSMode implements FDSMode { public SimpleFDSMode() { commands = new HashMap<>(); modes = new HashMap<>(); - help = new HashMap<>(); + help = HashMultimap.create(); registered = new HashSet<>(); changed = true; @@ -50,16 +54,17 @@ public class SimpleFDSMode implements FDSMode { * @param hlp * The help for the command. * - * @throws FDSException + * @throws IllegalArgumentException * If the character is already bound to a command. */ - public void addCommand(char c, FDSCommand comm, CommandHelp hlp) throws FDSException { + public void addCommand(char c, FDSCommand comm, CommandHelp hlp) { if (comm == null) throw new NullPointerException("Command must not be null"); - else if (commands.containsKey(c) || modes.containsKey(c)) - throw new FDSException(format("Character '%s' is already bound")); + else if (commands.containsKey(c)) + throw new IllegalArgumentException(format("Character '%s' is already bound")); commands.put(c, comm); + help.put(c, hlp); registered.add(c); if (!changed) changed = true; @@ -74,16 +79,17 @@ public class SimpleFDSMode implements FDSMode { * @param mode * The submode to add. * - * @throws FDSException + * @throws IllegalArgumentException * If the character is already bound to a submode. */ - public void addSubmode(char c, FDSMode mode) throws FDSException { + public void addSubmode(char c, FDSMode mode, CommandHelp hlp) { if (mode == null) throw new NullPointerException("Mode must not be null"); - else if (modes.containsKey(c) || commands.containsKey(c)) - throw new FDSException(format("Character '%s' is already bound")); + else if (modes.containsKey(c)) + throw new IllegalArgumentException(format("Character '%s' is already bound")); modes.put(c, mode); + help.put(c, hlp); registered.add(c); if (!changed) changed = true; @@ -136,7 +142,7 @@ public class SimpleFDSMode implements FDSMode { } @Override - public CommandHelp getHelp(char c) { + public Collection getHelp(char c) { return help.get(c); } } \ No newline at end of file -- cgit v1.2.3