Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DrawInfoCI"/> class
        /// </summary>
        /// <param name="dto">A <see cref="DrawResultDTO"/> instance containing information about the draw result</param>
        /// <param name="culture">The culture of the <see cref="DrawResultDTO"/> used to create new instance</param>
        public DrawResultCI(DrawResultDTO dto, CultureInfo culture)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();

            Names = new Dictionary <CultureInfo, string>();
            Merge(dto, culture);
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DrawInfoCI"/> class
        /// </summary>
        /// <param name="dto">A <see cref="DrawResultDTO"/> instance containing information about the draw result</param>
        /// <param name="culture">The culture of the <see cref="DrawResultDTO"/> used to create new instance</param>
        public DrawResultCI(DrawResultDTO dto, CultureInfo culture)
        {
            Contract.Requires(dto != null);

            Names = new Dictionary <CultureInfo, string>();
            Merge(dto, culture);
        }
Beispiel #3
0
        /// <summary>
        /// Merges the specified <see cref="DrawResultDTO"/> into instance
        /// </summary>
        /// <param name="dto">The <see cref="DrawResultDTO"/> used to merge into instance</param>
        /// <param name="culture">The culture of the <see cref="DrawResultDTO"/> used to merge</param>
        internal void Merge(DrawResultDTO dto, CultureInfo culture)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();
            Guard.Argument(culture, nameof(culture)).NotNull();

            if (dto.Value.HasValue)
            {
                Value = dto.Value;
            }
            Names[culture] = dto.Name;
        }
Beispiel #4
0
        /// <summary>
        /// Merges the specified <see cref="DrawResultDTO"/> into instance
        /// </summary>
        /// <param name="dto">The <see cref="DrawResultDTO"/> used to merge into instance</param>
        /// <param name="culture">The culture of the <see cref="DrawResultDTO"/> used to merge</param>
        internal void Merge(DrawResultDTO dto, CultureInfo culture)
        {
            Contract.Requires(dto != null);
            Contract.Requires(culture != null);

            if (dto.Value.HasValue)
            {
                Value = dto.Value;
            }
            Names[culture] = dto.Name;
        }
        private DrawResultDTO ExecuteCommands(IEnumerable <DrawCommand> commandsToExecute, IEnumerable <string> previousErrors)
        {
            var           result = new DrawResultDTO();
            List <string> lines  = new List <string>();
            List <string> errors = new List <string>();

            if (previousErrors != null && previousErrors.Any())
            {
                errors.AddRange(previousErrors);
            }

            foreach (var command in commandsToExecute)
            {
                try
                {
                    if (this.MainCanvas == null && command.Type.Equals(DrawCommandType.C))
                    {
                        this.MainCanvas = this.generateCanvasCommand.Execute(command.Source);
                    }
                    else if (this.MainCanvas != null)
                    {
                        switch (command.Type)
                        {
                        case DrawCommandType.C:
                            this.MainCanvas = this.generateCanvasCommand.Execute(command.Source);
                            break;

                        case DrawCommandType.L:
                            this.writeCanvasLineCommand.Execute(this.MainCanvas, command.Source, command.Destination);
                            break;

                        case DrawCommandType.R:
                            this.writeRectangleCommand.Execute(this.MainCanvas, command.Source, command.Destination);
                            break;

                        case DrawCommandType.B:
                            this.fillCanvasCommand.MainCanvas = this.MainCanvas;
                            this.fillCanvasCommand.Execute(command.Source, command.Character);
                            break;
                        }
                    }
                    else
                    {
                        var error = $"fail while executing the following command: {command.SourceCommandLine} because doesn't exist a previous canvas";
                        lines.Add(error);
                        errors.Add(error);
                    }
                }
                catch (Exception ex)
                {
                    var error = $"fail while executing the following command: {command.SourceCommandLine}, error: {ex.Message}";
                    lines.Add(error);
                    errors.Add(error);
                }

                var linesToAdd = this.getStringToWriteFromCanvasCommand.Execute(this.MainCanvas);
                if (linesToAdd != null)
                {
                    lines.AddRange(linesToAdd);
                }
                #if DEBUG
                lines.ForEach(x => Debug.WriteLine(x));
                #endif
            }

            result.FileContent = this.writeFileToResponseCommand.Execute(lines.ToList());
            result.Errors      = errors;
            return(result);
        }