crashanalysercmd/UI/Plugins/CAPluginCrashAnalyser/CommandLine/CACmdLineEngine.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:50:58 +0200
changeset 0 818e61de6cd1
permissions -rw-r--r--
Add initial version of Crash Analyser cmdline under EPL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
* 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
using System;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
using System.Text;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
using System.IO;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
using System.Xml;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
using System.Collections.Generic;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
using CrashItemLib.Crash;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
using CrashItemLib.Crash.Container;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
using CrashItemLib.Crash.Source;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
using CrashItemLib.Crash.Messages;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
using CrashItemLib.Sink;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
using CrashItemLib.Engine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
using CrashItemLib.Engine.Sources;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
using CrashItemLib.PluginAPI;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
using CrashAnalyserEngine.Engine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
using CrashAnalyserEngine.Plugins;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
using CrashAnalyserEngine.Interfaces;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
using SymbianUtils.FileSystem.Utilities;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
using SymbianXmlInputLib.Parser;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
using SymbianXmlInputLib.Parser.Nodes;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
using SymbianXmlInputLib.Elements;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
using SymbianXmlInputLib.Elements.Types.Category;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
using SymbianXmlInputLib.Elements.Types.FileSystem;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
using SymbianXmlInputLib.Elements.Types.Command;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
using CAPCrashAnalysis.Plugin;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
using CAPCrashAnalysis.CommandLine.Progress;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
using SymbianDebugLib;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
using SymbianDebugLib.Engine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
using SymbianDebugLib.Entity;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
using SymbianUtils;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
namespace CAPCrashAnalysis.CommandLine
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
	internal class CACmdLineEngine
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
	{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
		#region Constructors
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
        public CACmdLineEngine( CAPluginCrashAnalysis aEngine )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
		{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
            iEngine = aEngine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
            iInputs = new CACmdLineInputParameters( aEngine );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
		}
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
		#endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
        #region API
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
        public bool IsCommandLineHandler( string aName )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
            bool ret = ( aName.ToUpper() == KPluginCommandLineName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
            return ret;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
        public int RunCommandLineOperations()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
            UITrace( "[CA Cmd] START " );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
            UITrace( string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
            UITrace( "[CA Cmd] command line: " + System.Environment.CommandLine );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
            UITrace( "[CA Cmd] command wd:   " + System.Environment.CurrentDirectory );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
            UITrace( "[CA Cmd] proc count:   " + System.Environment.ProcessorCount );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
            UITrace( "[CA Cmd] sysdir:       " + System.Environment.SystemDirectory );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
            UITrace( "[CA Cmd] version:      " + System.Environment.Version.ToString() );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
            UITrace( string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
            int error = CAPlugin.KErrCommandLineNone;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
            try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
                // We expect to see an "-input" parameter
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
                string inputFileName = ExtractCommandLineInputParameter( CommandLineArguments );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
                bool generateReport = CheckForReportParameter( CommandLineArguments );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
                iProgressReporter.Enabled = CheckForProgressParameter( CommandLineArguments );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
                iProgressReporter.Detailed = CheckForProgressDetailedParameter(CommandLineArguments);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
                // If no file was found then inputFileName will be an empty string.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
                if ( string.IsNullOrEmpty( inputFileName ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
                    throw new CACmdLineException( "Input file parameter missing", CAPlugin.KErrCommandLinePluginArgumentsMissing );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
                else if ( !FSUtilities.Exists( inputFileName ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
                    throw new CACmdLineException( "Input file not found", CAPlugin.KErrCommandLinePluginArgumentsFileNotFound );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
                else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
                    // Switch off UI output at the debug engine level
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
                    iEngine.DebugEngine.UiMode = TDbgUiMode.EUiDisabled;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
                    // Reading the input file will throw an exception upon error.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
                    // This is caught below and mapped onto an error code. There's nothing
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
                    // else we can do in this situation.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
                    ReadInputFile( inputFileName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
                    // At this point we have enough information to identify the exact total
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
                    // number of progress reporting steps that will follow during the
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
                    // rest of the processing operation.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
                    CalculateNumberOfOperationSteps();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
                    // Next, attempt to prime the crash engine with every source we
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
                    // identified from the input specification. The goal is to
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
                    // create all the needed Crash Item Source objects for each input file.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
                    // Any inputs which we don't support will not have an associated source and
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
                    // will be flagged accordingly within the CACmdLineFileSource object.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
                    TryToPrimeSources();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
                    // Now link the input files with crash source objects
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
                    AssociateInputFilesWithCrashItemSources();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
                    // Next, prime the debug engine will all the debug meta-data inputs.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
                    // Again, individual error messages will be associated with each meta-data
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
                    // input.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
                    //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
                    // We don't need to do this for summary operations
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
                    if ( iInputs.SinkParameters.DetailLevel != CISinkSerializationParameters.TDetailLevel.ESummary )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
                        TryToPrimeDbgEngine();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
                    // Next we print out progress steps for skipped files, because those 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
                    // files are count to total steps.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
                    PrintOutSkippepFiles();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
                    // Next, we invoke the crash engine to process all the crash item sources we
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
                    // created during the prime step. Exceptions are caught and associated 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
                    // messages & diagnostics are created at the input-file level.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
                    TryToIdentifyCrashes();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
                    // Next, we start the output phase. Any 'valid' crash containers are serialized
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
                    // to xml. Any input files which could not be processed have 'dummy' containers
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
                    // created for them, and these are also serialised to 'failed' XML files.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
                    // If the XML Sink plugin is unavailable, then we cannot create any XML output.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
                    // In this situation, we throw an exception which is caught below.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
                    TryToCreateXmlOutput();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
                    // Finally, we want to create the XML manifest/report data, which we'll emit 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
                    // via standard output.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
                    if ( generateReport )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
                        CreateAndEmitXmlReport();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
            catch ( CACmdLineException cmdLineException )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
                error = cmdLineException.ErrorCode;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
                UITrace( "[CA Cmd] " + cmdLineException.Message + " " + cmdLineException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
            catch ( Exception generalException )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
                error = CAPlugin.KErrCommandLineGeneral;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
                UITrace( "[CA Cmd] " + generalException.Message + " " + generalException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
            UITrace( "[CA Cmd] - operation complete: " + error );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
            return error;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
		#region Properties
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
        public string[] CommandLineArguments
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
            get { return iEngine.UIEngine.CommandLineArguments; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
        public CIEngine CrashItemEngine
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
            get { return iEngine.CrashItemEngine; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
        #region Event handlers
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
        private void DbgEngine_EntityPrimingStarted( DbgEngine aEngine, DbgEntity aEntity, object aContext )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
            UITrace( "[CA Cmd] Priming debug meta-data: " + aEntity.FullName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
            iProgressReporter.StepBegin("Priming debug meta-data: " + aEntity.FullName, aEntity.FullName, 100);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
        private void DbgEngine_EntityPrimingProgress( DbgEngine aEngine, DbgEntity aEntity, object aContext )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
            if ( aContext != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
                if ( aContext.GetType() == typeof( int ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
                    int value = (int) aContext;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   200
                    UITrace( "[CA Cmd] Priming debug meta-data progress: {0:d3}% {1}", value, aEntity.FullName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   201
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   202
                    // If reporting progress, then output something so the carbide extension is aware
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   203
                    // of what is going on in the background.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   204
                    iProgressReporter.StepProgress(string.Empty, value, aEntity.FullName);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
        private void DbgEngine_EntityPrimingComplete( DbgEngine aEngine, DbgEntity aEntity, object aContext )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
            iProgressReporter.StepEnd(string.Empty, aEntity.FullName);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
            UITrace( "[CA Cmd] Primed debug meta-data: " + aEntity.FullName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
        private void CrashItemEngine_SourceObserver( CIEngine.TSourceEvent aEvent, CIEngineSource aSource, object aParameter )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
            string msg = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
            switch ( aEvent )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
            case CIEngine.TSourceEvent.EEventSourceStateChanged:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
                if ( aSource.State == CIEngineSource.TState.EStateProcessing )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
                    iProgressReporter.StepBegin("Processing crash file: " + aSource.FileName, aSource.FileName, 100);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
                break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
            case CIEngine.TSourceEvent.EEventSourceReady:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
                iProgressReporter.StepEnd(string.Empty, aSource.FileName);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   229
                break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   230
            case CIEngine.TSourceEvent.EEventSourceProgress:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   231
                if ( aParameter != null && aParameter is int )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   232
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   233
                    iProgressReporter.StepProgress(string.Empty, (int)aParameter, aSource.FileName);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   234
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   235
                break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   236
            default:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
                break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   242
        #region Internal constants
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   243
        private const string KParamReport = "-REPORT";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
        private const string KParamProgress = "-PROGRESS";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   245
        private const string KParamProgressDetailed = "-PROGRESS_DETAILS";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
        private const string KPluginCommandLineName = "CRASH_ANALYSIS";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
        private const string KPluginInputParameter = "-INPUT";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
        private const string KPluginInputFileDocumentRootNode = "crash_analysis";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
        // Step keys for progress reporting
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
        private const string KStepKeyReadingInputXml = "READING_INPUT_XML";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   252
        private const string KStepKeyPrimingSources = "PRIMING_SOURCES";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
        private const string KStepKeyWritingOutputXml = "WRITING_OUTPUT_XML";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
        private const string KStepKeyCategorizingInputFiles = "CATEGORIZING_INPUT_FILES";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   255
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
        #region Internal methods
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
        private string ExtractCommandLineInputParameter( string[] aArgs )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
            string ret = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
            // -nogui -plugin CRASH_ANALYSIS -input d:\ca_fullsummary.xml
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
            for( int i=0; i<aArgs.Length; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
                string cmd = aArgs[ i ].Trim().ToUpper();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
                string nextArg = ( i < aArgs.Length - 1 ? aArgs[ i + 1 ].Trim().ToUpper() : string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
                if ( cmd == KPluginInputParameter && nextArg != string.Empty )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
                    ret = nextArg;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   272
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   273
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   274
            return ret;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   275
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   276
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   277
        private bool CheckForReportParameter( string[] aArgs )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   278
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   279
            bool report = false;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   280
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   281
            string[] args = aArgs;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   282
            for ( int i = 0; i < args.Length; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   283
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   284
                string cmd = args[ i ].Trim().ToUpper();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   285
                string nextArg = ( i < args.Length - 1 ? args[ i + 1 ].Trim().ToUpper() : string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   286
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   287
                try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   288
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   289
                    if ( cmd == KParamReport )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   290
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   291
                        UITrace( "[CA Cmd] XML report requested." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   292
                        report = true;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   293
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   294
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   295
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   296
                catch ( Exception )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   297
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   298
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   299
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   300
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   301
            return report;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   302
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   303
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   304
        private bool CheckForProgressParameter( string[] aArgs )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   305
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   306
            bool report = false;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   307
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   308
            string[] args = aArgs;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   309
            for ( int i = 0; i < args.Length; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   310
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   311
                string cmd = args[ i ].Trim().ToUpper();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   312
                string nextArg = ( i < args.Length - 1 ? args[ i + 1 ].Trim().ToUpper() : string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   313
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   314
                try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   315
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   316
                    if ( cmd == KParamProgress )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   317
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   318
                        UITrace( "[CA Cmd] progress requested." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   319
                        report = true;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   320
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   321
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   322
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   323
                catch ( Exception )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   324
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   325
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   326
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   327
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   328
            return report;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   329
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   330
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   331
        private bool CheckForProgressDetailedParameter(string[] aArgs)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   332
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   333
            bool report = false;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   334
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   335
            string[] args = aArgs;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   336
            for (int i = 0; i < args.Length; i++)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   337
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   338
                string cmd = args[i].Trim().ToUpper();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   339
                string nextArg = (i < args.Length - 1 ? args[i + 1].Trim().ToUpper() : string.Empty);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   340
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   341
                try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   342
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   343
                    if (cmd == KParamProgressDetailed)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   344
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   345
                        UITrace("[CA Cmd] detailed progress requested.");
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   346
                        report = true;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   347
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   348
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   349
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   350
                catch (Exception)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   351
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   352
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   353
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   354
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   355
            return report;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   356
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   357
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   358
        private CISink FindXmlSink()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   359
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   360
            UITrace( "[CA Cmd] FindXmlSink() - START" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   361
            CISink ret = null;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   362
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   363
            CISinkManager sinkManager = iEngine.CrashItemEngine.SinkManager;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   364
            foreach ( CISink sink in sinkManager )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   365
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   366
                UITrace( "[CA Cmd] FindXmlSink() - found sink: " + sink.Name );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   367
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   368
                if ( sink.Name.ToUpper().Contains( "CRASH XML" ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   369
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   370
                    ret = sink;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   371
                    break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   372
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   373
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   374
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   375
            UITrace( "[CA Cmd] FindXmlSink() - END - ret: " + ret );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   376
            return ret;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   377
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   378
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   379
        private void ReadInputFile( string aFileName )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   380
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   381
            UITrace( "[CA Cmd] ReadInputFile() - START - aFileName: " + aFileName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   382
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   383
            iProgressReporter.StepBegin( "Reading XML input file...", KStepKeyReadingInputXml );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   384
            iInputs.Read( aFileName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   385
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   386
            iProgressReporter.PrintProgress( string.Format( "{0} META DATA FILES", iInputs.MetaDataFiles.Count ), 1 );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   387
            iProgressReporter.PrintProgress( string.Format( "{0} CRASH FILES", iInputs.SourceFiles.Count ), 1 );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   388
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   389
            iProgressReporter.StepEnd( "Read XML input file.", KStepKeyReadingInputXml );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   390
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   391
            UITrace( "[CA Cmd] ReadInputFile() - END - read okay: " + aFileName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   392
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   393
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   394
        private void CalculateNumberOfOperationSteps()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   395
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   396
            // We start at one, since reading the input file is the first step
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   397
            int totalStepCount = 1;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   398
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   399
            // 2) Prime sources
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   400
            ++totalStepCount;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   401
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   402
            // 3) Cross reference/associate sources with inputs
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   403
            ++totalStepCount;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   404
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   405
            // 4) Debug meta data priming - one step for each debug meta data entity.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   406
            if ( iInputs.SinkParameters.DetailLevel != CISinkSerializationParameters.TDetailLevel.ESummary )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   407
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   408
                totalStepCount += iInputs.MetaDataFiles.Count;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   409
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   410
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   411
            // 5) Reading source files - one step for each file
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   412
            totalStepCount += iInputs.SourceFiles.Count;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   413
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   414
            // 6) Outputting XML - treated as one entire step, with sub-step progress reporting.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   415
            // We can't do any better than this because the number of XML files depends on the number
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   416
            // of crash containers that are created when the files are read (step 5).
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   417
            ++totalStepCount;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   418
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   419
            // All future operations will include an accurate step number prefix
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   420
            iProgressReporter.TotalNumberOfSteps = totalStepCount;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   421
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   422
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   423
        public void UITrace( string aMessage )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   424
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   425
            iEngine.UIManager.UITrace( aMessage );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   426
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   427
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   428
        public void UITrace( string aFormat, params object[] aParams )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   429
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   430
            string msg = string.Format( aFormat, aParams );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   431
            UITrace( msg );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   432
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   433
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   434
        private void TryToPrimeSources()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   435
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   436
            UITrace( "[CA Cmd] TryToPrimeSources() - START" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   437
            CrashItemEngine.ClearAll();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   438
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   439
            // Prime engine with source files
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   440
            CACmdLineFSEntityList<CACmdLineFileSource> sourceFileNames = iInputs.SourceFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   441
            int count = sourceFileNames.Count;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   442
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   443
            // Emit progress banner
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   444
            iProgressReporter.StepBegin( "Locating crash files...", KStepKeyPrimingSources, count );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   445
            skippedFiles.Clear();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   446
            for ( int i = 0; i < count; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   447
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   448
                CACmdLineFileSource file = sourceFileNames[ i ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   449
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   450
                try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   451
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   452
                    // We prime each file individually. If an exception is thrown then we
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   453
                    // record an appropriate error in the associated file object.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   454
                    UITrace( "[CA Cmd] TryToPrimeSources() - priming: " + file );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   455
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   456
                    bool primeSuccess = CrashItemEngine.Prime( file );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   457
                    if ( primeSuccess == false )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   458
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   459
                        skippedFiles.Add(file.Name);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   460
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   461
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   462
 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   463
                    UITrace( "[CA Cmd] TryToPrimeSources() - primed result: " + primeSuccess );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   464
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   465
                catch ( Exception sourcePrimerException )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   466
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   467
                    file.AddError( "Error Identifying Source Type", "There was an error when attempting to identify the source file type. The file could not be processed." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   468
                    file.AddDiagnostic( "Crash Primer Exception Message", sourcePrimerException.Message );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   469
                    file.AddDiagnostic( "Crash Primer Exception Stack", sourcePrimerException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   470
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   471
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   472
                // Report progress as we work through the sources
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   473
                iProgressReporter.StepProgress(string.Empty, i, KStepKeyPrimingSources);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   474
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   475
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   476
            iProgressReporter.StepEnd( string.Empty, KStepKeyPrimingSources );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   477
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   478
            UITrace( "[CA Cmd] TryToPrimeSources() - END" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   479
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   480
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   481
        private void TryToPrimeDbgEngine()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   482
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   483
            DbgEngine debugEngine = iEngine.DebugEngine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   484
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   485
            Exception primerException = null;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   486
            CACmdLineFSEntityList<CACmdLineFSEntity> metaDataFiles = iInputs.MetaDataFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   487
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   488
            try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   489
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   490
                debugEngine.Clear();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   491
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   492
                foreach ( CACmdLineFSEntity entry in metaDataFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   493
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   494
                    UITrace( "[CA Cmd] Seeding debug meta engine with entry: " + entry.Name );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   495
                    DbgEntity entity = debugEngine.Add( entry.Name );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   496
                    if ( entity != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   497
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   498
                        UITrace( "[CA Cmd] Entry type detected as: [" + entity.CategoryName + "]" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   499
                        entity.Tag = entry;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   500
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   501
                    else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   502
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   503
                        UITrace( "[CA Cmd] Entry not handled: " + entry.Name );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   504
                        entry.AddError( "Meta-Data File Not Supported", "The file \'" + entry.Name + "\' is of unknown origin." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   505
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   506
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   507
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   508
                // Listen to prime events
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   509
                try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   510
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   511
                    UITrace( "[CA Cmd] Starting prime operation... " );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   512
                    debugEngine.EntityPrimingStarted += new DbgEngine.EventHandler( DbgEngine_EntityPrimingStarted );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   513
                    debugEngine.EntityPrimingProgress += new DbgEngine.EventHandler( DbgEngine_EntityPrimingProgress );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   514
                    debugEngine.EntityPrimingComplete += new DbgEngine.EventHandler( DbgEngine_EntityPrimingComplete );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   515
                    debugEngine.Prime( TSynchronicity.ESynchronous );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   516
                    UITrace( "[CA Cmd] Debug meta data priming completed successfully." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   517
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   518
                finally
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   519
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   520
                    debugEngine.EntityPrimingStarted -= new DbgEngine.EventHandler( DbgEngine_EntityPrimingStarted );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   521
                    debugEngine.EntityPrimingProgress -= new DbgEngine.EventHandler( DbgEngine_EntityPrimingProgress );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   522
                    debugEngine.EntityPrimingComplete -= new DbgEngine.EventHandler( DbgEngine_EntityPrimingComplete );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   523
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   524
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   525
            catch ( Exception exception )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   526
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   527
                UITrace( "[CA Cmd] Debug meta data priming exception: " + exception.Message + ", " + exception.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   528
                primerException = exception;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   529
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   530
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   531
            // Go through each debug entity and check it for errors. Add diagnostics
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   532
            // and error messages where appropriate.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   533
            foreach ( DbgEntity entity in debugEngine )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   534
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   535
                string name = entity.FullName;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   536
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   537
                CACmdLineFSEntity file = metaDataFiles[ name ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   538
                file.Clear();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   539
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   540
                if ( entity.PrimerResult.PrimedOkay )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   541
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   542
                    if ( !entity.Exists )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   543
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   544
                        file.AddError( "Meta-Data File Missing", string.Format( "The file \'{0}\' could not be found.", file.Name ) );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   545
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   546
                    else if ( entity.IsUnsupported )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   547
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   548
                        file.AddError( "Meta-Data File Not Supported", string.Format( "The file \'{0}\' is of unknown origin.", file.Name ) );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   549
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   550
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   551
                else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   552
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   553
                    // Add error
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   554
                    file.AddError( "Meta-Data Read Error", entity.PrimerResult.PrimeErrorMessage );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   555
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   556
                    // And diagnostic information
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   557
                    Exception exception = entity.PrimerResult.PrimeException != null ? entity.PrimerResult.PrimeException : primerException;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   558
                    if ( exception != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   559
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   560
                        file.AddDiagnostic( "Meta-Data Exception Message", entity.PrimerResult.PrimeException.Message );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   561
                        file.AddDiagnostic( "Meta-Data Exception Stack", entity.PrimerResult.PrimeException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   562
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   563
                    else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   564
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   565
                        file.AddDiagnostic( "Meta-Data Unknown Failure", "No exception occurred at the primer or entity level?" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   566
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   567
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   568
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   569
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   570
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   571
        private void TryToIdentifyCrashes()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   572
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   573
            Exception crashEngineException = null;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   574
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   575
            try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   576
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   577
                iEngine.CrashItemEngine.SourceObservers += new CIEngine.CIEngineSourceObserver( CrashItemEngine_SourceObserver );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   578
                iEngine.IdentifyCrashes( TSynchronicity.ESynchronous );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   579
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   580
            catch ( Exception exception )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   581
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   582
                crashEngineException = exception;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   583
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   584
            finally
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   585
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   586
                iEngine.CrashItemEngine.SourceObservers -= new CIEngine.CIEngineSourceObserver( CrashItemEngine_SourceObserver );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   587
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   588
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   589
            // Check each source in the engine and create messages based upon it's
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   590
            // state at the end of processing.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   591
            foreach ( CACmdLineFileSource file in iInputs.SourceFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   592
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   593
                if ( file.Source != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   594
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   595
                    CIEngineSource source = file.Source;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   596
                    switch ( source.State )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   597
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   598
                    case CIEngineSource.TState.EStateReady:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   599
                        // Success case - the source resulted in the creation of at least one container
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   600
                        file.AddDiagnostic( "Source Read Successfully", string.Format( "{0} crash container(s) created", source.ContainerCount ) );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   601
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   602
                    case CIEngineSource.TState.EStateReadyNoItems:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   603
                        file.AddWarning( "Source File Contains No Crashes", "The input data was read successfully but contains no crash information." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   604
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   605
                    case CIEngineSource.TState.EStateReadyCorrupt:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   606
                        file.AddError( "Source File is Corrupt", "The input data is invalid or corrupt." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   607
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   608
                    case CIEngineSource.TState.EStateUninitialised:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   609
                        file.AddError( "Source File not Read", "The input data was never read." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   610
                        file.AddDiagnostic( "Source State Invalid", "Source is still in unitialised state, even though reading is complete?" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   611
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   612
                    case CIEngineSource.TState.EStateProcessing:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   613
                        file.AddDiagnostic( "Source State Invalid", "Source is still in processing state, even though reading is complete?" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   614
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   615
                    default:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   616
                        break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   617
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   618
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   619
                else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   620
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   621
                    file.AddError( "File is Not Supported", "There file type is not recognized and was not processed." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   622
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   623
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   624
                // Add in details of any exception
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   625
                if ( crashEngineException != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   626
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   627
                    file.AddDiagnostic( "Crash Identification Exception Message", crashEngineException.Message );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   628
                    file.AddDiagnostic( "Crash Identification Exception Stack", crashEngineException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   629
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   630
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   631
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   632
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   633
        private void TryToCreateXmlOutput()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   634
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   635
            CACmdLineFSEntityList<CACmdLineFileSource> inputFiles = iInputs.SourceFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   636
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   637
            CISink xmlSink = FindXmlSink();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   638
            if ( xmlSink == null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   639
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   640
                throw new CACmdLineException( "XML Output Plugin Not Available", CAPlugin.KErrCommandLinePluginSinkNotAvailable );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   641
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   642
  
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   643
            CACmdLineFSEntityList<CACmdLineFileSource> sourceFileNames = iInputs.SourceFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   644
            int count = sourceFileNames.Count;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   645
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   646
            // Emit progress banner
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   647
            iProgressReporter.StepBegin( "Creating crash XML content...", KStepKeyWritingOutputXml, count );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   648
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   649
            for ( int i = 0; i < count; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   650
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   651
                 CACmdLineFileSource file = sourceFileNames[ i ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   652
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   653
                // If the file has a corresponding source then we know that crash item recognised it.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   654
                if ( file.Source == null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   655
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   656
                    // File is not supported by crash item engine. Create dummy container which we'll
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   657
                    // serialize below.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   658
                    CACmdLineSource cmdLineSource = new CACmdLineSource( file.File );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   659
                    CIContainer failedContainer = CIContainer.NewErrorContainer( CrashItemEngine, cmdLineSource );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   660
                    file.Add( failedContainer );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   661
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   662
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   663
                // We copy and remove all the file-level messages. These will be added to the container
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   664
                // (where appropriate) or then to an output entry otherwise.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   665
                CACmdLineMessage[] fileMessages = file.ToArray();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   666
                file.Clear();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   667
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   668
                // At this point, the input file is guaranteed to have associated containers. Either
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   669
                // valid ones (created by crash item engine) or a single 'FAILED' one which we just 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   670
                // added above.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   671
                foreach ( CIContainer container in file.Containers )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   672
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   673
                    // Firstly, add any meta-data errors/messages/warnings to this container
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   674
                    // as crash item message entries
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   675
                    AddMetaDataMessagesToContainer( container );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   676
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   677
                    // Now we can try to serialize the container to XML. This method will
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   678
                    // not throw an exception.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   679
                    //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   680
                    // If the operation succeeds, then the input file will have an associated
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   681
                    // container object (and associated xml output file name) and we need not
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   682
                    // do anymore.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   683
                    //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   684
                    // If it fails, then the input file will not be assigned the container
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   685
                    // object and therefore, later on, we'll invoke the XML Sink directly to 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   686
                    // create a stub 'FAILED' XML output file.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   687
                    TryToCreateXmlOutput( xmlSink, container, file, fileMessages );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   688
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   689
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   690
                // Report progress as we work through the sources
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   691
                iProgressReporter.StepProgress(string.Empty, i, KStepKeyWritingOutputXml);
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   692
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   693
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   694
            iProgressReporter.StepEnd( string.Empty, KStepKeyWritingOutputXml );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   695
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   696
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   697
        private void TryToCreateXmlOutput( CISink aXmlSink, CIContainer aContainer, CACmdLineFileSource aFile, CACmdLineMessage[] aMessagesToAdd )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   698
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   699
            UITrace( "[CA Cmd] TryToCreateXmlOutput() - START - container source: {0}", aContainer.Source.MasterFileName );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   700
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   701
            // By the time we are outputting a container, there should no longer be any messages
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   702
            // associated with the file.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   703
            System.Diagnostics.Debug.Assert( aFile.Count == 0 );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   704
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   705
            // Check whether the file contained any errors or 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   706
            // messages of it own.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   707
            if ( aMessagesToAdd.Length > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   708
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   709
                // Copy warnings, messages and errors into crash item container.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   710
                // Diagnostic messages are not copied.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   711
                CACmdLineFSEntity.CopyMessagesToContainer( aMessagesToAdd, aContainer );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   712
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   713
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   714
            // This is where we will record the output attempt
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   715
            CACmdLineFileSource.OutputEntry outputEntry = null;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   716
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   717
            try
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   718
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   719
                // Finish preparing the sink parameters
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   720
                CISinkSerializationParameters sinkParams = iInputs.SinkParameters;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   721
                sinkParams.Container = aContainer;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   722
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   723
                // Perform serialization
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   724
                UITrace( "[CA Cmd] TryToCreateXmlOutput() - serializing..." );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   725
                object output = aXmlSink.Serialize( sinkParams );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   726
                UITrace( "[CA Cmd] TryToCreateXmlOutput() - serialization returned: " + output );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   727
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   728
                if ( aFile != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   729
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   730
                    // Create new output
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   731
                    string outputFileName = output is string ? (string) output : string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   732
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   733
                    // Save output file name
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   734
                    outputEntry = aFile.AddOutput( aContainer, outputFileName, TOutputStatus.ESuccess );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   735
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   736
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   737
                // Merge in any diagnostic messages that were left into the output entry.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   738
                // This ensure we output diagnostics in the final manifest data.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   739
                outputEntry.AddRange( aMessagesToAdd, CACmdLineMessage.TType.ETypeDiagnostic );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   740
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   741
            catch ( Exception outputException )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   742
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   743
                UITrace( "[CA Cmd] TryToCreateXmlOutput() - outputException.Message:    " + outputException.Message );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   744
                UITrace( "[CA Cmd] TryToCreateXmlOutput() - outputException.StackTrace: " + outputException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   745
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   746
                if ( aFile != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   747
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   748
                    // Something went wrong with XML serialisation for the specified container.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   749
                    outputEntry = aFile.AddOutput( aContainer, string.Empty, TOutputStatus.EFailed );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   750
                    //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   751
                    outputEntry.AddError( "Could not Create XML", "XML output could not be created" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   752
                    outputEntry.AddDiagnostic( "XML Sink Exception Message", outputException.Message );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   753
                    outputEntry.AddDiagnostic( "XML Sink Exception Stack", outputException.StackTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   754
                    
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   755
                    // Since we didn't manage to sink the container to XML successfully, we must
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   756
                    // make sure we don't lose any associated messages from the original file. 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   757
                    // Merge these into the output entry also.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   758
                    outputEntry.AddRange( aMessagesToAdd );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   759
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   760
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   761
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   762
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   763
        private void CreateAndEmitXmlReport()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   764
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   765
            CACmdLineManifestWriter writer = new CACmdLineManifestWriter( iInputs.SourceFiles );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   766
            string xml = writer.Create();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   767
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   768
            using( StringReader reader = new StringReader( xml ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   769
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   770
                string line = reader.ReadLine();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   771
                while ( line != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   772
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   773
                    System.Console.WriteLine( line );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   774
                    line = reader.ReadLine();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   775
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   776
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   777
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   778
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   779
        private void AssociateInputFilesWithCrashItemSources()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   780
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   781
            CACmdLineFSEntityList<CACmdLineFileSource> sourceFileNames = iInputs.SourceFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   782
            CIEngineSourceCollection sources = iEngine.CrashItemEngine.Sources;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   783
            int count = sources.Count;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   784
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   785
            // Emit progress banner
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   786
            iProgressReporter.StepBegin( "Categorizing files...", KStepKeyCategorizingInputFiles, count );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   787
            
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   788
            // Check each source in the engine and try to map it back onto an input source
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   789
            // file name. The goal is to identify input files which have no corresponding crash engine
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   790
            // source. These files are unsupported.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   791
            for( int i=0; i<count; i++ )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   792
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   793
                CIEngineSource source = sources[ i ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   794
                string sourceFileName = source.FileName;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   795
                
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   796
                // Try to match an input file with a given source object
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   797
                CACmdLineFileSource inputFile = sourceFileNames[ sourceFileName ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   798
                if ( inputFile != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   799
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   800
                    inputFile.Source = source;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   801
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   802
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   803
                // Report progress as we work through the sources
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   804
                iProgressReporter.StepProgress( string.Empty, i, KStepKeyCategorizingInputFiles );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   805
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   806
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   807
            iProgressReporter.StepEnd( string.Empty, KStepKeyCategorizingInputFiles );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   808
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   809
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   810
        private void PrintOutSkippepFiles()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   811
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   812
            if ( skippedFiles.Count > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   813
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   814
                foreach ( string skippedFile in skippedFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   815
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   816
                    iProgressReporter.StepBegin( "Skipped non-crash file: " + skippedFile, skippedFile, 100 );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   817
                    iProgressReporter.StepEnd( "", skippedFile );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   818
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   819
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   820
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   821
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   822
        private void AddMetaDataMessagesToContainer( CIContainer aContainer )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   823
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   824
            // All meta-data errors, warnings & messages are added as 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   825
            // children of the container.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   826
            CACmdLineFSEntityList<CACmdLineFSEntity> metaDataFiles = iInputs.MetaDataFiles;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   827
            foreach ( CACmdLineFSEntity file in metaDataFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   828
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   829
                file.CopyMessagesToContainer( aContainer );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   830
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   831
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   832
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   833
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   834
        #region Data members
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   835
        private readonly CAPluginCrashAnalysis iEngine;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   836
        private readonly CACmdLineInputParameters iInputs;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   837
        private CACmdLineProgressReporter iProgressReporter = new CACmdLineProgressReporter();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   838
        List<string> skippedFiles = new List<string>();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   839
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   840
	}
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   841
}