Ejemplo n.º 1
0
        /// <summary>
        /// получить объект элемента курса
        /// IItemModelForXSLT
        /// </summary>
        /// <param name="_item">объект элемента курса IItemModel</param>
        /// <param name="_isValid">выходная переменная для подтверждения корректности опреации
        /// создания элемента</param>
        /// <returns>объект элемента курса IItemModelForXSLT
        /// null - объект не идентифицирован</returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <remarks>выходная переменная внесена для предотвращения исключений
        /// с возвратом нулевого элемента заведомо учтенных данных (входной, выходной тесты)</remarks>
        public IItemModelForXSLT Create(AbstractLearningItem _item,out bool _isValid)
        {
            if (_item == null)
                throw new ArgumentNullException();

            IItemModelForXSLT im = null;
            _isValid = false;

            ItemType iType = _item.GetItemType();

            switch (iType)
            {
                case ItemType.Section:
                    im = new ItemSectionForXSLT((LearningSection)_item,this);
                    break;
                case ItemType.Theme:
                    im = new ItemThemeForXSLT((LearningItem)_item, tlFactory);
                    break;
                case ItemType.Test:
                    im = new ItemTestForXSLT((ContentLib.Core.Content.Testing.Test)_item);
                    break;
                case ItemType.InTest:
                case ItemType.OutTest:
                    _isValid = true;
                    break;

            }

            if (im != null)
                _isValid = true;

            return im;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// копирование файлов теста
        /// </summary>
        /// <param name="_test">тест</param>
        /// <param name="_toPath">конечная директория</param>
        private void CopyTestFiles(ItemTestForXSLT _test, string _toPath)
        {
            if (_test == null || string.IsNullOrEmpty(_toPath))
            {
                throw new ArgumentNullException();
            }

            _test.CopyFiles(_toPath);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// получить объект элемента курса
        /// IItemModelForXSLT
        /// </summary>
        /// <param name="_item">объект элемента курса IItemModel</param>
        /// <param name="_isValid">выходная переменная для подтверждения корректности опреации
        /// создания элемента</param>
        /// <returns>объект элемента курса IItemModelForXSLT
        /// null - объект не идентифицирован</returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <remarks>выходная переменная внесена для предотвращения исключений
        /// с возвратом нулевого элемента заведомо учтенных данных (входной, выходной тесты)</remarks>
        public IItemModelForXSLT Create(AbstractLearningItem _item, out bool _isValid)
        {
            if (_item == null)
            {
                throw new ArgumentNullException();
            }

            IItemModelForXSLT im = null;

            _isValid = false;

            ItemType iType = _item.GetItemType();



            switch (iType)
            {
            case ItemType.Section:
                im = new ItemSectionForXSLT((LearningSection)_item, this);
                break;

            case ItemType.Theme:
                im = new ItemThemeForXSLT((LearningItem)_item, tlFactory);
                break;

            case ItemType.Test:
                im = new ItemTestForXSLT((ContentLib.Core.Content.Testing.Test)_item);
                break;

            case ItemType.InTest:
            case ItemType.OutTest:
                _isValid = true;
                break;
            }

            if (im != null)
            {
                _isValid = true;
            }

            return(im);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// выполнить конвертацию тем
        /// </summary>
        public void Do()
        {
            try
            {
                SendMessage("\n- Конвертация тестов");

                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load(convParams.TestShemePath);

                foreach (XElement tt in tests)
                {
                    usedIdentifers = new List <string>();

                    Guid idTest = Guid.Parse(tt.Element(NodeNames.IDENTIFER).Value);

                    ItemTestForXSLT test = (ItemTestForXSLT)itemsAdapter.GetCourseItem(idTest);
                    if (test == null)
                    {
                        throw new Exception("Не найден тест с идентификатором: " + idTest);
                    }

                    XDocument testDoc = XDocument.Load(test.XMLFilePath);
                    if (testDoc == null)
                    {
                        throw new Exception("Не удается загрузить тест " + idTest + ": " + test.XMLFilePath);
                    }

                    CorrectTest(testDoc);



                    string outFile = Path.Combine(convParams.OutItemsPath, test.FileName + ".html");

                    string testFilesNewPath = Path.Combine(convParams.OutMediaFiles.AsPath(), test.FileName).AsPath();

                    DirectoryHelper.CreateDirectory(testFilesNewPath, false);


                    ///SAXON
                    Processor proc  = new Processor();
                    XdmNode   input = proc.NewDocumentBuilder().Build(testDoc.Root.CreateReader());

                    XsltTransformer transformer = proc.NewXsltCompiler().Compile(new Uri(convParams.TestShemePath)).Load();
                    transformer.InitialContextNode = input;

                    transformer.SetParameter(new QName("", "", "mediaFolderName"), new XdmAtomicValue(convParams.CourseDataFolderName));
                    transformer.SetParameter(new QName("", "", "currentFolderName"), new XdmAtomicValue(test.FileName));

                    ///задать адрес директории для xsl:result-document
                    transformer.BaseOutputUri = new Uri(testFilesNewPath);
                    Serializer serializer = new Serializer();

                    serializer.SetOutputFile(outFile);

                    transformer.Run(serializer);


                    CopyTestFiles(test, testFilesNewPath);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Исключение при конвертации теста курса: " + ex.Message);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// копирование файлов теста
        /// </summary>
        /// <param name="_test">тест</param>
        /// <param name="_toPath">конечная директория</param>
        private void CopyTestFiles(ItemTestForXSLT _test, string _toPath)
        {
            if (_test == null || string.IsNullOrEmpty(_toPath))
                throw new ArgumentNullException();

            _test.CopyFiles(_toPath);
        }