public CACmdLineInputParameters(CAPluginCrashAnalysis aEngine) { iEngine = aEngine; // Version version = aEngine.UIManager.UIVersion; string commandLine = aEngine.UIManager.UICommandLineArguments; // iSinkParams = new CISinkSerializationParameters(version, commandLine); }
public override object Serialize(CISinkSerializationParameters aParams) { CXmlDocumentRoot document = new CXmlDocumentRoot(); // string fileName = string.Empty; using (CXmlDocumentSerializationParameters parameters = new CXmlDocumentSerializationParameters(aParams, document)) { fileName = parameters.FileName; document.XmlSerialize(parameters); } // return(fileName); }
public CXmlDocumentSerializationParameters(CISinkSerializationParameters aCopy, CXmlDocumentRoot aDocument, StringBuilder aBuilder) : base(aCopy) { PrepareDefaultExtensions(); iDocument = aDocument; // XmlWriterSettings settings = CreateWriterSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.OmitXmlDeclaration = true; // iWriter = XmlWriter.Create(aBuilder, settings); iFileName = string.Empty; }
public CXmlDocumentSerializationParameters(CISinkSerializationParameters aCopy, CXmlDocumentRoot aDocument) : base(aCopy) { PrepareDefaultExtensions(); iDocument = aDocument; // Stream stream = base.CreateFile(out iFileName); // XmlWriterSettings settings = CreateWriterSettings(); settings.CloseOutput = true; // iWriter = XmlWriter.Create(stream, settings); }
public override object Serialize(CISinkSerializationParameters aParams) { CXmlFileDocument document = new CXmlFileDocument(); //Read information relevant to crash info file from container to internal variables document.ReadDataFromContainer(aParams); string newFileName = ""; if (aParams.PlainTextOutput) { //Override default file extension aParams.FileExtensionFailed = ".corrupt_txt"; aParams.FileExtensionSuccess = ".txt"; //Write document's internal data to file newFileName = string.Empty; using (Stream output = aParams.CreateFile(out newFileName)) { using (StreamWriter sw = new StreamWriter(output, Encoding.ASCII)) { document.WriteToPlainTextStream(sw); } } } else // XML output { //Override default file extension aParams.FileExtensionFailed = ".corrupt_xml"; aParams.FileExtensionSuccess = ".xml"; //Write document's internal data to file newFileName = string.Empty; using (Stream output = aParams.CreateFile(out newFileName)) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.NewLineChars = XmlConsts.Kxml_EOL; settings.NewLineHandling = NewLineHandling.None; using (XmlWriter sw = XmlWriter.Create(output, settings)) { document.WriteToXmlStream(sw); } } } return(newFileName); }
private void Menu_File_SaveAs_SinkFormat_Click(object aTag, string aCaption) { if (aTag is CISink) { CISink sink = (CISink)aTag; // CISinkSerializationParameters parameters = new CISinkSerializationParameters(CIContainer, base.UIManager.UIVersion, base.UIManager.UICommandLineArguments); FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "Save Location"; // if (dialog.ShowDialog() == DialogResult.OK) { parameters.OutputDirectory = new System.IO.DirectoryInfo(dialog.SelectedPath); // sink.Serialize(parameters); } } }
public override object Serialize(CISinkSerializationParameters aParams) { CCrashInfoFileDocument document = new CCrashInfoFileDocument(); //Read information relevant to crash info file from container to internal variables document.ReadDataFromContainer(aParams); //Override default file extension aParams.FileExtensionFailed = ".corrupt_ci"; aParams.FileExtensionSuccess = ".ci"; //Write document's internal data to file string newFileName = string.Empty; using (Stream output = aParams.CreateFile(out newFileName)) { using (StreamWriter sw = new StreamWriter(output, Encoding.ASCII)) { document.WriteToStream(sw); } } return(newFileName); }
private void TryToCreateOutput(CISink aXmlSink, CIContainer aContainer, CACmdLineFileSource aFile, CACmdLineMessage[] aMessagesToAdd) { Trace("[CA Cmd] TryToCreateOutput() - START - container source: {0}", aContainer.Source.MasterFileName); // By the time we are outputting a container, there should no longer be any messages // associated with the file. System.Diagnostics.Debug.Assert(aFile.Count == 0); // Check whether the file contained any errors or // messages of it own. if (aMessagesToAdd.Length > 0) { // Copy warnings, messages and errors into crash item container. // Diagnostic messages are not copied. CACmdLineFSEntity.CopyMessagesToContainer(aMessagesToAdd, aContainer); } // This is where we will record the output attempt CACmdLineFileSource.OutputEntry outputEntry = null; // try { // Finish preparing the sink parameters CISinkSerializationParameters sinkParams = iInputs.SinkParameters; sinkParams.Container = aContainer; // Perform serialization Trace("[CA Cmd] TryToCreateOutput() - serializing..."); object output = aXmlSink.Serialize(sinkParams); Trace("[CA Cmd] TryToCreateOutput() - serialization returned: " + output); if (aFile != null) { // Create new output string outputFileName = output is string?(string)output : string.Empty; // Save output file name outputEntry = aFile.AddOutput(aContainer, outputFileName, TOutputStatus.ESuccess); } // Merge in any diagnostic messages that were left into the output entry. // This ensure we output diagnostics in the final manifest data. outputEntry.AddRange(aMessagesToAdd, CACmdLineMessage.TType.ETypeDiagnostic); } catch (Exception outputException) { Trace("[CA Cmd] TryToCreateOutput() - outputException.Message: " + outputException.Message); Trace("[CA Cmd] TryToCreateOutput() - outputException.StackTrace: " + outputException.StackTrace); if (aFile != null) { // Something went wrong with CI serialisation for the specified container. outputEntry = aFile.AddOutput(aContainer, string.Empty, TOutputStatus.EFailed); // outputEntry.AddError("Could not Create CI", "CI output could not be created"); outputEntry.AddDiagnostic("CI Sink Exception Message", outputException.Message); outputEntry.AddDiagnostic("CI Sink Exception Stack", outputException.StackTrace); // Since we didn't manage to sink the container to CI successfully, we must // make sure we don't lose any associated messages from the original file. // Merge these into the output entry also. outputEntry.AddRange(aMessagesToAdd); } } }