Exemplo n.º 1
0
        private void WriteFile(string pText, string pDestFilename, generatefileEncoding pEncoding)
        {
            FileStream   fs = File.Create(pDestFilename);
            StreamWriter sw;

            if (pEncoding == generatefileEncoding.UTF8)
            {
                sw = new StreamWriter(fs, ENCODING_UTF_8);
            }
            else
            {
                sw = new StreamWriter(fs, ENCODING_ISO_8859_1);
            }
            sw.Write(pText);
            sw.Flush();
            sw.Close();
            fs.Close();
        }
Exemplo n.º 2
0
        private string ReadFile(string pFilename, generatefileEncoding pEncoding)
        {
            FileInfo info = new FileInfo(pFilename);

            FileStream   fs = File.OpenRead(pFilename);
            BinaryReader rd = new BinaryReader(fs);

            byte[] bytes = new byte[info.Length];
            rd.Read(bytes, 0, (int)info.Length);
            rd.Close();
            fs.Close();

            if (pEncoding == generatefileEncoding.UTF8)
            {
                return(ENCODING_UTF_8.GetString(bytes, 0, bytes.Length).Trim());
            }
            else
            {
                return(ENCODING_ISO_8859_1.GetString(bytes, 0, bytes.Length).Trim());
            }
        }
Exemplo n.º 3
0
        private string DoTransform(XslCompiledTransform pTransform, string pEntity, generatefileEncoding pEncoding)
        {
            XsltArgumentList arguments = new XsltArgumentList();

            if (pEntity != null)
            {
                arguments.AddParam("entity", "", pEntity);
            }

            MemoryStream memoryStream = new MemoryStream();
            StreamWriter writer;

            if (pEncoding == generatefileEncoding.UTF8)
            {
                writer = new StreamWriter(memoryStream, ENCODING_UTF_8);
            }
            else
            {
                writer = new StreamWriter(memoryStream, ENCODING_ISO_8859_1);
            }

            pTransform.Transform(mDataDocument, arguments, writer);

            string result;

            byte[] resultData = memoryStream.GetBuffer();
            if (pEncoding == generatefileEncoding.UTF8)
            {
                result = ENCODING_UTF_8.GetString(resultData, 0, (int)memoryStream.Length);
            }
            else
            {
                result = ENCODING_ISO_8859_1.GetString(resultData, 0, (int)memoryStream.Length);
            }

            memoryStream.Close();

            return(result.Trim());
        }
Exemplo n.º 4
0
        private void GenerateFile(XslCompiledTransform pTransform, string pDestFilename,
                                  parameterdefinitionsParameterdefinition[] paParams, string pEntity, generatefileEncoding pEncoding)
        {
            try {
                string result = DoTransform(pTransform, pEntity, pEncoding).Trim();

                // remove BOM when checking for empty result string
                bool resultEmpty = string.IsNullOrWhiteSpace(result);

                // special empty check for generated xml files containing only xml declaration
                if (!resultEmpty && pDestFilename.EndsWith(".xml"))
                {
                    String encoding = "iso-8859-1";
                    if (pEncoding == generatefileEncoding.UTF8)
                    {
                        encoding = "utf-8";
                    }
                    resultEmpty = result.Equals("<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>");
                }

                // Remove existing file if generation result is empty
                if (resultEmpty)
                {
                    if (File.Exists(pDestFilename))
                    {
                        File.Delete(pDestFilename);
                    }
                    return;
                }

                // If no existing file write result to file
                if (!File.Exists(pDestFilename))
                {
                    WriteFile(result, pDestFilename, pEncoding);
                    return;
                }

                // otherwise load existing file and merge existing custom class extension sections
                else
                {
                    string strCustomExtStart = "";
                    string strCustomExtEnd   = "";
                    int    intHeaderLines    = 0;
                    string strNewContent     = result;

                    // Get parameter defintions for custom class extensions
                    if (paParams != null)
                    {
                        strCustomExtStart = GetParamValue(paParams, "custom-class-extension-tag-start");
                        strCustomExtEnd   = GetParamValue(paParams, "custom-class-extension-tag-end");
                        string strFileHeader = GetParamValue(paParams, "file-header");

                        // Prepare line endings of parameters
                        strCustomExtStart = strCustomExtStart.Replace("\r\n", "\n").Replace('\r', '\n');
                        strCustomExtEnd   = strCustomExtEnd.Replace("\r\n", "\n").Replace('\r', '\n');
                        strFileHeader     = strFileHeader.Replace("\r\n", "\n").Replace('\r', '\n');

                        foreach (char ch in strFileHeader)
                        {
                            if (ch == '\n')
                            {
                                intHeaderLines++;
                            }
                        }
                    }

                    // Check for cusotm class extensions
                    if (strCustomExtStart.Length != 0 && strCustomExtEnd.Length != 0)
                    {
                        char[] aTrim = new char[2] {
                            '\n', '\r'
                        };

                        // Read existing file
                        string strOldContent = ReadFile(pDestFilename, pEncoding);

                        // Prepare existing and new file content
                        strOldContent = strOldContent.Trim().Trim(aTrim).Replace("\r\n", "\n").Replace('\r', '\n');
                        strNewContent = strNewContent.Trim().Trim(aTrim).Replace("\r\n", "\n").Replace('\r', '\n');

                        // Extract Custom class extension from old content
                        string strCustom = CusomClassExt(strOldContent, null, strCustomExtStart, strCustomExtEnd, true);

                        // Merge the custom extensions with the new content
                        strNewContent = CusomClassExt(strNewContent, strCustom, strCustomExtStart, strCustomExtEnd, false);

                        if (StripHeader(strOldContent, intHeaderLines + 1).Equals(StripHeader(strNewContent, intHeaderLines + 1)))
                        {
                            // Files are identical, do nothing
                            return;
                        }

                        // Replace line endings with platform specific line endings
                        strNewContent = strNewContent.Replace("\n", "\r\n");
                    }

                    // Overwrite file
                    File.Delete(pDestFilename);
                    WriteFile(strNewContent, pDestFilename, pEncoding);
                }
            }
            catch (Exception ex) {
                throw new PVException("Error generating File '" + pDestFilename + "' - \n" + ex.Message);
            }
        }
Exemplo n.º 5
0
 private void GenerateFile(XslCompiledTransform pTransform, string pDestFilename, parameterdefinitionsParameterdefinition[] paParams, generatefileEncoding pEncoding)
 {
     GenerateFile(pTransform, pDestFilename, paParams, null, pEncoding);
 }