public static Command Parse(string currentCommandLine) { int numberOfArguments = (currentCommandLine.Split(new char[]{'|'}, StringSplitOptions.RemoveEmptyEntries)).Length; int commandNameLastIndex = currentCommandLine.IndexOf(' '); if (commandNameLastIndex == -1) { throw new FormatException("Invalid command line !"); } string commandName = currentCommandLine.Substring(0, commandNameLastIndex); string commandParameters = currentCommandLine.Substring(commandNameLastIndex + 1); string[] commandArguments = commandParameters.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (numberOfArguments != commandArguments.Length) { throw new FormatException("Invalid command or spaces !"); } if (commandName.Contains('|')) { throw new FormatException("Invalid command: " + currentCommandLine); } for (int i = 0; i < commandArguments.Length; i++) { commandArguments[i] = commandArguments[i].Trim(); } Command command = new Command(commandName, commandArguments); return command; }
public string ProcessCommand(Command currentCommand) { switch (currentCommand.CommandName) { case "AddEvent": return this.AddEvent(currentCommand); case "DeleteEvents": return this.DeleteEvent(currentCommand); case "ListEvents": return this.GetListEvents(currentCommand); default: throw new FormatException("WTF " + currentCommand.CommandName + " is?"); } }
private string DeleteEvent(Command currentCommand) { if (currentCommand.Paramms.Length == 1) { int numberOfDeletedEvents = this.eventsManager.DeleteEventsByTitle(currentCommand.Paramms[0]); if (numberOfDeletedEvents == 0) { return "No events found.";///1 } return numberOfDeletedEvents + " events deleted"; } throw new FormatException("Invalid params"); }
private string AddEvent(Command currentCommand) { if (currentCommand.Paramms.Length == 2) { var date = DateTime.ParseExact(currentCommand.Paramms[0], "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture); Event createdEventFromCommand = new Event(date, currentCommand.Paramms[1]); this.eventsManager.AddEvent(createdEventFromCommand); return "Event added"; } if (currentCommand.Paramms.Length == 3) { var date = DateTime.ParseExact(currentCommand.Paramms[0], "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture); var createdEventFromCommand = new Event(date, currentCommand.Paramms[1], currentCommand.Paramms[2]); this.eventsManager.AddEvent(createdEventFromCommand); return "Event added"; } throw new FormatException("Invalid params"); }
private string GetListEvents(Command currentCommand) { if (currentCommand.Paramms.Length == 2) { DateTime date = DateTime.ParseExact(currentCommand.Paramms[0], "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture); int commandNumber = int.Parse(currentCommand.Paramms[1]); List<Event> events = this.eventsManager.ListEvents(date, commandNumber).ToList(); StringBuilder outputText = new StringBuilder(); if (!events.Any()) { return "No events found"; } foreach (var e in events) { outputText.AppendLine(e.ToString()); } return outputText.ToString().Trim(); } throw new FormatException("Invalid params!"); }