trace/traceanalyser/com.nokia.s60tools.traceanalyser/src/com/nokia/s60tools/traceanalyser/ui/editors/HistoryTableDataSorter.java
author Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
Tue, 24 Aug 2010 14:01:48 +0300
changeset 16 72f198be1c1d
parent 9 14dc2103a631
permissions -rw-r--r--
Crash Analyser Carbide Extension 1.4.0

/*
* 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.traceanalyser.ui.editors;
import org.eclipse.jface.viewers.Viewer;
import com.nokia.s60tools.traceanalyser.export.RuleEvent;
import com.nokia.s60tools.traceanalyser.export.RuleEvent.RuleStatus;
import com.nokia.s60tools.ui.S60ToolsViewerSorter;

/**
 * class HistoryTableDataSorter  
 * Data sorter for Trace Analyser's history view.
 */

public class HistoryTableDataSorter extends S60ToolsViewerSorter {

	/**
	 * Numbers of columns that can be sorted.
	 */
	public static final int STATUS = 1;
	public static final int TIME = 2;
	public static final int VALUE = 3;
	public static final int VIOLATION = 4;
	
	public HistoryTableDataSorter() {
		super();		
		// By default set sort criteria to time
		setSortCriteria(TIME);
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
	 */
	public int compare(Viewer viewer, Object e1, Object e2) {
		
		
		// By default comparison does not do any ordering
		int comparisonResult = 0;
		
		RuleEvent f1 = (RuleEvent) e1;
		RuleEvent f2 = (RuleEvent) e2;
		
		switch (sortCriteria) {

		case STATUS:
			
			if(f1.getStatus() == f2.getStatus()){
				comparisonResult = 0;
			}
			else if(f1.getStatus() == RuleStatus.FAIL){
				comparisonResult = 1;
			}
			else{
				comparisonResult = -1;
			}
			break;
			
		case -1:
		case TIME:
			if(f1.getTime().before(f2.getTime())){
				comparisonResult = 1;
			}
			else{
				comparisonResult = -1;
			}
			break;
			
		case VALUE:
			if(f1.getValue() < f2.getValue()){
				comparisonResult = 1;
			}
			else{
				comparisonResult = -1;
			}
			break;

		case VIOLATION:
			if(f1.getViolation() >  f2.getViolation()){
				comparisonResult = 1;
			}
			else{
				comparisonResult = -1;
			}
			
			break;
			
		default:
			break;
		}
		
		return comparisonResult;
	
	}
	


}