예제 #1
0
 /// <summary>
 /// Writes to file the content from other file.
 /// </summary>
 /// <param name="sourceFile">The source file.</param>
 /// <param name="targetFile">The target file.</param>
 /// <param name="comment">The comment.</param>
 public static void WriteToFile(UnifiedFile sourceFile, UnifiedFile targetFile, string comment)
 {
     using (Stream stream = sourceFile.Open())
     {
         WriteToFile(stream, targetFile, comment);
     }
 }
예제 #2
0
        /// <summary>
        /// Saves the source stream to a unified file and adds a comment if the file implrments IVersioningFile.
        /// </summary>
        /// <param name="sourceStream">The source stream.</param>
        /// <param name="targetFile">The target file.</param>
        /// <param name="comment">A comment to add when checking in a versioning file.</param>
        public static void WriteToFile(Stream sourceStream, UnifiedFile targetFile, string comment)
        {
            // It may be a versioning file
            IVersioningFile versioningFile = targetFile as IVersioningFile;

            if (versioningFile != null)
            {
                ThrowIfCheckedOut(versioningFile);
                if (!versioningFile.IsCheckedOut)
                {
                    versioningFile.CheckOut();
                }
            }

            // Copy the source stream to the target file stream.
            using (Stream writeStream = targetFile.Open(FileMode.Create, FileAccess.Write))
            {
                StreamConsumer.CopyToEnd(sourceStream, writeStream);
            }

            // If versioning, then check in with the supplied comment.
            if (versioningFile != null)
            {
                versioningFile.CheckIn(comment ?? String.Empty);
            }
        }
예제 #3
0
 private void WriteError(string entryId, UnifiedFile file, Error error)
 {
     using (var fileStream = file.Open(FileMode.Create, FileAccess.Write, FileShare.None))
     {
         var writer = new XmlTextWriter(fileStream, Encoding.UTF8) { Formatting = Formatting.Indented };
         writer.WriteStartElement("error");
         writer.WriteAttributeString("errorId", entryId);
         ErrorXml.Encode(error, writer);
         writer.WriteEndElement();
         writer.Flush();
     }
 }
예제 #4
0
        private ErrorLogEntry ReadError(UnifiedFile file)
        {
            using (var stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                var reader = new XmlTextReader(stream);

                if (reader.IsStartElement("error") == false)
                {
                    return null;
                }

                var entryId = reader.GetAttribute("errorId");
                var error = ErrorXml.Decode(reader);
                return new ErrorLogEntry(this, entryId, error);
            }
        }