trace/traceanalyser/com.nokia.s60tools.traceanalyser/src/com/nokia/s60tools/traceanalyser/model/Engine.java
changeset 9 14dc2103a631
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/traceanalyser/com.nokia.s60tools.traceanalyser/src/com/nokia/s60tools/traceanalyser/model/Engine.java	Wed Jun 23 13:57:56 2010 +0300
@@ -0,0 +1,314 @@
+/*
+* 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.model;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+
+
+import com.nokia.s60tools.traceanalyser.containers.RuleInformation;
+import com.nokia.s60tools.traceanalyser.export.ITraceAnalyserRuleType;
+import com.nokia.s60tools.traceanalyser.export.RuleEvent;
+import com.nokia.s60tools.traceanalyser.export.TraceAnalyserRule;
+import com.nokia.s60tools.traceanalyser.interfaces.ITraceAnalyserFileObserver;
+import com.nokia.s60tools.traceanalyser.plugin.TraceAnalyserPlugin;
+import com.nokia.s60tools.traceanalyser.ui.views.MainView;
+
+/**
+ * class engine.
+ * Engine of Trace Analyser extension.
+ */
+
+public class Engine implements ITraceAnalyserFileObserver {
+	
+	/* Fail Log Manager */
+	private FailLogManager failLogManager;
+	
+	/* Rule Manager */
+	private RuleManager ruleManager;	
+	
+	/* Trace Listener */
+	private TraceListener traceListener;
+	
+	/* list of rule types */
+	ArrayList<ITraceAnalyserRuleType> ruleTypes;
+	
+	/* Main view */
+	MainView mainView;
+	
+	/**
+	 * Engine.
+	 * constructor.
+	 */
+	public Engine(){
+		
+		// Get rule types
+		ruleTypes = new ArrayList<ITraceAnalyserRuleType>();
+		getRuleTypeArray();
+		
+		// create fail log manager
+		failLogManager = new FailLogManager(this);
+		
+		// create rule manager
+		ruleManager = new RuleManager(this, ruleTypes);
+		
+		// create trace listener
+		traceListener = new TraceListener(this);
+		
+		// refresh fail log and rule information.
+		failLogManager.refresh();
+		ruleManager.refresh();
+	}
+
+	/**
+	 * setMainView.
+	 * @param mainView main view.
+	 */
+	public void setMainView(MainView mainView){
+		this.mainView = mainView;
+	}
+
+
+	/**
+	 * getRuleArray.
+	 * Searches for rule type plug-ins and creates rule array from them.
+	 */
+	private void getRuleTypeArray(){
+
+		final String EXTENSION_TRACE_ANALYSER_RULE = "traceanalyserrule"; //$NON-NLS-1$
+
+		try {
+			IExtensionRegistry er = Platform.getExtensionRegistry();
+			IExtensionPoint ep = 
+				er.getExtensionPoint(TraceAnalyserPlugin.PLUGIN_ID, EXTENSION_TRACE_ANALYSER_RULE);
+			IExtension[] extensions = ep.getExtensions();
+
+			// if plug-ins were found.
+			if (extensions != null && extensions.length > 0) {
+				
+				// read all found rules
+				for (int i = 0; i < extensions.length; i++) {
+					IConfigurationElement[] ce = extensions[i].getConfigurationElements();
+					if (ce != null && ce.length > 0) {
+						try {
+							ITraceAnalyserRuleType provider = (ITraceAnalyserRuleType)ce[0].createExecutableExtension("class");
+							if (provider != null) {
+								ruleTypes.add(provider);
+							}
+						} catch (Exception e) {
+							e.printStackTrace();
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * getFailLog
+	 * @return fail log
+	 */
+	public RuleEvent[] getFailLog(){
+		return failLogManager.getTraceAnalyserFailLog();
+	}
+	
+	/**
+	 * refreshFailLog.
+	 * Refreshes Fail log
+	 */
+	public void refreshFailLog(){
+		failLogManager.refresh();
+	}
+	
+	/**
+	 * clearFailLog.
+	 * Clears fail log.
+	 */
+	public void clearFailLog(){
+		failLogManager.clearLog();
+	}
+	
+	/**
+	 * addFailLogItem.
+	 * @param item, new fail log item.
+	 */
+	public void addFailLogItem(RuleEvent item){
+		failLogManager.addItem(item);
+		if(mainView != null){
+			mainView.blinkIcon();
+		}
+	}
+
+	/**
+	 * stop.
+	 * Stops Trace Analyser Engine.
+	 */
+	public void stop(){
+		failLogManager.saveLogToFile();
+		ruleManager.saveData();
+		traceListener.stopListening();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see com.nokia.s60tools.traceanalyser.interfaces.ITraceAnalyserFileObserver#failLogUpdated()
+	 */
+	public void failLogUpdated() {
+		if(mainView != null){
+			mainView.failLogUpdated();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see com.nokia.s60tools.traceanalyser.interfaces.ITraceAnalyserFileObserver#rulesUpdated()
+	 */
+	public void rulesUpdated() {
+		TraceAnalyserRule[] rules = ruleManager.getActivatedRules();
+		traceListener.setRules(rules);
+		if(mainView != null){
+			mainView.rulesUpdated();
+		}
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see com.nokia.s60tools.traceanalyser.interfaces.ITraceAnalyserFileObserver#ruleUpdated(java.lang.String)
+	 */
+	public void ruleUpdated(String ruleName) {
+		if(mainView != null){
+			mainView.ruleUpdated(ruleName);
+		}
+	}
+	
+	/**
+	 * refreshRuleList.
+	 * Refreshes rule list. 
+	 */
+	public void refreshRuleList(){
+		ruleManager.refresh();
+	}
+
+	/**
+	 * getRuleInformation.
+	 * @return Trace analyser rules.
+	 */
+	public RuleInformation[] getRuleInformation(){
+		return ruleManager.getRuleInformation();
+	}
+
+	/**
+	 * getRule.
+	 * returns one rule.
+	 * @param ruleName name of the rule that is requested.
+	 * @return rule
+	 */
+	public TraceAnalyserRule getRule(String ruleName){
+		return ruleManager.getRule(ruleName);
+	}
+	
+	/**
+	 * getRuleTypes.
+	 * @return Trace Analyser Rule Types
+	 */
+	public ArrayList<ITraceAnalyserRuleType> getRuleTypes() {
+		return ruleTypes;
+	}
+	
+	/**
+	 * addRule.
+	 * @param newRule new Trace Analyser rule
+	 * @return true if rule was added succesfully.
+	 */
+	public boolean addRule(TraceAnalyserRule newRule){
+		boolean retval = ruleManager.addRule(newRule);
+		traceListener.setRules(ruleManager.getActivatedRules());
+		return retval;
+	}
+	
+	
+	/**
+	 * getTraceListener.
+	 * @return trace listener
+	 */
+	public TraceListener getTraceListener() {
+		return traceListener;
+	}
+
+	/**
+	 * changeRuleaActivation.
+	 * @param ruleName name of the rule
+	 */
+	public void changeRuleaActivation(String ruleName, boolean value){
+		ruleManager.changeRuleActivation(ruleName, value);
+		TraceAnalyserRule[] rules = ruleManager.getActivatedRules();
+		traceListener.setRules(rules);
+	}
+	/**
+	 * removeRule
+	 * @param ruleName rule that should be removed.
+	 * @return true if rule was removed successfully.
+	 */
+	public boolean removeRule(String ruleName){
+		return ruleManager.removeRule(ruleName);
+	}
+	
+	/**
+	 * addRuleEvent.
+	 * @param ruleName name of rule where event is added.
+	 * @param event rule that event is added into.
+	 */
+	public void addRuleEvent(String ruleName, RuleEvent event){
+		ruleManager.addHistoryEvent(ruleName, event);
+	}
+
+	/**
+	 * resets all rules history data.
+	 */
+	public void resetHistory(){
+		ruleManager.clearHistory();
+	}
+	
+	/**
+	 * resets one rules history.
+	 * @param ruleName
+	 */
+	public void resetOneRulesHistory(String ruleName){
+		ruleManager.clearOneRulesHistory(ruleName);
+	}
+	
+	/**
+	 * ruleExists.
+	 * @param ruleName name of the rule
+	 * @return true if rule with that name already exists
+	 */
+
+	public boolean ruleExists(String ruleName){
+		return ruleManager.ruleExists(ruleName);
+	}
+	
+	
+}