diff -r f65f740e69f9 -r 8e12a575a9b5 sysperfana/memspyext/com.nokia.s60tools.memspy/src/com/nokia/s60tools/memspy/model/MemSpyFileBundle.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysperfana/memspyext/com.nokia.s60tools.memspy/src/com/nokia/s60tools/memspy/model/MemSpyFileBundle.java Wed Apr 21 20:01:08 2010 +0300
@@ -0,0 +1,414 @@
+/*
+* Copyright (c) 2009 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.memspy.model;
+
+
+import java.io.File;
+import java.util.Date;
+
+import com.nokia.s60tools.memspy.files.HeapDumpFile;
+import com.nokia.s60tools.memspy.files.SWMTFile;
+
+/**
+ * MemSpyBundle class bundles up one folder under MemSpy plugin's folder. I.e. one
+ * MemSpyFileBundle is one row in MainView. A Bundle can contain an Heap Dump file or
+ *
+ * SWMT-log file. All of the file listed above are found e.g. from
+ * c:\my_carbide_workspace\.metadata\.plugins\com.nokia.s60tools.memspy\ImportedFiles[bundle folder]
+ *
+ * Bundle can also be a waiting bundle, so that 'Loading files. Please wait' row can be shown in MainView.
+ *
+ */
+public class MemSpyFileBundle {
+
+ public static final int INDEX_FILE_TYPE = 0;
+ public static final int INDEX_FILE_NAME = 1;
+ public static final int INDEX_TIME = 2;
+
+
+ /*
+ * Heap Dump file
+ */
+ private HeapDumpFile heapDumpFile = null;
+
+ /*
+ * SWMT-log file
+ */
+ private SWMTFile swmtFile = null;
+
+ /**
+ * Bundle name for an empty or waiting bundle
+ */
+ private String bundleName = "";
+
+ /**
+ * Folder where all bundle's files can be found from
+ */
+ private String bundleFolder = "";
+
+ /**
+ * If true, bundle is an empty or waiting bundle
+ */
+ private boolean emptyFile = false;
+
+ /**
+ * Used for creating an empty or waiting bundle
+ * @param empty If true
, an empty bundle is created. If false
, a waiting bundle is created.
+ */
+ public MemSpyFileBundle(boolean empty) {
+ if (empty)
+ bundleName = "No Crash Files Found.";
+ else
+ bundleName = "Loading files. Please wait.";
+ emptyFile = true;
+ }
+
+ /**
+ * Creates a bundle from folder
+ * @param folder Bundle folder. Bundle's file will be read from here.
+ */
+ public MemSpyFileBundle( String folder ) {
+ bundleFolder = MemSpyFileOperations.addSlashToEnd(folder);
+
+ heapDumpFile = HeapDumpFile.read( folder );
+ swmtFile = SWMTFile.read( folder );
+
+ }
+
+ /**
+ * Create dummy bundle.
+ * @param folder where files are searched.
+ * @return returns new bundle.
+ */
+ public static MemSpyFileBundle createDummyBundle(String folder) {
+ return new MemSpyFileBundle(folder);
+ }
+
+ /**
+ * MainView can use this to get description for each column in the grid
+ * @param index index of the column
+ * @return value for asked column
+ */
+ public String getText(int index) {
+ String retval = "";
+ switch (index) {
+ case INDEX_TIME:
+ retval = this.getTime();
+ break;
+
+ case INDEX_FILE_NAME:
+ retval = this.getFileName();
+ break;
+
+ case INDEX_FILE_TYPE:
+ retval = this.getFileType();
+ break;
+
+ default:
+ break;
+ }
+
+ return retval;
+ }
+
+ /**
+ * Get file type.
+ * @return type of file.
+ */
+ public String getFileType() {
+ if (emptyFile)
+ return bundleName;
+
+ String retval = "";
+
+ if ( this.heapDumpFile != null) {
+ retval = heapDumpFile.getFileType();
+ }
+
+ if( swmtFile != null ){
+ retval = this.swmtFile.getFileType();
+ }
+
+ return retval;
+ }
+
+
+ /**
+ * Returns the file name for this bundle. File name depends on what types
+ * of files this bundle contains (or if this bundle is an empty or waiting bundle).
+ *
+ * @return the file name for this bundle.
+ */
+ public String getFileName() {
+ if (emptyFile)
+ return bundleName;
+
+ String retval = "";
+
+ if ( this.heapDumpFile != null) {
+ retval = heapDumpFile.getFileName();
+ }
+ else if( swmtFile != null ){
+ retval = this.swmtFile.getFileName();
+ }
+
+ return retval;
+ }
+
+ /**
+ * Get the Cycle number from FileName.
+ * E.g. if file name is: "MemSpy SWMT-log 12.08.2009 08-40-22 Cycle 3"
+ * will return '3'.
+ *
+ * @return the cycle number from file name for this bundle, or -1 if can't found.
+ */
+ public int getCycleNumberFromFileName() {
+ int retval = -1;
+ if (emptyFile){
+ return retval;
+ }
+
+ String fileName = "";
+
+ if ( this.heapDumpFile != null) {
+ fileName = heapDumpFile.getFileName();
+ }
+ else if( swmtFile != null ){
+ fileName = this.swmtFile.getFileName();
+ }
+
+ if(fileName != null && fileName.indexOf(MemSpyFileOperations.CYCLE) != -1){
+ int index = fileName.indexOf(MemSpyFileOperations.CYCLE);
+ String cycle = fileName.substring((index + MemSpyFileOperations.CYCLE.length())).trim();
+ cycle = cycle.substring(0, cycle.indexOf('.'));
+ try {
+ retval = Integer.parseInt(cycle);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ retval = -1;
+ }
+ }
+
+ return retval;
+ }
+
+ /**
+ * Get Time
+ * @return time of file creation.
+ */
+ public String getTime() {
+ if (emptyFile)
+ return "";
+ String retval = "";
+
+ if( heapDumpFile != null ){
+ retval = this.heapDumpFile.getTime();
+ }
+ else if( swmtFile != null ){
+ retval = this.swmtFile.getTime();
+ }
+
+
+ return retval;
+ }
+
+ /**
+ * Get time as long
+ * @return time of file creation as long.
+ */
+ public long getTimeAsLong(){
+ long time = -1;
+ Date date = null;
+ if( heapDumpFile != null ){
+ date = this.heapDumpFile.getDateTime();
+ }
+ else if( swmtFile != null ){
+ date = this.swmtFile.getDateTime();
+ }
+
+ if(date != null){
+ time = date.getTime();
+ }
+
+ return time;
+ }
+
+
+ /**
+ * Get XML file.
+ * @return XML-files path
+ */
+ public String getXMLFilePath() {
+ if( heapDumpFile != null ){
+ return this.heapDumpFile.getXmlPath();
+ }
+ else{
+ return null;
+ }
+ }
+
+ /**
+ * Get file path.
+ * @return Files complete path.
+ */
+ public String getFilePath(){
+ if (emptyFile)
+ return "";
+ String retval = "";
+
+ if( heapDumpFile != null ){
+ retval = this.heapDumpFile.getFilePath();
+ }
+
+ if( swmtFile != null ){
+ retval = this.swmtFile.getFilePath();
+ }
+
+
+ return retval;
+ }
+
+
+ /**
+ * Returns whether this is an empty or waiting bundle.
+ * @return true if bundle is empty or waiting, false if not.
+ */
+ public boolean isEmpty() {
+ return emptyFile;
+ }
+
+
+
+ /**
+ * Returns whether this bundle contains any files.
+ * @return true if bundle contains files, false if not
+ */
+ public boolean hasFiles() {
+ if ( heapDumpFile != null || swmtFile != null )
+ return true;
+
+ return false;
+ }
+
+
+
+ /**
+ * Tests whether this bundle still exists in the drive.
+ * If bundle is empty or waiting, true is always returned.
+ *
+ * @return true
if bundle exists, false
if not.
+ */
+ public boolean exists() {
+ if (isEmpty())
+ return true;
+
+ try {
+ File f = new File(bundleFolder);
+ if (f.isDirectory() && f.exists())
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+
+ return false;
+ }
+
+
+
+ /**
+ * Returns this bundle's folder
+ * @return bundle's folder or empty
+ */
+ protected String getBundleFolder() {
+ return bundleFolder;
+ }
+
+
+ /**
+ * Has this bundle a SWMT log file.
+ * @return true
if this bundle has SWMT-log false
otherwise.
+ */
+ public boolean hasSWMTLogFile(){
+ if( swmtFile != null ){
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Has this bundle a heap dump file
+ * @return true
if this bundle has Heap Dump false
otherwise.
+ */
+ public boolean hasHeapDumpFile(){
+
+ if( heapDumpFile != null ){
+ return true;
+
+ }
+ return false;
+
+ }
+
+ /**
+ * Deletes this bundle. I.e deletes all files under this
+ * bundle's folder and finally deletes the bundle folder.
+ */
+ public boolean delete() {
+ if (!"".equals(bundleFolder)) {
+ return !MemSpyFileOperations.deleteDir( new File( bundleFolder ) );
+ }
+ else{
+ return false;
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString(){
+ if(swmtFile != null){
+ return swmtFile.getFilePath();
+ }
+ else{
+ return null;
+ }
+ }
+
+ /**
+ * Checks if bundles are equal. Two bundles are equal if
+ * their bundleFolder is the same.
+ */
+ public boolean equals(Object other) {
+ if (this == other)
+ return true;
+
+ if (!(other instanceof MemSpyFileBundle))
+ return false;
+
+ MemSpyFileBundle othr = (MemSpyFileBundle)other;
+ if (bundleFolder.compareToIgnoreCase(othr.getBundleFolder()) == 0)
+ return true;
+ return false;
+ }
+
+
+
+}