crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/containers/Stack.java
changeset 4 615035072f7e
parent 0 5ad7ad99af01
child 16 72f198be1c1d
--- a/crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/containers/Stack.java	Tue Feb 23 17:04:33 2010 +0200
+++ b/crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/containers/Stack.java	Tue Apr 20 14:41:43 2010 +0300
@@ -35,6 +35,7 @@
 	// XML tags
 	public static final String TAG_ID = "id";
 	public static final String TAG_RANGE = "range";
+	public static final String TAG_HASH = "hash";
 	public static final String TAG_LINK = "link";
 	public static final String TAG_STACK_ENTRY = "stack_entry";
 	public static final String ATTRIBUTE_SEG = "seg";
@@ -46,6 +47,7 @@
 	private final int stackId;
 	private final String stackType;
 	private final String stackRange;
+	private final String stackHash;
 	private final String stackLinkRegister;
 	private final String stackStackPointer;
 	private final String stackProgramCounter;
@@ -66,12 +68,13 @@
 	 * @param data stack entries
 	 * @param cpsrStack defines whether this stack contains cpsr register
 	 */
-	private Stack(int id, String type, String range, String linkRegister, String stackPointer, 
+	private Stack(int id, String type, String range, String hash, String linkRegister, String stackPointer, 
 					String programCounter, boolean containsAccurateStackEntries, List<StackEntry> data,
 					boolean cpsrStack) {
 		stackId = id;
 		stackType = type;
 		stackRange = range;
+		stackHash = hash;
 		stackLinkRegister = linkRegister;
 		stackStackPointer = stackPointer;
 		stackProgramCounter = programCounter;
@@ -112,6 +115,10 @@
 		return stackLinkRegister;
 	}
 	
+	public String getHash() {
+		return stackHash;
+	}
+	
 	/**
 	 * Writes stack data into given buffer (i.e. text file)
 	 * @param out buffer to write to
@@ -125,6 +132,7 @@
 		writeLine(out, "--------");
 		writeLine(out, "Stack Type", stackType);
 		writeLine(out, "Stack Range", stackRange);
+		writeLine(out, "Stack Hash", stackHash);
 		
 		if (stackData != null && !stackData.isEmpty()) {
 			writeLine(out, "");
@@ -207,6 +215,11 @@
 			if (range == null)
 				range = "";
 			
+			// read defect hash if exists
+			String hash = XmlUtils.getTextValue(elementThreadStack, TAG_HASH);
+			if (hash == null)
+				hash = "";
+
 			// read stack entries
 			List<StackEntry> entries = null;
 			NodeList stackEntries = elementThreadStack.getElementsByTagName(TAG_STACK_ENTRY);
@@ -233,7 +246,7 @@
 				}
 			}
 			
-			return new Stack(id, type, range, linkRegister, stackPointer, programCounter,
+			return new Stack(id, type, range, hash, linkRegister, stackPointer, programCounter,
 								containsAccurateStackEntries, entries, cpsrStack);
 		} catch (Exception e) {
 			return null;