/// <summary>
        /// инициализирует дочерние элементы
        /// </summary>
        /// <param name="_item">корневой элемент</param>
        /// <param name="_factory">фабрика элементов курса</param>
        /// <exception cref="ArgumentNullException">Нулевой дочерний элемент</exception>
        /// <exception cref="AppException">Не удалось идентифицировать дочерний элемент</exception>
        void InitChild(LearningSection _item, XSLTItemsFactory _factory)
        {
            IItemModelForXSLT ch = null;
            bool validCreating   = false;

            foreach (AbstractLearningItem li in _item.childs)
            {
                try
                {
                    ch = _factory.Create(li, out validCreating);
                    if (!validCreating)
                    {
                        throw new Exception(item.identifier + ": неопределенный тип элемента курса: " + item.GetType());
                    }

                    if (ch != null)
                    {
                        Items.Add(ch);
                    }
                }
                catch (ArgumentNullException)
                {
                    throw new Exception("Один из дочерних элементов нулевой: " + _item.identifier);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
Example #2
0
        /// <summary>
        /// загрузка единиц курса
        /// </summary>
        /// <exception cref="AppException">
        /// Возникает в случае ошибки загрузки единиц курса
        /// (возможно ранее не был указан путь)</exception>
        void LoadCourseItems()
        {
            try
            {
                IItemModel im = null;
                items = new ObservableCollection <IItemModel>();
                bool validCreating = false;

                foreach (AbstractLearningItem item in Course)
                {
                    if ((item.isReferenced) && (!item.isLoaded))
                    {
                        item.LoadFromPath(CourseLoadType.Full);
                    }
                }
                foreach (AbstractLearningItem item in Course.childs)
                {
                    im = itemsFactory.Create(item, out validCreating);

                    if (!validCreating)
                    {
                        throw new Exception(item.identifier + ": неопределенный тип элемента курса: " + item.GetType());
                    }
                    if (im != null)
                    {
                        items.Add(im);
                    }
                }

                isItemsLoad = true;
            }
            catch (Exception ex)
            {
                throw new Exception("Ошибка загрузки единиц курса." + "/n" + ex.Message);
            }
        }
        /// <summary>
        /// инициализирует дочерние элементы
        /// </summary>
        /// <param name="_item">корневой элемент</param>
        /// <param name="_factory">фабрика элементов курса</param>
        /// <exception cref="ArgumentNullException">Нулевой дочерний элемент</exception>
        /// <exception cref="AppException">Не удалось идентифицировать дочерний элемент</exception>
        void InitChild(LearningSection _item, XSLTItemsFactory _factory)
        {
            IItemModelForXSLT ch = null;
            bool validCreating = false;

            foreach (AbstractLearningItem li in _item.childs)
            {
                try
                {
                    ch = _factory.Create(li, out validCreating);
                    if (!validCreating)
                        throw new Exception(item.identifier + ": неопределенный тип элемента курса: " + item.GetType());

                    if (ch != null)
                        Items.Add(ch);

                }
                catch (ArgumentNullException)
                {
                    throw new Exception("Один из дочерних элементов нулевой: " + _item.identifier);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }

            }
        }