/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "DELETE") { this.NextHandler.Handle(commandRequest); return; } int subIndex = commandRequest.Parameters.IndexOf("where ", StringComparison.InvariantCultureIgnoreCase); if (subIndex == -1) { Console.WriteLine("Missed where."); return; } foreach (var record in this.Service.Where(commandRequest.Parameters.Substring(subIndex + 7))) { this.Service.Remove(record.Id); } this.Service.MemEntity.Clear(); }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "CREATE") { this.NextHandler.Handle(commandRequest); return; } string firstName = null; string lastName = null; DateTime dateOfBirth; short department; decimal salary; char clas; this.ReadRecord(out firstName, out lastName, out dateOfBirth, out department, out salary, out clas); RecordParams recordParams = new RecordParams(firstName, lastName, dateOfBirth, department, salary, clas); int id = this.Service.CreateRecord(recordParams); Console.WriteLine("Record #{0} is created.", id); this.Service.MemEntity.Clear(); }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "SELECT") { this.NextHandler.Handle(commandRequest); return; } int subIndex = commandRequest.Parameters.IndexOf(" where ", StringComparison.InvariantCultureIgnoreCase); if (string.IsNullOrWhiteSpace(commandRequest.Parameters)) { this.printer.Print(this.Service.GetRecords()); return; } if (subIndex == -1) { var param = commandRequest.Parameters.Replace(",", " ", StringComparison.InvariantCultureIgnoreCase).Split(' ', StringSplitOptions.RemoveEmptyEntries); this.printer.Print(this.Service.GetRecords(), param); } else { var param = commandRequest.Parameters.Substring(0, subIndex).Replace(",", " ", StringComparison.InvariantCultureIgnoreCase).Split(' ', StringSplitOptions.RemoveEmptyEntries); this.printer.Print(this.Service.Where(commandRequest.Parameters.Substring(subIndex + 7)), param); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest), $"{nameof(commandRequest)} is null"); } PrintMissedCommandInfo(commandRequest.Command); }
/// <summary> /// Handler the request. /// </summary> /// <param name="request">Request to handle.</param> /// <returns>The object back or null.</returns> public virtual object Handle(AppCommandRequest request) { if (this.nextHandler != null) { return(this.nextHandler.Handle(request)); } else { return(null); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "PURGE") { this.NextHandler.Handle(commandRequest); return; } this.Service.Purge(); }
/// <summary> /// Handle request. /// </summary> /// <param name="commandRequest">The command request.</param> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException($"{nameof(commandRequest)} cannot be null."); } if (string.Equals(commandRequest.Commands, SelectConst, StringComparison.OrdinalIgnoreCase)) { this.Select(commandRequest.Parameters); } else { base.Handle(commandRequest); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">commandRequest.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest), $"{nameof(commandRequest)} is null"); } if (commandRequest.Command == "select") { this.Select(commandRequest.Parameters); } else { this.NextHandler.Handle(commandRequest); } }
/// <summary> /// Handles the request. /// </summary> /// <param name="request">Request to handle.</param> /// <returns>The object back, or null otherwise.</returns> public override object Handle(AppCommandRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Command.ToLower(CultureInfo.InvariantCulture) == "create") { this.Create(); return(true); } else { return(base.Handle(request)); } }
/// <summary> /// Handles the request. /// </summary> /// <param name="request">Request to handle.</param> /// <returns>The object back, or null otherwise.</returns> public override object Handle(AppCommandRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Command.ToUpperInvariant() == "IMPORT") { this.Import(request.Parameters); return(true); } else { return(base.Handle(request)); } }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns> /// Class AppCommandRequest Instance. /// </returns> /// <exception cref="ArgumentNullException">Request is null.</exception> public override AppCommandRequest Handle(AppCommandRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Command == "select") { this.Select(request.Parameters); return(null); } else { return(base.Handle(request)); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest), $"{nameof(commandRequest)} is null"); } if (commandRequest.Command == "insert") { Cache.Clear(); this.Create(commandRequest.Parameters); } else { this.NextHandler.Handle(commandRequest); } }
/// <summary> /// Handles the request. /// </summary> /// <param name="request">Request to handle.</param> /// <returns>The object back, or null otherwise.</returns> public override object Handle(AppCommandRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Command.ToUpperInvariant() == "PURGE") { this.Purge(); return(true); } else { return(base.Handle(request)); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "STAT") { this.NextHandler.Handle(commandRequest); return; } int recordsCount = this.Service.GetStat(); int recordsDelete = this.Service.GetDeleteStat(); Console.WriteLine($"{recordsCount} record(s)."); Console.WriteLine($"{recordsDelete} record(s) delete."); }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns> /// Class AppCommandRequest Instance. /// </returns> public override AppCommandRequest Handle(AppCommandRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Command == "insert") { this.Insert(request.Parameters); if (this.Service is FileCabinetMemoryService) { Memoizer.GetMemoizer(this.Service).MemoizerDictionary.Clear(); } return(null); } else { return(base.Handle(request)); } }
/// <inheritdoc/> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { Console.WriteLine(Source.Resource.GetString("invalidArgument", CultureInfo.InvariantCulture)); return; } if (commandRequest.Command is null) { Console.WriteLine(Source.Resource.GetString("invalidArgument", CultureInfo.InvariantCulture)); return; } if (commandRequest.Command.Equals("update", StringComparison.InvariantCultureIgnoreCase)) { this.Update(commandRequest.Parameters); } else { base.Handle(commandRequest); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequesst is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "INSERT") { this.NextHandler.Handle(commandRequest); return; } string firstName = null; string lastName = null; DateTime dateOfBirth = default; short department = default; decimal salary = default; char clas = default; int id = default; Regex regex = new Regex(@"\(.\w*\,.\w*\,.\w*\,.\w*\,.\w*\,.\w*\,.\w*\) values \(\'?.*\'?\,\'?.*\'?\)"); if (!regex.IsMatch(commandRequest.Parameters)) { Console.WriteLine("Incorrect expression"); return; } string param = commandRequest.Parameters.Replace("(", string.Empty, StringComparison.OrdinalIgnoreCase).Replace(")", string.Empty, StringComparison.OrdinalIgnoreCase); int subIndex = param.IndexOf(" values ", StringComparison.InvariantCultureIgnoreCase); var fields = param.Substring(0, subIndex) .Split(',', StringSplitOptions.RemoveEmptyEntries); var values = param.Substring(subIndex + 8) .Split(',', StringSplitOptions.RemoveEmptyEntries) .Select(x => x.Trim('\'', ' ')).ToArray(); if (fields.Length != values.Length || fields.Length != 7) { Console.WriteLine("The number of parameters does not match"); return; } for (int i = 0; i < fields.Length; i++) { switch (fields[i].ToUpperInvariant().Trim()) { case "ID": if (!int.TryParse(values[i], out id)) { id = -1; } break; case "FIRSTNAME": firstName = values[i]; break; case "LASTNAME": lastName = values[i]; break; case "DATEOFBIRTH": DateTime.TryParseExact(values[i], "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOfBirth); break; case "SALARY": if (!decimal.TryParse(values[i], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out salary)) { salary = default; } break; case "DEPARTMENT": if (!short.TryParse(values[i], out department)) { department = default; } break; case "CLASS": if (!char.TryParse(values[i], out clas)) { clas = default; } break; default: break; } } FileCabinetRecord record = new FileCabinetRecord { Id = id, FirstName = firstName, LastName = lastName, DateOfBirth = dateOfBirth, Department = department, Salary = salary, Class = clas, }; try { this.Service.Insert(record); Console.WriteLine("Record #{0} is created.", id); this.Service.MemEntity.Clear(); } catch (ArgumentException) { Console.WriteLine("Please, correct your input."); } }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "IMPORT") { this.NextHandler.Handle(commandRequest); return; } string[] param = commandRequest.Parameters.Split(' '); if (param.Length != 2) { Console.WriteLine("Invalid number of parameters"); return; } if (string.IsNullOrWhiteSpace(param[0]) || string.IsNullOrWhiteSpace(param[1])) { Console.WriteLine("Invalid parameters"); return; } FileStream fileStream = null; try { fileStream = new FileStream(param[1], FileMode.Open); } catch (IOException) { fileStream?.Close(); Console.WriteLine("Import failed: can't open file {0}", param[1]); return; } catch (UnauthorizedAccessException) { return; } FileCabinetServiceSnapshot serviceSnapshot = new FileCabinetServiceSnapshot(); try { if (param[0].ToUpperInvariant() == "CSV") { serviceSnapshot.LoadFromCsv(new StreamReader(fileStream, leaveOpen: true)); this.Service.Restore(serviceSnapshot); Console.WriteLine("records were imported from {0}", param[1]); } if (param[0].ToUpperInvariant() == "XML") { serviceSnapshot.LoadFromXml(new StreamReader(fileStream, leaveOpen: true)); this.Service.Restore(serviceSnapshot); Console.WriteLine("records were imported from {0}", param[1]); } this.Service.MemEntity.Clear(); } catch (FormatException) { Console.WriteLine("Not correct format."); } catch (InvalidOperationException) { Console.WriteLine("Not correct format."); } fileStream.Close(); }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "UPDATE") { this.NextHandler.Handle(commandRequest); return; } int subIndex = commandRequest.Parameters.IndexOf(" where ", StringComparison.InvariantCultureIgnoreCase); int startIndex = commandRequest.Parameters.IndexOf("set ", StringComparison.InvariantCultureIgnoreCase); if (subIndex == -1) { Console.WriteLine("Missed where."); return; } if (startIndex == -1) { Console.WriteLine("Missed set."); return; } var param = commandRequest.Parameters.Substring(startIndex + 3, subIndex) .Split(',', StringSplitOptions.RemoveEmptyEntries); string firstName = default; string lastName = default; DateTime dateOfBirth = default; short department = default; decimal salary = default; char clas = default; foreach (var record in param) { var values = record.Replace("=", " ", StringComparison.InvariantCultureIgnoreCase) .Replace("\'", string.Empty, StringComparison.InvariantCultureIgnoreCase) .Split(' ', StringSplitOptions.RemoveEmptyEntries); switch (values[0].ToUpperInvariant()) { case "FIRSTNAME": firstName = values[1]; break; case "LASTNAME": lastName = values[1]; break; case "DATEOFBIRTH": DateTime.TryParseExact(values[1], "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOfBirth); break; case "SALARY": if (!decimal.TryParse(values[1], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out salary)) { salary = default; } break; case "DEPARTMENT": if (!short.TryParse(values[1], out department)) { department = default; } break; case "CLASS": if (!char.TryParse(values[1], out clas)) { clas = default; } break; default: break; } } RecordParams recordParams = new RecordParams(); foreach (var record in this.Service.Where(commandRequest.Parameters.Substring(subIndex + 7))) { recordParams.FirstName = firstName == default ? record.FirstName : firstName; recordParams.LastName = lastName == default ? record.LastName : lastName; recordParams.DateOfBirth = dateOfBirth == default ? record.DateOfBirth : dateOfBirth; recordParams.Salary = salary == default ? record.Salary : salary; recordParams.Department = department == default ? record.Department : department; recordParams.Class = clas == default ? record.Class : clas; this.Service.EditRecord(record.Id, recordParams); } this.Service.MemEntity.Clear(); }
/// <summary> /// Meke job here and handle next. /// </summary> /// <param name="commandRequest">Command request.</param> public abstract void Handle(AppCommandRequest commandRequest);
/// <summary> /// Handles command line request. /// </summary> /// <param name="commandRequest">Command line request.</param> public override void Handle(AppCommandRequest commandRequest) { base.Handle(commandRequest); }
/// <summary> /// Handles the specified command request. /// </summary> /// <param name="commandRequest">The command request.</param> /// <exception cref="ArgumentNullException">Throws when commandRequest is null.</exception> public override void Handle(AppCommandRequest commandRequest) { if (commandRequest is null) { throw new ArgumentNullException(nameof(commandRequest)); } if (commandRequest.Command.ToUpperInvariant() != "EXPORT") { this.NextHandler.Handle(commandRequest); return; } var param = commandRequest.Parameters.Split(' '); if (param.Length != 2) { Console.WriteLine("Invalid number of parameters"); return; } if (string.IsNullOrWhiteSpace(param[0]) || string.IsNullOrWhiteSpace(param[1])) { Console.WriteLine("Invalid parameters"); return; } FileStream fileStream; try { string result; fileStream = new FileStream(param[1], FileMode.Open); do { Console.Write("File is exist - rewrite {0}? [Y/n]", param[1]); result = Console.ReadLine(); if (result.ToUpperInvariant() == "Y") { fileStream.SetLength(0); break; } if (result.ToUpperInvariant() == "N") { fileStream.Close(); return; } }while (true); } catch (FileNotFoundException) { fileStream = new FileStream(param[1], FileMode.Create); } catch (DirectoryNotFoundException) { Console.WriteLine("Export failed: can't open file {0}", param[1]); return; } var snapshot = this.Service.MakeSnapshot(); if (param[0].ToUpperInvariant() == "CSV") { snapshot.SaveToCsw(new StreamWriter(fileStream)); } if (param[0].ToUpperInvariant() == "XML") { snapshot.SaveToXml(new StreamWriter(fileStream)); } Console.WriteLine("All records are exported to file {0}", param[1]); fileStream.Close(); }