mirror of
https://gitlab.com/arnekeller/kit-programmieren-ws1920-final1.git
synced 2024-11-24 09:24:58 +00:00
Store available commands in map
This commit is contained in:
parent
8803aab42a
commit
931ff805a9
@ -2,6 +2,10 @@ package edu.kit.informatik.ui.command;
|
|||||||
|
|
||||||
import edu.kit.informatik.ui.InvalidInputException;
|
import edu.kit.informatik.ui.InvalidInputException;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory used to parse user input into commands.
|
* Factory used to parse user input into commands.
|
||||||
*
|
*
|
||||||
@ -100,6 +104,29 @@ public final class CommandFactory {
|
|||||||
*/
|
*/
|
||||||
public static final String STEP = "step";
|
public static final String STEP = "step";
|
||||||
|
|
||||||
|
private static final Map<String, Supplier<Command>> COMMANDS = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
COMMANDS.put(ADD_TRACK, AddTrack::new);
|
||||||
|
COMMANDS.put(ADD_SWITCH, AddSwitch::new);
|
||||||
|
COMMANDS.put(DELETE_TRACK, DeleteTrack::new);
|
||||||
|
COMMANDS.put(LIST_TRACKS, ListTracks::new);
|
||||||
|
COMMANDS.put(SET_SWITCH, SetSwitch::new);
|
||||||
|
COMMANDS.put(CREATE_ENGINE, CreateEngine::new);
|
||||||
|
COMMANDS.put(LIST_ENGINES, ListEngines::new);
|
||||||
|
COMMANDS.put(CREATE_COACH, CreateCoach::new);
|
||||||
|
COMMANDS.put(LIST_COACHES, ListCoaches::new);
|
||||||
|
COMMANDS.put(CREATE_TRAIN_SET, CreateTrainSet::new);
|
||||||
|
COMMANDS.put(LIST_TRAIN_SETS, ListTrainSets::new);
|
||||||
|
COMMANDS.put(DELETE_ROLLING_STOCK, DeleteRollingStock::new);
|
||||||
|
COMMANDS.put(ADD_TRAIN, AddTrain::new);
|
||||||
|
COMMANDS.put(DELETE_TRAIN, DeleteTrain::new);
|
||||||
|
COMMANDS.put(LIST_TRAINS, ListTrains::new);
|
||||||
|
COMMANDS.put(SHOW_TRAIN, ShowTrain::new);
|
||||||
|
COMMANDS.put(PUT_TRAIN, PutTrain::new);
|
||||||
|
COMMANDS.put(STEP, Step::new);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class -> private constructor.
|
* Utility class -> private constructor.
|
||||||
*/
|
*/
|
||||||
@ -109,52 +136,18 @@ public final class CommandFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a single line of user input into one command.
|
* Parse a single line of user input into one command.
|
||||||
* @param command user input line
|
* @param input user input line
|
||||||
* @return a fully specified command object
|
* @return a fully specified command object
|
||||||
* @throws InvalidInputException if user input is invalid
|
* @throws InvalidInputException if user input is invalid
|
||||||
*/
|
*/
|
||||||
public static Command getCommand(final String command) throws InvalidInputException {
|
public static Command getCommand(String input) throws InvalidInputException {
|
||||||
Command commandObject;
|
for (Map.Entry<String, Supplier<Command>> entry : COMMANDS.entrySet()) {
|
||||||
if (command.startsWith(ADD_TRACK)) {
|
if (input.startsWith(entry.getKey())) {
|
||||||
commandObject = new AddTrack();
|
Command command = entry.getValue().get();
|
||||||
} else if (command.startsWith(ADD_SWITCH)) {
|
command.parse(input);
|
||||||
commandObject = new AddSwitch();
|
return command;
|
||||||
} else if (command.startsWith(DELETE_TRACK)) {
|
}
|
||||||
commandObject = new DeleteTrack();
|
}
|
||||||
} else if (command.startsWith(LIST_TRACKS)) {
|
|
||||||
commandObject = new ListTracks();
|
|
||||||
} else if (command.startsWith(SET_SWITCH)) {
|
|
||||||
commandObject = new SetSwitch();
|
|
||||||
} else if (command.startsWith(CREATE_ENGINE)) {
|
|
||||||
commandObject = new CreateEngine();
|
|
||||||
} else if (command.startsWith(LIST_ENGINES)) {
|
|
||||||
commandObject = new ListEngines();
|
|
||||||
} else if (command.startsWith(CREATE_COACH)) {
|
|
||||||
commandObject = new CreateCoach();
|
|
||||||
} else if (command.startsWith(LIST_COACHES)) {
|
|
||||||
commandObject = new ListCoaches();
|
|
||||||
} else if (command.startsWith(CREATE_TRAIN_SET)) {
|
|
||||||
commandObject = new CreateTrainSet();
|
|
||||||
} else if (command.startsWith(LIST_TRAIN_SETS)) {
|
|
||||||
commandObject = new ListTrainSets();
|
|
||||||
} else if (command.startsWith(DELETE_ROLLING_STOCK)) {
|
|
||||||
commandObject = new DeleteRollingStock();
|
|
||||||
} else if (command.startsWith(ADD_TRAIN)) {
|
|
||||||
commandObject = new AddTrain();
|
|
||||||
} else if (command.startsWith(DELETE_TRAIN)) {
|
|
||||||
commandObject = new DeleteTrain();
|
|
||||||
} else if (command.startsWith(LIST_TRAINS)) {
|
|
||||||
commandObject = new ListTrains();
|
|
||||||
} else if (command.startsWith(SHOW_TRAIN)) {
|
|
||||||
commandObject = new ShowTrain();
|
|
||||||
} else if (command.startsWith(PUT_TRAIN)) {
|
|
||||||
commandObject = new PutTrain();
|
|
||||||
} else if (command.startsWith(STEP)) {
|
|
||||||
commandObject = new Step();
|
|
||||||
} else {
|
|
||||||
throw new InvalidInputException("unknown command");
|
throw new InvalidInputException("unknown command");
|
||||||
}
|
}
|
||||||
commandObject.parse(command);
|
|
||||||
return commandObject;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user