crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/containers/OstTrace.java
author Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
Tue, 24 Aug 2010 14:01:48 +0300
changeset 16 72f198be1c1d
parent 4 615035072f7e
permissions -rw-r--r--
Crash Analyser Carbide Extension 1.4.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     1
/*
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     8
*
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    11
*
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    12
* Contributors:
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    13
*
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    14
* Description:
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    15
*
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    16
*/
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    17
package com.nokia.s60tools.crashanalyser.containers;
4
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    18
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    19
import java.io.BufferedWriter;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    20
import java.io.IOException;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    21
import java.util.ArrayList;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    22
import java.util.List;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    23
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    24
import org.w3c.dom.Element;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    25
import org.w3c.dom.Node;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    26
import org.w3c.dom.NodeList;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    27
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    28
public final class OstTrace {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    29
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    30
	private List<OstTraceLine> ostTraces;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    31
	
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    32
	/**
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    33
	 * Private constructor.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    34
	 * @param traceLines Trace lines.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    35
	 */
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    36
	private OstTrace(List<OstTraceLine> traceLines) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    37
		ostTraces = traceLines;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    38
	}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    39
	
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    40
	/**
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    41
	 * Writes traces in to a buffer (e.g. a text file)
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    42
	 * @param out where to write
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    43
	 * @throws IOException
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    44
	 */
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    45
	public void writeTo(BufferedWriter out) throws IOException {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    46
		writeLine(out,"");
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    47
		writeLine(out, "OST TRACE LOG:");
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    48
		writeLine(out, "-----------------");
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    49
		// if there are any events
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    50
		if (ostTraces != null && !ostTraces.isEmpty()) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    51
			// print events
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    52
			for (OstTraceLine traceLine : ostTraces) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    53
				String format = "%s : %s : %s : %s : %s : %s : %s : %s : %s : %s";
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    54
				String line = String.format(format, traceLine.getTimestamp(), traceLine.getTraceText(), 
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    55
						traceLine.getFile(), traceLine.getLineNumber(), traceLine.getType(), 
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    56
						traceLine.getContextId(), traceLine.getPrefix(),
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    57
						traceLine.getComponent(), traceLine.getGroup(), traceLine.getId());
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    58
				writeLine(out, line);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    59
			}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    60
		}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    61
	}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    62
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    63
	/**
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    64
	 * Writes given line plus a line break.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    65
	 * @param out where to write
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    66
	 * @param line what to write
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    67
	 * @throws IOException
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    68
	 */
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    69
	void writeLine(BufferedWriter out, String line) throws IOException {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    70
		out.write(line);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    71
		out.newLine();
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    72
	}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    73
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    74
	/**
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    75
	 * Reads OST traces from an XML element
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    76
	 * @param elementSegTraces seg_traces tag
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    77
	 * @return a created OstTrace class or null
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    78
	 */
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    79
	public static OstTrace read(Element elementSegOstTrace) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    80
		List<OstTraceLine> traces = new ArrayList<OstTraceLine>();
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    81
		try {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    82
			
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    83
			// get all trace nodes
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    84
			NodeList children = elementSegOstTrace.getChildNodes();
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    85
			if (children != null && children.getLength() > 0) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    86
				// go through all line nodes
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    87
				for (int i = 0; i < children.getLength(); i++) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    88
					Node traceNode = children.item(i);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    89
					OstTraceLine traceLine = OstTraceLine.read(traceNode);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    90
					if(traceLine != null) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    91
						traces.add(traceLine);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    92
					}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    93
				}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    94
			}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    95
			
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    96
		} catch (Exception e) {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    97
			// Do nothing.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    98
		}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
    99
		return new OstTrace(traces);
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   100
	}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   101
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   102
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   103
	/**
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   104
	 * Returns the trace lines.
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   105
	 * @return Trace lines
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   106
	 */
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   107
	public List<OstTraceLine> getTraces() {
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   108
		return ostTraces;
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   109
	}
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff changeset
   110
}