crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/files/CrashAnalyserFile.java
changeset 0 5ad7ad99af01
child 4 615035072f7e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/files/CrashAnalyserFile.java	Thu Feb 11 15:06:45 2010 +0200
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.s60tools.crashanalyser.files;
+
+import java.io.File;
+import java.util.Date;
+import org.xml.sax.helpers.DefaultHandler;
+import com.nokia.s60tools.crashanalyser.data.*;
+import java.text.DateFormat;
+
+/**
+ * This is a base class for all Crash Analyser file types. 
+ *
+ */
+public abstract class CrashAnalyserFile extends DefaultHandler{
+
+	// File extensions
+	public static final String OUTPUT_FILE_EXTENSION = "crashxml";
+	public static final String MOBILECRASH_FILE_EXTENSION = "bin";
+	public static final String D_EXC_FILE_EXTENSION = "txt";
+	public static final String TRACE_EXTENSION = "trace";
+	public static final String ELF_CORE_DUMP_FILE_EXTENSION = "elf";
+	public static final String SUMMARY_FILE_EXTENSION = "xml";
+	public static final String EMULATOR_PANIC_EXTENSION = "panicxml";
+	
+	// base data for all crash files
+	protected String filePath = "";
+	protected String time = "";
+	protected String threadName = "";
+	protected String panicCategory = "";
+	protected String fileName = "";
+	protected String created = "";
+	protected String description = "";
+	protected String shortDescription = "";
+	protected String romId = "";
+	protected String panicCode = "";
+	
+	protected ErrorLibrary errorLibrary;
+
+	/**
+	 * Constructor
+	 * @param crashFilePath crash file path
+	 * @param library error library
+	 */
+	protected CrashAnalyserFile(String crashFilePath, ErrorLibrary library) {
+		filePath = crashFilePath;
+		errorLibrary = library;
+	}
+	
+	public abstract String getFileType(); 
+	
+	public String getTime() {
+		return time;
+	}
+	
+	public String getThreadName() {
+		return threadName;
+	}
+	
+	public String getPanicCategory() {
+		return panicCategory;
+	}
+	
+	public String getFileName() {
+		return fileName;
+	}
+	
+	public String getPanicCode() {
+		return panicCode;
+	}
+	
+	public String getCreated() {
+		return created;
+	}
+	
+	public String getDescription() {
+		return description;
+	}
+	
+	public String getShortDescription() {
+		return shortDescription;
+	}
+	
+	public String getRomId() {
+		return romId;
+	}
+	
+	public String getFilePath() {
+		return filePath; 
+	}
+	
+	/**
+	 * Read file name and last modified time
+	 */
+	protected void doRead() {
+		File f = new File(filePath);
+		if (f.exists() && f.isFile()) {
+			Date d = new Date(f.lastModified());
+			created = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(d);
+			fileName = f.getName();
+		} else {
+			filePath = "";
+		}
+	}
+	
+	/**
+	 * Returns the absolute path for a crash file. Given folder can only
+	 * contain one crash file of given extension.
+	 * @param folder from where the file is searched
+	 * @param extension extension of the file
+	 * @return absolute path for a wanted crash file.
+	 */
+	protected static String findFile(String folder, String extension) {
+		String ext = extension;
+		if (!extension.startsWith("."))
+			ext = "." + extension;
+		
+		File cFolder = new File(folder);
+		// given folder is directory and is exists
+		if (cFolder.isDirectory() && cFolder.exists()) {
+			File[] files = cFolder.listFiles();
+			if (files != null) {
+				// go through all files
+				for (int i = 0; i < files.length; i++) {
+					File file = files[i];
+					// return the file which has the given extension
+					if (file.getName().endsWith(ext)) {
+						return file.getAbsolutePath();
+					}
+				}
+			}
+		}
+		
+		return null;
+	}
+}