diff -r f65f740e69f9 -r 8e12a575a9b5 sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/editors/IssuesFilter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/editors/IssuesFilter.java Wed Apr 21 20:01:08 2010 +0300 @@ -0,0 +1,178 @@ +/* +* 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.swmtanalyser.editors; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; + +import com.nokia.s60tools.swmtanalyser.analysers.AnalyserConstants; +import com.nokia.s60tools.swmtanalyser.analysers.ResultElements; +import com.nokia.s60tools.swmtanalyser.dialogs.AdvancedFilterDialog.FilterInput; + +/** + * Customized ViewerFilter for TableViewer in Analysis tab. + * + */ +public class IssuesFilter extends ViewerFilter { + + //Filter text + private String search_key = null; + //Settings selected in the advanced filter options dialog + private FilterInput adv_options = null; + + /** + * Set filter text + * @param value + */ + public void setFilterText(String value) + { + search_key = value; + } + + /** + * Set advanced filter to issues + * @param adv_option + */ + public void setAdvancedSearchOptions(FilterInput adv_option) + { + this.adv_options = adv_option; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + + //If the search is done using the advanced filter options dialog + if(adv_options!=null) + { + int filter_option = adv_options.getName_Filter_option(); + String filter_text = adv_options.getFilter_text(); + List events = new ArrayList(); + if(adv_options.getEvents()!=null) + events = Arrays.asList(adv_options.getEvents()); + + List severities = new ArrayList(); + if(adv_options.getSeverities()!=null) + severities = Arrays.asList(adv_options.getSeverities()); + + int delta_bytes_option = adv_options.getDelta_bytes_option(); + long s1 = adv_options.getStart_size(); + long e1 = adv_options.getEnd_size(); + + int delta_count_option = adv_options.getDelta_count_option(); + long s2 = adv_options.getStart_count(); + long e2 = adv_options.getEnd_count(); + + if(element instanceof ResultElements) + { + ResultElements item = (ResultElements)element; + String item_name = item.getItemName(); + String event = item.getEvent(); + long delta = item.getDeltaValue(); + AnalyserConstants.Priority p = item.getPriority(); + + boolean flag = true; + + if(filter_option == 0 && filter_text!=null && !item_name.toLowerCase().startsWith(filter_text.toLowerCase())) + return false; + if(filter_option == 1 && filter_text!=null && item_name.toLowerCase().indexOf(filter_text.toLowerCase()) == -1) + return false; + if(events.size()>0 && !events.contains(event)) + return false; + if(severities.size()>0 && !severities.contains(p)) + return false; + if(item.getType().compareTo(AnalyserConstants.DeltaType.SIZE)==0) + { + switch (delta_bytes_option) { + case 0: + //flag = flag && true; + break; + case 1: + if(delta < s1 || delta > e1) + return false; + break; + case 2: + if(delta != s1) + return false; + break; + case 3: + if(delta < s1) + return false; + break; + case 4: + if(delta > s1) + return false; + break; + + default: + break; + } + } + else if(item.getType().compareTo(AnalyserConstants.DeltaType.COUNT)==0) + { + switch (delta_count_option) { + case 0: + //flag = flag && true; + break; + case 1: + if(delta < s2 || delta > e2) + return false; + break; + case 2: + if(delta != s2) + return false; + break; + case 3: + if(delta < s2) + return false; + break; + case 4: + if(delta > s2) + return false; + break; + + default: + break; + } + } + + return flag; + } + } + + //If searching is cancelled. + if(search_key == null) + return true; + + //If search is done using the severity dropdown in the Analysis tab. + if(element instanceof ResultElements) + { + ResultElements item = (ResultElements)element; + AnalyserConstants.Priority p = item.getPriority(); + if(p.name().toLowerCase().matches(search_key.toLowerCase())) + return true; + else + return false; + } + return true; + } +}