Ejemplo n.º 1
0
 public Import(Creator phrasesCreator, xlsSheetType xlsSheetType)
 {
     _phrasesCreator        = phrasesCreator;
     _preImportChecksResult = preImportChecks((int)xlsSheetType);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Формирует модель данных
        /// </summary>
        /// <param name="screenModel">Модель данных</param>
        /// <param name="message">Сообщение о статусе операции</param>
        /// <returns>Статус операции</returns>
        public virtual bool Do(ref ScreenModel screenModel, out string message)
        {
            if (_preImportChecksResult == false)
            {
                message = "Не пройдена проверка файла signals";
                return(false);
            }

            try
            {
                message = string.Empty;

                int rowIndex = 0;
                int screenItemOrdenNumber = 0; // изменяется на 1 при каждой новой фразе (в соответсвие фразе приводится screenItem)

                //читать книгу, пока есть что читать
                while (_sh.GetRow(rowIndex) != null)
                {
                    //считать строку
                    var row = _sh.GetRow(rowIndex);

                    //считывает каждую из 4 ячеек (колонка в строке)
                    var cell_1 = row.GetCell(0);    var screenItem_cell_1 = new ScreenItem();
                    var cell_2 = row.GetCell(1);    var screenItem_cell_2 = new ScreenItem();
                    var cell_3 = row.GetCell(2);    var screenItem_cell_3 = new ScreenItem();
                    var cell_4 = row.GetCell(3);

                    //дополнительная проверка на пустую строку для выхода из цикла
                    if ((cell_1 == null || string.IsNullOrWhiteSpace(cell_1.StringCellValue)) && (cell_2 == null || string.IsNullOrWhiteSpace(cell_2.StringCellValue)) &&
                        (cell_3 == null || string.IsNullOrWhiteSpace(cell_3.StringCellValue)) && (cell_4 == null || string.IsNullOrWhiteSpace(cell_4.StringCellValue)))
                    {
                        break;
                    }

                    //проверка на заполненность первой ячейки
                    if (rowIndex == 0)
                    {
                        if (cell_1 == null)
                        {
                            message = "Некорректно заполнена таблица с данными.";
                            return(false);
                        }
                    }

                    rowIndex++;

                    #region Проверка 1 ячейки
                    if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue))
                    {
                        //считываем фразу из 1 колонки

                        IncrementOrderNumberFor(screenItem: ref screenItem_cell_1, currentOrderNumber: ref screenItemOrdenNumber);

                        var phrase = new Phrase()
                        {
                            Value = cell_1.StringCellValue
                        };
                        bool isText_RU = Creator.Check_isText_RU(phrase.Value);
                        _phrasesCreator.CreateKey(ref phrase, isText_RU);

                        screenItem_cell_1.Phrase = phrase;
                    }
                    else
                    {
                        screenItem_cell_1 = null;
                    }
                    #endregion

                    #region Проверка 2 ячейки
                    if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue))
                    {
                        //считываем фразу из 2 колонки

                        IncrementOrderNumberFor(screenItem: ref screenItem_cell_2, currentOrderNumber: ref screenItemOrdenNumber);

                        var phrase = new Phrase()
                        {
                            Value = cell_2.StringCellValue
                        };

                        bool isText_RU = Creator.Check_isText_RU(phrase.Value);
                        _phrasesCreator.CreateKey(ref phrase, isText_RU);

                        screenItem_cell_2.Phrase = phrase;

                        if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue))
                        {
                            screenItem_cell_1.CompositionType = CompositionType.TableHeader;
                        }
                    }
                    else
                    {
                        screenItem_cell_2 = null;

                        if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue))
                        {
                            screenItem_cell_1.CompositionType         = CompositionType.ElementOfOTHERTable;
                            screenItem_cell_1.Specific_InOut_Notation = cell_4.StringCellValue;
                        }
                        //получилось, что ячейка соответствует "current for proportional solenoid valve1" из Примера данных
                    }
                    #endregion

                    #region Проверка 3 ячейки
                    if (cell_3 != null && !string.IsNullOrWhiteSpace(cell_3.StringCellValue))
                    {
                        //считываем фразу из 3 колонки

                        IncrementOrderNumberFor(screenItem: ref screenItem_cell_3, currentOrderNumber: ref screenItemOrdenNumber);

                        var phrase = new Phrase()
                        {
                            Value = cell_3.StringCellValue
                        };

                        bool isText_RU = Creator.Check_isText_RU(phrase.Value);
                        _phrasesCreator.CreateKey(ref phrase, isText_RU);

                        screenItem_cell_3.CompositionType         = CompositionType.AccordingToOutputValue;
                        screenItem_cell_3.Phrase                  = phrase;
                        screenItem_cell_3.Specific_InOut_Notation = cell_4.StringCellValue;

                        if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue))
                        {
                            screenItem_cell_2.CompositionType = CompositionType.SubTableHeader;
                        }
                    }
                    else
                    {
                        screenItem_cell_3 = null;

                        if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue))
                        {
                            screenItem_cell_2.CompositionType         = CompositionType.AccordingToOutputValue;
                            screenItem_cell_2.Specific_InOut_Notation = cell_4.StringCellValue;
                        }
                    }
                    #endregion

                    if (screenItem_cell_1 != null)
                    {
                        screenModel.ScreenItems.Add(screenItem_cell_1);
                    }
                    if (screenItem_cell_2 != null)
                    {
                        screenModel.ScreenItems.Add(screenItem_cell_2);
                    }
                    if (screenItem_cell_3 != null)
                    {
                        screenModel.ScreenItems.Add(screenItem_cell_3);
                    }
                }
                screenModel.ScreenItems.RemoveAll(x => string.IsNullOrWhiteSpace(x.Phrase.Value));
                return(true);
            }
            catch (Exception ex)
            {
                message = string.Concat("Exception: ", ex.ToString());
                return(false);
            }
        }
Ejemplo n.º 3
0
 public Import(string pathToExl, Creator phrasesCreator, xlsSheetType xlsSheetType)
 {
     _path                  = pathToExl;
     _phrasesCreator        = phrasesCreator;
     _preImportChecksResult = preImportChecks((int)xlsSheetType);
 }