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(); }
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()); } }
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()); }
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); } }
private void GenerateFile(XslCompiledTransform pTransform, string pDestFilename, parameterdefinitionsParameterdefinition[] paParams, generatefileEncoding pEncoding) { GenerateFile(pTransform, pDestFilename, paParams, null, pEncoding); }