/// <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();
        }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #4
0
        /// <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();
        }
Beispiel #7
0
        /// <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));
            }
        }
Beispiel #12
0
        /// <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);
            }
        }
Beispiel #13
0
        /// <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));
            }
        }
Beispiel #16
0
        /// <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();
        }
Beispiel #19
0
        /// <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);
Beispiel #21
0
 /// <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();
        }