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="_theme">тема</param>
        private void CopyThemeFiles(ItemThemeForXSLT _theme)
        {
            if (_theme == null)
            {
                throw new ArgumentNullException("CopyThemeFiles(ItemThemeForXSLT _theme)");
            }

            SendMessage("Копирование файлов");

            string outMediaDirectory = Path.Combine(convParams.OutMediaFiles.AsPath(), _theme.FileName);

            _theme.CopyFiles(outMediaDirectory);
            _theme.CopyToolsFiles(Path.Combine(convParams.OutMediaFiles.AsPath(), convParams.ToolsDataFolderName.AsPath()), convParams.ToolImg);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// получить тему по идентификатору
        /// </summary>
        /// <param name="idTheme">идентификатор темы
        private ItemThemeForXSLT GetTheme(Guid _id)
        {
            if (_id == null)
            {
                throw new ArgumentNullException();
            }

            ItemThemeForXSLT theme = (ItemThemeForXSLT)itemsAdapter.GetCourseItem(_id);

            if (theme == null)
            {
                throw new Exception("Не найдена тема с идентификатором: " + _id);
            }

            return(theme);
        }
Ejemplo n.º 4
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.º 5
0
        /// <summary>
        /// функция создана для классов-наследников
        /// (в частности для возможности конвертации
        /// видео файлов темы в другие форматы)
        /// </summary>
        /// <remarks>создание данной функции - не самый 
        /// лучший способ, обеспечения гибкости кода, но решающий
        /// поставленную в настоящий момент задачу и
        /// подпбные задачи в обозримом будущем</remarks>
        protected override void DoOtherOperation(ItemThemeForXSLT _theme)
        {
            if (_theme == null)
                    throw new ArgumentNullException("CopyThemeFiles(ItemThemeForXSLT _theme)");
            try
            {

                string mediaDirectory = Path.Combine(convParams.OutMediaFiles.AsPath(), _theme.FileName).AsPath();
                currTempDir = System.IO.Path.Combine(mediaDirectory, "temp");

                ConvertSWF(mediaDirectory);
            }
            catch(Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                DirectoryHelper.DeleteDirectory(currTempDir);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// функция создана для классов-наследников
        /// (в частности для возможности конвертации
        /// видео файлов темы в другие форматы)
        /// </summary>
        /// <remarks>создание данной функции - не самый
        /// лучший способ, обеспечения гибкости кода, но решающий
        /// поставленную в настоящий момент задачу и
        /// подпбные задачи в обозримом будущем</remarks>
        protected override void DoOtherOperation(ItemThemeForXSLT _theme)
        {
            if (_theme == null)
            {
                throw new ArgumentNullException("CopyThemeFiles(ItemThemeForXSLT _theme)");
            }
            try
            {
                string mediaDirectory = Path.Combine(convParams.OutMediaFiles.AsPath(), _theme.FileName).AsPath();
                currTempDir = System.IO.Path.Combine(mediaDirectory, "temp");

                ConvertSWF(mediaDirectory);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                DirectoryHelper.DeleteDirectory(currTempDir);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// копирование файлов темы
        /// </summary>
        /// <param name="_theme">тема</param>
        private void CopyThemeFiles(ItemThemeForXSLT _theme)
        {
            if (_theme == null)
                throw new ArgumentNullException("CopyThemeFiles(ItemThemeForXSLT _theme)");

            SendMessage("Копирование файлов");

               string outMediaDirectory = Path.Combine(convParams.OutMediaFiles.AsPath(), _theme.FileName);
            _theme.CopyFiles(outMediaDirectory);
            _theme.CopyToolsFiles(Path.Combine(convParams.OutMediaFiles.AsPath(), convParams.ToolsDataFolderName.AsPath()), convParams.ToolImg);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// функция создана для классов-наследников
 /// (в частности для возможности конвертации
 /// видео файлов темы в другие форматы)
 /// </summary>
 /// <remarks>создание данной функции - не самый 
 /// лучший способ, обеспечения гибкости кода, но решающий
 /// поставленную в настоящий момент задачу и
 /// подпбные задачи в обозримом будущем</remarks>
 protected virtual void DoOtherOperation(ItemThemeForXSLT _theme)
 {
 }
Ejemplo n.º 9
0
        /// <summary>
        /// выполнить конвертацию тем
        /// </summary>
        public void Do()
        {
            try
            {
                if (themes == null || themes.Count <XElement>() < 1)
                {
                    return;
                }


                //XslCompiledTransform xslt = new XslCompiledTransform();
                //xslt.Load(convParams.ThemeShemePath);

                foreach (XElement th in themes)
                {
                    SendMessage("- Конвертация темы " + th.Element(NodeNames.TITLE).Value);

                    XDocument doc = new XDocument(th);
                    string    fn  = th.Element(NodeNames.ITEM_FILE_ID).Value;
                    string    themeFilesNewPath = Path.Combine(convParams.OutMediaFiles.AsPath(), fn).AsPath();
                    string    outFile           = Path.Combine(convParams.OutItemsPath, fn + ".html");
                    ///SAXON
                    Processor proc  = new Processor();
                    XdmNode   input = proc.NewDocumentBuilder().Build(doc.Root.CreateReader());

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

                    transformer.SetParameter(new QName("", "", "mediaPath"), new XdmAtomicValue(convParams.CourseDataFolderName));
                    transformer.SetParameter(new QName("", "", "picFolder"), new XdmAtomicValue(th.Element(NodeNames.ITEM_FILE_ID).Value));
                    transformer.SetParameter(new QName("", "", "toolFolder"), new XdmAtomicValue(convParams.ToolsDataFolderName));

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

                    serializer.SetOutputFile(outFile);

                    transformer.Run(serializer);

                    //doc.Document.Declaration = new XDeclaration("1.0", "utf-8", "true");
                    //XPathNavigator nv = doc.CreateNavigator();

                    //XsltArgumentList xslArg = new XsltArgumentList();

                    //xslArg.AddParam("mediaPath", "", convParams.CourseDataFolderName);
                    //xslArg.AddParam("picFolder", "", th.Element(NodeNames.ITEM_FILE_ID).Value);
                    //xslArg.AddParam("toolFolder", "", convParams.ToolsDataFolderName);

                    //string outFile = Path.Combine(convParams.OutItemsPath, th.Element(NodeNames.ITEM_FILE_ID).Value + ".html");
                    //using (FileStream fs = new FileStream(outFile, FileMode.Create))
                    //{
                    //    xslt.Transform(nv, xslArg, fs);
                    //}

                    Guid             idTheme = Guid.Parse(th.Element(NodeNames.IDENTIFER).Value);
                    ItemThemeForXSLT theme   = GetTheme(idTheme);
                    CopyThemeFiles(theme);
                    DoOtherOperation(theme);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Исключение при конвертации темы курса: " + ex.Message);
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// функция создана для классов-наследников
 /// (в частности для возможности конвертации
 /// видео файлов темы в другие форматы)
 /// </summary>
 /// <remarks>создание данной функции - не самый
 /// лучший способ, обеспечения гибкости кода, но решающий
 /// поставленную в настоящий момент задачу и
 /// подпбные задачи в обозримом будущем</remarks>
 protected virtual void DoOtherOperation(ItemThemeForXSLT _theme)
 {
 }