trace/traceanalyser/com.nokia.s60tools.traceanalyser/src/com/nokia/s60tools/traceanalyser/model/TraceListener.java
author Matti Laitinen <matti.t.laitinen@nokia.com>
Wed, 23 Jun 2010 13:57:56 +0300
changeset 9 14dc2103a631
permissions -rw-r--r--
TraceAnalyser 1.0.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description: 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
package com.nokia.s60tools.traceanalyser.model;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
import com.nokia.s60tools.traceanalyser.export.RuleEvent;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
import com.nokia.s60tools.traceanalyser.export.TraceAnalyserRule;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
import com.nokia.s60tools.traceanalyser.export.RuleEvent.RuleStatus;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
import com.nokia.traceviewer.api.DPLocation;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
import com.nokia.traceviewer.api.TraceViewerAPI;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
import com.nokia.traceviewer.api.TraceViewerAPI.TVAPIError;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
import com.nokia.traceviewer.engine.TraceProperties;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
import com.nokia.traceviewer.engine.dataprocessor.DataProcessor;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
 * class TraceListener.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
 * Class that is responsible for listening to trace.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
public class TraceListener implements DataProcessor {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
	/* Trace Analyser engine */ 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
	Engine engine;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
	/* Rule array */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
	TraceAnalyserRule[] rules = null;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
	 * TraceListener.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
	 * constructor.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
	 * @param engine Trace Analyser Engine.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
	public TraceListener(Engine engine){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
		this.engine = engine;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
		//Add DataProcessor to TraceViewer
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
		TVAPIError error = TVAPIError.NONE;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
		error = TraceViewerAPI.addDataProcessor(this, DPLocation.AFTER_VIEW, 50); // CodForChk_Dis_Magic
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
		// Check error code
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
		if( error != TVAPIError.NONE ){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
			System.out.println("Unable to add dataprocessor to TraceViewer");
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
	 * stopListening.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
	 * stops listening to trace.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
	public void stopListening(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
		//Add DataProcessor to TraceViewer
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
		TVAPIError error = TVAPIError.NONE;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
		error = TraceViewerAPI.removeDataProcessor(this);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
		// Check error code
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
		if( error != TVAPIError.NONE ){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
			System.out.println("Unable to remove dataprocessor from TraceViewer");
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
	/*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
	 * (non-Javadoc)
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
	 * @see com.nokia.traceviewer.engine.dataprocessor.DataProcessor#processData(com.nokia.traceviewer.engine.TraceProperties)
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
	public void processData(TraceProperties traceEvent) {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
		// Make sure that this is not scrolled trace
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
		if(! traceEvent.traceConfiguration.isScrolledTrace()){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
			if(rules != null){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
				
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
				// forwards trace to all rules and if rule some rule event is detected it is sent to engine and fail log.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
				for(TraceAnalyserRule rule:rules){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
					
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
					// Check rule status.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
					RuleEvent event = rule.checkRuleStatus(traceEvent);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
					
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
				
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
					if(event.getStatus() == RuleStatus.FAIL){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
					
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
						// if rule failed, create add item to fail log log item.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
						engine.addFailLogItem(event);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
					}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
					if(event.getStatus() != RuleStatus.NONE){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
						// is some event(either fail or pass) is detected, sent it to engine.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
						engine.addRuleEvent(rule.getName(), event);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
					}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
				}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
	 * setRules.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
	 * @param traceAnalyserRules new rule array.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
	public void setRules(TraceAnalyserRule[] traceAnalyserRules) {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
		this.rules = traceAnalyserRules;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
}