コード例 #1
0
ファイル: SpravaPrepisu.cs プロジェクト: daliboris/ITJakub
        private static MemoryStream PorovnatPrepisy2HTML(IPrepis prpLevy, IPrepis prpPravy)
        {
            XmlDocument xdPrepisy = new XmlDocument();
            XmlDocument xdp       = Prepis2Xml(prpPravy);
            XmlNode     xnd       = xdPrepisy.CreateElement("Prepisy");

            xnd.AppendChild(xdPrepisy.ImportNode(xdp.DocumentElement, true));
            xdp = Prepis2Xml(prpLevy);
            xnd.AppendChild(xdPrepisy.ImportNode(xdp.DocumentElement, true));
            xdPrepisy.AppendChild(xnd);

            XslCompiledTransform xctXslt  = new XslCompiledTransform();
            Assembly             assembly = Assembly.GetExecutingAssembly();
            FileInfo             fi       = new FileInfo(assembly.Location);

            xctXslt.Load(fi.DirectoryName + "\\Xslt\\PrepisySrovnani.xsl");
            MemoryStream msmXmlWriter = new MemoryStream();
            XmlWriter    xmwWriter    = XmlWriter.Create(msmXmlWriter);

            xctXslt.Transform(xdPrepisy.CreateNavigator(), xmwWriter);

            return(msmXmlWriter);

            /*
             * byte[] byteArray = new byte[msmXmlWriter.Length];
             * byteArray = msmXmlWriter.ToArray();
             * String s = System.Text.Encoding.UTF8.GetString(byteArray);
             * msmXmlWriter.Close();
             * return s;
             */
        }
コード例 #2
0
        public override string UpravPoSpojeni(IPrepis prepis, IEnumerable <ITransformacniKrok> kroky)
        {
            string sVstup  = DejNazevPredchozihoVystupu(prepis);
            string sVystup = UpravVstupniSoubor(prepis, kroky, sVstup);

            return(sVystup);
        }
コード例 #3
0
        /// <summary>
        /// Upraví tělo dokumentu (&gt;body&lt;), které obsahuje hlavní text.
        /// </summary>
        /// <param name="prepis">Objekt s přepisem, jehož tělo se má upravovat.</param>
        /// <param name="kroky">Trnasformační kroky, které se mají na tělo aplikovat.</param>
        /// <returns>Vrací celou cestu k souboru s tělem.</returns>
        /// <remarks>Pokud vrátí null, znamená to, že úvod nic neobsahuje.</remarks>
        public override string UpravTelo(IPrepis prepis, IEnumerable <ITransformacniKrok> kroky)
        {
            string sVstup  = Path.Combine(Nastaveni.VstupniSlozka, prepis.Soubor.NazevBezPripony + ".xml");
            string sVystup = UpravVstupniSoubor(prepis, kroky, sVstup);

            return(UpravBiblickaMista(prepis, sVystup));
        }
コード例 #4
0
ファイル: ModulMluvnic.cs プロジェクト: daliboris/ITJakub
        private void ExportujImpl(IPrepis prepis, IList <string> xmlOutputFiles, IReadOnlyDictionary <ResourceType, string[]> uploadedFiles)
        {
            var xsltSteps = GetTransformationList("grammar-step");

            var fileNameFithoutExtension = prepis.Soubor.NazevBezPripony;
            var fullFileName             = fileNameFithoutExtension + ".xml";

            var inputFilePath = Path.Combine(Nastaveni.VstupniSlozka, fullFileName);

            var faksimile = uploadedFiles[ResourceType.UnknownXmlFile].First(xmlFile =>
            {
                var xmlFileInfo = new FileInfo(xmlFile);

                return(xmlFileInfo.Name.Substring(0, xmlFileInfo.Name.Length - xmlFileInfo.Extension.Length) == fileNameFithoutExtension);
            });

            var stepFiles = new string[xsltSteps.Count + 4]; //UpravPerexSouboru, ZkontrolujCislaPagin, OdlisitStejnePojmenovanaPaginy, UpravOdkazyNaPaginy

            for (var i = 0; i < stepFiles.Length; i++)
            {
                stepFiles[i] = GetTempFile(Nastaveni.DocasnaSlozka, fileNameFithoutExtension, i);
            }

            var parameters = new NameValueCollection {
                { "guid", prepis.GUID }, { "faksimile", faksimile }
            };

            ApplyTransformations(inputFilePath, stepFiles[0], xsltSteps.Dequeue(), Nastaveni.DocasnaSlozka, parameters);

            ApplyTransformations(stepFiles[0], stepFiles[1], xsltSteps.Dequeue(), Nastaveni.DocasnaSlozka, parameters);

            ApplyTransformations(stepFiles[1], stepFiles[2], xsltSteps.Dequeue(), Nastaveni.DocasnaSlozka);

            UpravPerexSouboru(new FileInfo(stepFiles[2]), stepFiles[3]);

            ZkontrolujCislaPagin(new FileInfo(stepFiles[3]), stepFiles[4]);
            OdlisitStejnePojmenovanaPaginy(new FileInfo(stepFiles[4]), stepFiles[5]);
            UpravOdkazyNaPaginy(new FileInfo(stepFiles[5]), stepFiles[6]);

            AppendWatermarks(new FileInfo(stepFiles[6]), uploadedFiles[ResourceType.Image]);

            var outputXml = Path.Combine(Nastaveni.VystupniSlozka, fullFileName);

            File.Copy(stepFiles[6], outputXml);

            /*
             * IList<IXsltTransformer> body = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "body", Nastaveni.SlozkaXslt);
             * string konecnyVystup = null;
             *
             * const string csPriponaXml = ".xml";
             *
             * DateTime casExportu = Nastaveni.CasExportu == DateTime.MinValue ? DateTime.Now : Nastaveni.CasExportu;
             * string souborBezPripony = prepis.Soubor.NazevBezPripony;
             *
             * konecnyVystup = Path.Combine(Nastaveni.VystupniSlozka, prepis.Soubor.NazevBezPripony + csPriponaXml);
             *
             * string headerFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "header"));
             * NameValueCollection parameters = new NameValueCollection();
             * ApplyTransformations(Nastaveni.SouborMetadat, headerFile, body, Nastaveni.DocasnaSlozka, parameters);*/
        }
コード例 #5
0
        private static IExportNastaveni GetExportSettings(string documentType,
                                                          DocxToTeiConverterSettings settings,
                                                          string xsltTransformationsDirectoryPath,
                                                          string xsltTemplatesDirectoryPath,
                                                          AdresarovaStruktura ads,
                                                          IPrepis prepis)
        {
            string           xsltTransformationFilePath = Path.Combine(xsltTransformationsDirectoryPath, documentType + XmlExtension);
            IExportNastaveni exportSettings             = null;

            switch (documentType)
            {
            case "Edition":
            case "ProfessionalLiterature":
                exportSettings = GetEdicniModulNastaveni(settings, xsltTransformationFilePath, xsltTemplatesDirectoryPath, ads, prepis);
                break;

            case "Dictionary":
                exportSettings = GetDictionarySettings(settings, xsltTransformationFilePath, xsltTemplatesDirectoryPath, ads, prepis);
                break;

            case "Grammar":
                exportSettings = GetGrammarSettings(settings, xsltTransformationFilePath, xsltTemplatesDirectoryPath, ads, prepis);
                break;
            }
            return(exportSettings);
        }
コード例 #6
0
        /// <summary>
        /// Zkombinuje jednotlivé části textu.
        /// </summary>
        /// <param name="prepis">Objekt s přepisem, pro nějž se budou kombinovat jednotlivé části.</param>
        /// <param name="strHlavicka">Soubor s textem hlavičky (&lt;teiHeader&gt;)</param><param name="strUvod">Soubor s textem úvodu (&lt;front&gt;)</param><param name="strTelo">Soubor s hlavním textem (&lt;body&gt;)</param><param name="strZaver">Soubor s textem na závěr (&lt;back&gt;)</param><param name="kroky">Trnasformační kroky, které se mají na slučované části aplikovat.</param>
        /// <returns>
        /// &gt;Pokud vrátí null, znamená to, že zkombinovaný soubor nebyl vytvořen.
        /// </returns>
        public override string ZkombinujCastiTextu(IPrepis prepis, string strHlavicka, string strUvod, string strTelo, string strZaver, IEnumerable <ITransformacniKrok> kroky)
        {
            string sVstup  = DejNazevPredchozihoVystupu(prepis);
            string sVystup = UpravVstupniSoubor(prepis, kroky, sVstup);

            return(sVystup);
        }
コード例 #7
0
 public override void Uprav(IPrepis prepis)
 {
     /*
      * string strHlavicka = UpravHlavicku(prepis, null);
      * string strUvod = UpravUvod(prepis, null);
      * string strTelo = UpravTelo(prepis, null);
      * string strZaver = UpravZaver(prepis, null);
      */
 }
コード例 #8
0
        private string UpravVstupniSoubor(IPrepis prepis, IEnumerable <ITransformacniKrok> kroky, string sVstup)
        {
            string sVystup = DejNazevVystupu(prepis);

            foreach (ITransformacniKrok krok in kroky)
            {
                Dictionary <string, string> gdcParametry = VyplnitParametry(krok.Parametry, prepis);
                //Console.WriteLine("{0} => {1}, {2}", sVstup, sVystup, krok.Sablona);
                krok.Transformuj(sVstup, sVystup, gdcParametry);
                mglsVystupy.Add(sVystup);
                sVstup  = sVystup;
                sVystup = Path.Combine(mstrDocasnaSlozka, String.Format(cstrNazevVystupuFormat, prepis.Soubor.NazevBezPripony, PocetKroku));
            }
            return(mglsVystupy[PocetKroku - 1]);
        }
コード例 #9
0
        public override string ProvedUpravy(IPrepis prepis, string strVstup, IEnumerable <UpravaSouboruXml> upravy)
        {
            string strVystup = null;
            string sVstup    = strVstup;

            foreach (UpravaSouboruXml upravaSouboruXml in upravy)
            {
                strVystup = DejNazevVystupu(prepis);
                _logger.Debug("Metoda={0};Vstup={1};Vystup={2}", upravaSouboruXml.Method.Name, sVstup, strVystup);
                //Console.WriteLine("{0} => {1}, {2}", sVstup, strVystup, upravaSouboruXml.Method.Name);
                upravaSouboruXml(sVstup, strVystup);
                mglsVystupy.Add(strVystup);
                sVstup = strVystup;
            }

            return(strVystup);
        }
コード例 #10
0
        /// <summary>
        /// Upraví zpracování biblických míst: u biblických textů vytvoří oddíly pro knihy, kapitoly a verše,
        /// u nebiblických textů vytvoří odkazy na biblický text
        /// </summary>
        /// <param name="prepis">Informace o přepisu, kterého se úprava týká</param>
        /// <param name="strVstup">Celá cesta vstupního souboru</param>
        /// <returns>Vrací celou cestu k výstupnímu souboru</returns>
        public string UpravBiblickaMista(IPrepis prepis, string strVstup)
        {
            string strVystup = DejNazevVystupu(prepis);

            if (prepis.LiterarniZanr == "biblický text")
            {
                RozdelitBibliNaKnihyAKapitoly(strVstup, strVystup);
                mglsVystupy.Add(strVystup);
                string sVstup = strVystup;
                strVystup = DejNazevVystupu(prepis);
                RozdelitBibliNaVerse(sVstup, strVystup);
            }
            else
            {
                OdkazyNaBiblickyText(strVstup, strVystup);
            }
            return(strVystup);
        }
コード例 #11
0
        private static IExportNastaveni GetGrammarSettings(DocxToTeiConverterSettings settings,
                                                           string xsltTransformationFilePath,
                                                           string xsltTemplatesPath,
                                                           AdresarovaStruktura ads, IPrepis prepis)
        {
            IExportNastaveni nastaveni = new MluvniceModulNastaveni();

            nastaveni.SouborTransformaci   = xsltTransformationFilePath;
            nastaveni.SlozkaXslt           = xsltTemplatesPath;
            nastaveni.VstupniSlozka        = ads.DejSpolecneDocXml;
            nastaveni.VystupniSlozka       = ads.DejVystup;
            nastaveni.DocasnaSlozka        = ads.DejTemp;
            nastaveni.Prepis               = prepis;
            nastaveni.SmazatDocasneSoubory = !settings.Debug;

            nastaveni.SouborMetadat = settings.MetadataFilePath;
            return(nastaveni);
        }
コード例 #12
0
        public override void Uprav(IPrepis prepis)
        {
            string strDocasnaSlozka = Nastaveni.DocasnaSlozka ?? Path.GetTempPath();

            Dictionary <string, XslCompiledTransform> gdxc = NactiTransformacniKroky();

            string sCesta = Path.Combine(Nastaveni.VstupniSlozka, Nastaveni.Prepis.Soubor.Nazev);

            sCesta = sCesta.Replace(".docx", ".xml");
            FileInfo fi = new FileInfo(sCesta);

            if (!fi.Exists)
            {
                throw new FileNotFoundException("Zadaný soubor '" + sCesta + "' neexistuje.");
            }

            List <string> glsVystupy = new List <string>(Nastaveni.TransformacniKroky.Count);
            string        strNazev   = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length);

            int    iKrok    = 0;
            string strVstup = sCesta;

            foreach (TransformacniKrok krok in Nastaveni.TransformacniKroky)
            {
                iKrok++;

                string strVystup = Path.Combine(strDocasnaSlozka, String.Format("{0}_{1:00}.xml", strNazev, iKrok));
                glsVystupy.Add(strVystup);

                if (krok.Parametry != null)
                {
                    //foreach (KeyValuePair<string, string> kvp in krok.Parametry)
                    //{
                    //  switch (kvp.Key)
                    //  {
                    //    case "soubor":

                    //  }
                    //}
                }
                gdxc[krok.Sablona].Transform(strVstup, strVystup);
                strVstup = strVystup;
            }
        }
コード例 #13
0
ファイル: SpravaPrepisu.cs プロジェクト: daliboris/ITJakub
        public static string Prepis2HTML(IPrepis prpPrepis)
        {
            //Prepis2Xml(prpPrepis);
            MemoryStream         msmXml   = null;
            XslCompiledTransform xctXslt  = new XslCompiledTransform();
            Assembly             assembly = Assembly.GetExecutingAssembly();
            //xctXslt.Load(@"V:\Projekty\Daliboris\Texty\Evidence\Xslt\Prepisy2HTML.xsl");
            FileInfo fi = new FileInfo(assembly.Location);

            xctXslt.Load(fi.DirectoryName + "\\Xslt\\Prepisy2HTML.xsl");

            if (prpPrepis.PuvodniPodoba != null)
            {
                msmXml = PorovnatPrepisy2HTML(prpPrepis, prpPrepis.PuvodniPodoba);
            }
            else
            {
                msmXml = new MemoryStream();
                Perzistence.UlozitDoStreamu(msmXml, prpPrepis as Prepis);
                //Prepis.Serialize(msmXml, prpPrepis);
            }

            msmXml.Seek(0, SeekOrigin.Begin);
            XmlReader    xmrReader    = XmlReader.Create(msmXml);
            MemoryStream msmXmlWriter = new MemoryStream();
            XmlWriter    xmwWriter    = XmlWriter.Create(msmXmlWriter);

            xctXslt.Transform(xmrReader, xmwWriter);

            byte[] byteArray = new byte[msmXmlWriter.Length];
            byteArray = msmXmlWriter.ToArray();
            //msmXmlWriter.Seek(0, SeekOrigin.Begin);
            //msmXmlWriter.Read(byteArray, 0, byteArray.Length);

            //System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            String s = System.Text.Encoding.UTF8.GetString(byteArray);

            msmXml.Close();
            msmXmlWriter.Close();
            return(s);
        }
コード例 #14
0
ファイル: SpravaPrepisu.cs プロジェクト: daliboris/ITJakub
        public static XmlDocument Prepis2Xml(IPrepis prp)
        {
            XmlDocument xd = new XmlDocument();

            //Stream msm = new MemoryStream();
            MemoryStream msm = new MemoryStream();

            //Prepis.Serialize(msm, prp, Prepisy.csDefaultNamespace);
            Perzistence.UlozitDoStreamu(msm, prp as Prepis);
            //Prepis.Serialize(msm, prp);
            byte[] byteArr = new byte[msm.Length];
            System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            msm.Seek(0, SeekOrigin.Begin);
            byteArr = msm.ToArray();
            //msm.Write(byteArr, 0, byteArr.Length);
            String s2 = enc.GetString(byteArr);

            //FileStream fl = File.Create(@"V:\Temp\Text_01.xml");
            //fl.Write(byteArr, 0, byteArr.Length);
            //fl.Close();
            xd.LoadXml(s2);
            msm.Close();
            return(xd);
        }
コード例 #15
0
 private void ConvertDocxToXml(IPrepis prepis, string outputDirectory, string docxToXmlFilePath)
 {
     //FileInfo fi = new FileInfo(Path.Combine(outputDirectory, prepis.Soubor.NazevBezPripony + ".xml"));
     ConvertDocxToXml(prepis.Soubor.CelaCesta, docxToXmlFilePath, outputDirectory, prepis.Soubor.NazevBezPripony, DateTime.UtcNow);
 }
コード例 #16
0
 private string GetSimplifiedFilename(IPrepis prepis)
 {
     return(GetSimplifiedFilename(prepis.Soubor.NazevBezPripony, false));
 }
コード例 #17
0
        private void ExportujImpl(IPrepis prepis, IList <string> xmlOutputFiles)
        {
            var fileName = GetSimplifiedFilename(prepis);

            var xsltSteps = GetTransformationList(String.Format("{0}-step", fileName));

            Zaloguj("Převádím soubor {0}", prepis.Soubor.Nazev, false);

            string vystupniSoubor = null;

            var casExportu = Nastaveni.CasExportu == DateTime.MinValue ? DateTime.Now : Nastaveni.CasExportu;

            var souborBezPripony = prepis.Soubor.NazevBezPripony;
            var fullFileName     = souborBezPripony + ".xml";

            var inputFilePath = Path.Combine(Nastaveni.VstupniSlozka, fullFileName);
            var konecnyVystup = Path.Combine(Nastaveni.VystupniSlozka, fullFileName);

            if (xmlOutputFiles.Count > 1)
            {
                CombineInputXml(xmlOutputFiles, inputFilePath);
            }

            try
            {
                var step = 0;

                vystupniSoubor = inputFilePath;

                var transformationParameter = new NameValueCollection
                {
                    { "guid", prepis.GUID }
                };

                if (xsltSteps.Count > 0)
                {
                    var step00File = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);
                    ApplyTransformations(inputFilePath, step00File, xsltSteps.Dequeue(), Nastaveni.DocasnaSlozka, transformationParameter);

                    vystupniSoubor = step00File;
                }

                var slovnik = GetDictionaryObject(fileName);
                var fileTransformationSource = vystupniSoubor;

                if (slovnik != null)
                {
                    UsePersonalizedXmdGenerator = slovnik.UsePersonalizedXmdGenerator;

                    var step01File = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);
                    var step02File = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);
                    var step03File = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);
                    var step04File = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);

                    slovnik.SeskupitHeslaPismene(vystupniSoubor, step01File, souborBezPripony);
                    slovnik.UpravitHraniceHesloveStati(step01File, step02File, souborBezPripony);
                    slovnik.KonsolidovatHeslovouStat(step02File, step03File, souborBezPripony);
                    slovnik.UpravitOdkazy(step03File, step04File, souborBezPripony);

                    fileTransformationSource = step04File;
                }

                while (xsltSteps.Count > 0)
                {
                    var fileTransformationTarget = GetTempFile(Nastaveni.DocasnaSlozka, souborBezPripony, step++);

                    ApplyTransformations(fileTransformationSource, fileTransformationTarget, xsltSteps.Dequeue(), Nastaveni.DocasnaSlozka, transformationParameter);

                    fileTransformationSource = fileTransformationTarget;
                }

                vystupniSoubor = fileTransformationSource;
            }
            catch (Exception e)
            {
                Zaloguj("Při konverzi souboru {0} nastala chyba: {1}", prepis.Soubor.NazevBezPripony, e.Message, true);
            }
            finally
            {
                if (vystupniSoubor != null)
                {
                    if (File.Exists(konecnyVystup))
                    {
                        File.Delete(konecnyVystup);
                    }
                    File.Copy(vystupniSoubor, konecnyVystup);
                    File.SetCreationTime(konecnyVystup, casExportu);

                    //if (Nastaveni.SmazatDocasneSoubory)
                    //	ekup.SmazDocasneSoubory();
                }
            }
        }
コード例 #18
0
ファイル: ModulMluvnic.cs プロジェクト: daliboris/ITJakub
 protected override void Exportuj(IPrepis prpPrepis, IList <string> xmlOutputFiles)
 {
     throw new NotImplementedException();
 }
コード例 #19
0
        private static Dictionary <string, string> VyplnitParametry(Dictionary <string, string> gdcParametry, IPrepis prepis)
        {
            if (gdcParametry == null)
            {
                return(null);
            }
            Dictionary <string, string> gdc = new Dictionary <string, string>(gdcParametry);

            foreach (KeyValuePair <string, string> kvp in gdcParametry)
            {
                if (kvp.Value != null)
                {
                    continue;
                }
                switch (kvp.Key)
                {
                case "soubor":
                    gdc[kvp.Key] = prepis.Soubor.Nazev;
                    break;
                }
            }
            return(gdc);
        }
コード例 #20
0
ファイル: EdicniModul.cs プロジェクト: daliboris/ITJakub
        private void ExportujImpl(IPrepis prepis)
        {
            IList <IXsltTransformer> header       = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "header", Nastaveni.SlozkaXslt);
            IList <IXsltTransformer> front        = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "front", Nastaveni.SlozkaXslt);
            IList <IXsltTransformer> body         = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "body", Nastaveni.SlozkaXslt);
            IList <IXsltTransformer> back         = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "back", Nastaveni.SlozkaXslt);
            IList <IXsltTransformer> joining      = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "joining", Nastaveni.SlozkaXslt);
            IList <IXsltTransformer> afterJoining = XsltTransformerFactory.GetXsltTransformers(Nastaveni.SouborTransformaci, "afterJoining", Nastaveni.SlozkaXslt);



            IUpravy ekup = new EdicniModulUpravy(Nastaveni);

            ekup.NastavVychoziHodnoty();
            Zaloguj("Převádím soubor {0}", prepis.Soubor.Nazev, false);

            string strVystup      = null;
            string sKonecnyVystup = null;

            DateTime casExportu       = Nastaveni.CasExportu == DateTime.MinValue ? DateTime.Now : Nastaveni.CasExportu;
            string   souborBezPripony = prepis.Soubor.NazevBezPripony;

            try
            {
                const string csPriponaXml = ".xml";
                sKonecnyVystup = Path.Combine(Nastaveni.VystupniSlozka, prepis.Soubor.NazevBezPripony + csPriponaXml);

                FileInfo fi = new FileInfo(sKonecnyVystup);
                if (fi.Exists && fi.CreationTime == casExportu)
                {
                    return;
                }

                string headerFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "header"));
                var    parameters = new NameValueCollection {
                    { "soubor", prepis.Soubor.Nazev }
                };
                ApplyTransformations(Nastaveni.SouborMetadat, headerFile, header, Nastaveni.DocasnaSlozka, parameters);

                string frontFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "front"));
                ApplyTransformations(Nastaveni.SouborMetadat, frontFile, front, Nastaveni.DocasnaSlozka, parameters);

                parameters = new NameValueCollection {
                    { "exportovatTransliteraci", prepis.Zpracovani.Transliterovane ? "true()" : "false()" }
                };
                string bodyFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "body"));
                ApplyTransformations(Path.Combine(Nastaveni.VstupniSlozka, souborBezPripony + csPriponaXml),
                                     bodyFile, body, Nastaveni.DocasnaSlozka, parameters);

                parameters.Add("hlavicka", headerFile);
                parameters.Add("zacatek", frontFile);

                string combineFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "joining"));
                ApplyTransformations(bodyFile, combineFile, joining, Nastaveni.DocasnaSlozka, parameters);


                parameters = new NameValueCollection();
                string afterCombineFile = Path.Combine(Nastaveni.DocasnaSlozka, String.Format("{0}_{1}.xml", souborBezPripony, "afterJoining"));
                ApplyTransformations(combineFile, afterCombineFile, afterJoining, Nastaveni.DocasnaSlozka, parameters);

                List <UpravaSouboruXml> lsup = new List <UpravaSouboruXml>();

                lsup.Add(EdicniModulUpravy.PresunoutMezeryVneTagu);
                lsup.Add(EdicniModulUpravy.PridatMezeryZaTagyPoInterpunkci);
                lsup.Add(EdicniModulUpravy.RozdelitNaSlova);
                //lsup.Add(Upravy.UpravitTextTypograficky);
                EdicniModulUpravy eu = ekup as EdicniModulUpravy;
                strVystup = ekup.ProvedUpravy(prepis, afterCombineFile, lsup);
            }
            catch (Exception e)
            {
                Zaloguj("Při konverzi souboru {0} nastala chyba: {1}", prepis.Soubor.NazevBezPripony, e.Message, true);
            }
            finally
            {
                if (strVystup != null)
                {
                    if (File.Exists(sKonecnyVystup))
                    {
                        File.Delete(sKonecnyVystup);
                    }
                    File.Copy(strVystup, sKonecnyVystup);
                    File.SetCreationTime(sKonecnyVystup, casExportu);

                    if (Nastaveni.SmazatDocasneSoubory)
                    {
                        ekup.SmazDocasneSoubory();
                    }
                }
            }
        }
コード例 #21
0
        /// <summary>
        /// Upraví jeden přepis, transformuje ho do podoby pro ediční modul
        /// </summary>
        /// <param name="prp">Přepis (informace o něm)</param>
        /// <param name="emnNastaveni">Nastavení exportu pro ediční modul</param>
        /// <param name="glsTransformacniSablony">Seznam transformačních šablon XSLT, které se při úpravách použijí</param>
        public static void Uprav(IPrepis prp, IExportNastaveni emnNastaveni, List <string> glsTransformacniSablony)
        {
            //
            string sCesta = Path.Combine(emnNastaveni.VstupniSlozka, prp.Soubor.Nazev);

            sCesta = sCesta.Replace(".docx", ".xml").Replace(".doc", ".xml");
            FileInfo fi = new FileInfo(sCesta);

            if (!fi.Exists)
            {
                throw new FileNotFoundException("Zadaný soubor '" + sCesta + "' neexistuje.");
            }

            if (emnNastaveni.DocasnaSlozka == null)
            {
                emnNastaveni.DocasnaSlozka = Path.GetTempPath();
            }

            //Zpracovat hlavičku a front
            string strNazev = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length);

            Console.WriteLine("Zpracovávám soubor '{0}'", strNazev);
            XmlWriter xw;


            string sFront       = Path.Combine(emnNastaveni.SlozkaXslt, "Vytvorit_front_TEI.xsl");
            string sFrontVystup = Path.Combine(emnNastaveni.DocasnaSlozka, strNazev + "_front.xml");

            List <string> glsVystupy = new List <string>(glsTransformacniSablony.Count + 2);

            /*
             *           UpravaSouboruXml uprava = new UpravaSouboruXml(UpravHlavicku);
             *
             *
             *          Dictionary<string, string> gdcParam = new Dictionary<string, string>();
             *          gdcParam.Add("soubor", prp.NazevSouboru);
             *           TransformacniKrok tkh = new TransformacniKrok(Path.Combine(emnNastaveni.SlozkaXslt, "EM_Vytvorit_hlavicku_TEI.xsl"), emnNastaveni.SouborMetadat, gdcParam);
             */

            string sHlavicka       = Path.Combine(emnNastaveni.SlozkaXslt, "EM_Vytvorit_hlavicku_TEI.xsl");
            string sHlavickaVystup = Path.Combine(emnNastaveni.DocasnaSlozka, strNazev + "_hlavicka.xml");

            XslCompiledTransform xctHlavick = new XslCompiledTransform();

            xctHlavick.Load(sHlavicka);
            XsltArgumentList xal = new XsltArgumentList();

            xal.AddParam("soubor", "", prp.NazevSouboru);

            xw = XmlWriter.Create(sHlavickaVystup);
            xctHlavick.Transform(emnNastaveni.SouborMetadat, xal, xw);
            xw.Close();

            glsVystupy.Add(sHlavickaVystup);

            XslCompiledTransform xctFront = new XslCompiledTransform();

            xctFront.Load(sFront);
            xw = XmlWriter.Create(sFrontVystup);
            xctFront.Transform(emnNastaveni.SouborMetadat, xal, xw);
            xw.Close();
            glsVystupy.Add(sFrontVystup);

            string strVstup  = sCesta;
            string strVystup = null;

            for (int i = 0; i < glsTransformacniSablony.Count; i++)
            {
                strVystup = Path.Combine(emnNastaveni.DocasnaSlozka, String.Format(cstrNazevVystupuFormat, strNazev, i));
                glsVystupy.Add(strVystup);

                XslCompiledTransform xslt = new XslCompiledTransform();
                Console.WriteLine("{0} = {1}", String.Format(cstrNazevVystupuFormat, strNazev, i),
                                  glsTransformacniSablony[i]);

                xslt.Load(glsTransformacniSablony[i]);
                xslt.Transform(strVstup, strVystup);
                strVstup = strVystup;
            }


            if (prp.LiterarniZanr == "biblický text")
            {
                strVstup = ZpracovatBiblickyText(emnNastaveni, strNazev, glsTransformacniSablony, glsVystupy, strVystup);
            }
            else
            {
                strVstup = ZpracovatOdkazyNaBiblickaMista(emnNastaveni, strNazev, glsTransformacniSablony, glsVystupy,
                                                          strVystup);
            }



            string sSlouceni = Path.Combine(emnNastaveni.SlozkaXslt, "EM_Spojit_s_hlavickou_a_front.xsl"); //EBV


            strVystup = Path.Combine(emnNastaveni.DocasnaSlozka,
                                     String.Format(cstrNazevVystupuFormat, strNazev, glsVystupy.Count));

            XsltSettings         xsltSettings = new XsltSettings(true, false);
            XslCompiledTransform xctSlouceni  = new XslCompiledTransform();

            xctSlouceni.Load(sSlouceni, xsltSettings, null);
            xal = new XsltArgumentList();
            xal.AddParam("hlavicka", "", sHlavickaVystup);
            xal.AddParam("zacatek", "", sFrontVystup);
            xw = XmlWriter.Create(strVystup);
            xctSlouceni.Transform(strVstup, xal, xw);
            xw.Close();
            strVstup = strVystup;
            glsVystupy.Add(strVystup);

            /*
             *          strVystup = Path.Combine(emnNastaveni.DocasnaSlozka, String.Format("{0}_{1:00}.xml", strNazev, glsVystupy.Count));
             *          PresunoutMezeryVneTagu(strVstup, strVystup);
             *          glsVystupy.Add(strVystup);
             *          strVstup = strVystup;
             */
            string sEdicniKomentar = Path.Combine(emnNastaveni.SlozkaXslt, "EM_Presunout_edicni_komentar.xsl");

            strVystup = Path.Combine(emnNastaveni.DocasnaSlozka,
                                     String.Format(cstrNazevVystupuFormat, strNazev, glsVystupy.Count));

            XmlUrlResolver       xrl = new XmlUrlResolver();
            XslCompiledTransform xctEdicniKomentare = new XslCompiledTransform();

            xctEdicniKomentare.Load(sEdicniKomentar, xsltSettings, xrl);
            xw = XmlWriter.Create(strVystup);
            xctEdicniKomentare.Transform(strVstup, xal, xw);
            xw.Close();
            glsVystupy.Add(strVystup);

            strVstup  = strVystup;
            strVystup = Path.Combine(emnNastaveni.VystupniSlozka, strNazev + ".xml");
            PresunoutMezeryVneTagu(strVstup, strVystup);


            //File.Copy(strVystup, Path.Combine(emnNastaveni.VystupniSlozka, strNazev + ".xml"),true);
        }
コード例 #22
0
        /// <summary>
        /// Upraví úvod dokumentu (&gt;front&lt;), který obsahuje nadpis a autora.
        /// </summary>
        /// <param name="prepis">Objekt s přepisem, jehož úvod se má upravovat.</param>
        /// <param name="kroky">Trnasformační kroky, které se mají na úvod aplikovat.</param>
        /// <returns>Vrací celou cestu k souboru s úvodem.</returns>
        /// <remarks>Pokud vrátí null, znamená to, že úvod nic neobsahuje.</remarks>
        public override string UpravUvod(IPrepis prepis, IEnumerable <ITransformacniKrok> kroky)
        {
            string sVstup = Nastaveni.SouborMetadat;

            return(UpravVstupniSoubor(prepis, kroky, sVstup));
        }
コード例 #23
0
ファイル: EdicniModul.cs プロジェクト: daliboris/ITJakub
        /*
         * public void UpravBiblickyText(string strNazev, string strVstup)
         * {
         *       List<string> glsVystupy = new List<string>();
         *       List<string> glsTransformacniSablony = new List<string>();
         *       glsVystupy.Add(strVstup);
         *       glsTransformacniSablony.Add(strVstup);
         *       EdicniModulUpravy.ZpracovatBiblickyText(Nastaveni, strNazev, glsTransformacniSablony, glsVystupy, strVstup);
         *
         * }
         *
         * public override void Exportuj()
         * {
         *      IPrepis prepis = Nastaveni.Prepis;
         *
         *      const string sSlozkaXslt = @"D:\!UJC\OVJ\Texty\Konverze\Xslt\";
         *      List<string> glsXslt = new List<string>();
         *
         *      glsXslt.Add(sSlozkaXslt + "Prevod_starych_wordovskych_stylu_na_nove" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Odstranit_tabulku_metadat" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Odstranit_interni_poznamky" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Prevest_sloucene_styly_na_elementy" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Sloucit_obsah_nasledujicich_shodnych_elementu" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Odstranit_mezery_mezi_elementy" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Odstranit_prazdne_elementy" + ".xsl");
         *
         *      glsXslt.Add(sSlozkaXslt + "EM_Prevod_stylu_na_TEI" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Upravit_obsah_prvku_cell" + ".xsl");
         *
         *      glsXslt.Add(sSlozkaXslt + "Seskupit_prvky_thead_do_div" + ".xsl");//EB-výbor
         *      //glsXslt.Add(sSlozkaXslt + "EB_Odstranit_edicni_komentar" + ".xsl");//EB-výbor
         *
         *      //glsXslt.Add(sSlozkaXslt + "EB_Vybor_Seskupit_prvky_do_div" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Seskupit_prvky_do_div" + ".xsl"); //EB
         *      glsXslt.Add(sSlozkaXslt + "Seskupit_prvky_k_titulu" + ".xsl");//EB
         *      glsXslt.Add(sSlozkaXslt + "Presunout_foliaci_pred_odstavec" + ".xsl");//EB
         *      glsXslt.Add(sSlozkaXslt + "Presunout_foliaci_pred_odstavec" + ".xsl");//EB
         *      glsXslt.Add(sSlozkaXslt + "TEI_Upravit_Foliaci" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "TEI_Seskupit_odstavce_bez_div" + ".xsl");//EB
         *      //glsXslt.Add(sSlozkaXslt + "EB_Vybor_Seskupit_odstavce_bez_div" + ".xsl");//EB-výbor
         *      //glsXslt.Add(sSlozkaXslt + "EB_Vybor_Seskupit_verse_bez_div" + ".xsl");//EB-výbor
         *      glsXslt.Add(sSlozkaXslt + "TEI_Slouceni_l_a_lb" + ".xsl");
         *
         *      glsXslt.Add(sSlozkaXslt + "Sloucit_corr_a_sic" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Prevest_prvek_text_na_text" + ".xsl");
         *
         *      glsXslt.Add(sSlozkaXslt + "Odstranit_mezery_mezi_elementy" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "Prejmenovat_head1" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "EM_Seskupit_polozky_rejstriku" + ".xsl");
         *      glsXslt.Add(sSlozkaXslt + "EM_Prevod_relatoru" + ".xsl");
         *
         *      //glsXslt.Add(sSlozkaXslt + "Presunout_foliaci_pred_odstavec" + ".xsl");
         *      //glsXslt.Add(sSlozkaXslt + "Presunout_foliaci_pred_odstavec" + ".xsl");
         *
         *      //glsXslt.Add(sSlozkaXslt + "EM_Ukazka_s_hlavickou" + ".xsl");
         *
         *
         *              //EdicniModulUpravy ups = new EdicniModulUpravy();
         *              //if (prp.LiterarniZanr != "biblický text") continue;
         *              //if (prp.NazevSouboru != "BiblKladrGn.docx") continue;
         *              //if (prp.NazevSouboru != "PN_ZrcSpasK_1-22.docx") continue;
         *              //if (prp.NazevSouboru != "HKMP_BiblKlemNZ_Mt.docx") continue;
         *              //if (prp.NazevSouboru != "CestKabK.docx") continue;
         *              try
         *              {
         *                      EdicniModulUpravy.Uprav(prepis, Nastaveni, glsXslt);
         *              }
         *              catch (Exception e)
         *              {
         *                      Zaloguj(String.Format("Chyba: {0} [{1}]", prepis.Soubor.Nazev, e.Message), true);
         *                      //Console.WriteLine();
         *              }
         *
         *              //prp.Zpracovani.ZaevidujExport(ZpusobVyuziti.EdicniModul, DateTime.Now);
         * }
         */

        protected override void Exportuj(IPrepis prpPrepis, IList <string> xmlOutputFiles)
        {
            ExportujImpl(prpPrepis);
        }
コード例 #24
0
 /// <summary>
 /// Přiřadí identifikátory důležitým prvkům
 /// </summary>
 /// <param name="prepis">Objekt s přepisem, jehož závěr se má upravovat.</param>
 /// <param name="kroky">Trnasformační kroky, které se mají na závěr aplikovat.</param>
 /// <returns>Vrací celou cestu k přetransformovanému souboru.</returns>
 public override string PriradId(IPrepis prepis, IEnumerable <ITransformacniKrok> kroky)
 {
     throw new NotImplementedException();
 }
コード例 #25
0
 public override string UpravHlavicku(IPrepis prepis, List <ITransformacniKrok> kroky)
 {
     throw new NotImplementedException();
 }
コード例 #26
0
        /// <summary>
        /// Upraví závěr dokumentu (&gt;back&lt;), které obsahuje závěrečné pasáže, např. informaci a autorských právech.
        /// </summary>
        /// <param name="prepis">Objekt s přepisem, jehož závěr se má upravovat.</param>
        /// <param name="kroky">Trnasformační kroky, které se mají na závěr aplikovat.</param>
        /// <returns>Vrací celou cestu k souboru se závěrem.</returns>
        /// <remarks>Pokud vrátí null, znamená to, že závěr nic neobsahuje.</remarks>

        public override string UpravZaver(IPrepis prepis, List <ITransformacniKrok> kroky)
        {
            return(null);
        }
コード例 #27
0
 public virtual void Exportuj(IPrepis prpPrepis, IList <string> xmlOutputFiles, IReadOnlyDictionary <ResourceType, string[]> uploadedFiles)
 {
     Exportuj(prpPrepis, xmlOutputFiles);
 }
コード例 #28
0
        /// <summary>
        /// Upraví hlavičku dokumentu (&gt;teiHeader&lt;).
        /// </summary>
        /// <param name="prepis">Objekt s přepisem, jehož hlavička se má upravovat.</param>
        /// <param name="kroky">Trnasformační kroky, které se mají na hlavičku aplikovat.</param>
        /// <returns>Vrací celou cestu k vytvořenému souboru.</returns>
        /// <remarks>Pokud vrátí null, znamená to, že hlavička nic neobsahuje.</remarks>
        public override string UpravHlavicku(IPrepis prepis, List <ITransformacniKrok> kroky)
        {
            string sVstup = Nastaveni.SouborMetadat;

            return(UpravVstupniSoubor(prepis, kroky, sVstup));
        }
コード例 #29
0
 protected abstract void Exportuj(IPrepis prpPrepisy, IList <string> xmlOutputFiles);
コード例 #30
0
 /// <summary>
 /// Vrací název předchozího výstupu pro zadaný přepis.
 /// </summary>
 /// <param name="prepis">Objekt, pro nějž se vrací název výstupu</param>
 /// <returns>Název předchozího výstupu pro zadaný přepis</returns>
 /// <remarks>Název se určuje podle aktuálního počtu zpracovaných souborů.</remarks>
 public override string DejNazevPredchozihoVystupu(IPrepis prepis)
 {
     return(Path.Combine(mstrDocasnaSlozka, String.Format(cstrNazevVystupuFormat, prepis.Soubor.NazevBezPripony, PocetKroku - 1)));
 }