tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/TraceCompiler.java
changeset 56 aa2539c91954
parent 54 a151135b0cf9
child 60 e54443a6878c
child 62 1c2bb2fc7c87
--- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/TraceCompiler.java	Wed Sep 29 17:45:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,758 +0,0 @@
-/*
- * Copyright (c) 2010 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:
- *
- * TraceCompiler command-line main class
- *
- */
-package com.nokia.tracecompiler;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import com.nokia.tracecompiler.document.FileDocumentMonitor;
-import com.nokia.tracecompiler.document.StringDocumentFactory;
-import com.nokia.tracecompiler.engine.TraceCompilerEngineEvents;
-import com.nokia.tracecompiler.engine.TraceCompilerEngineGlobals;
-import com.nokia.tracecompiler.engine.TraceCompilerEngineInterface;
-import com.nokia.tracecompiler.engine.TraceLocationList;
-import com.nokia.tracecompiler.engine.project.ProjectEngine;
-import com.nokia.tracecompiler.engine.utils.TraceUtils;
-import com.nokia.tracecompiler.model.TraceCompilerException;
-import com.nokia.tracecompiler.model.TraceModel;
-import com.nokia.tracecompiler.plugin.TraceCompilerPlugin;
-import com.nokia.tracecompiler.project.GroupNames;
-import com.nokia.tracecompiler.source.SourceConstants;
-import com.nokia.tracecompiler.source.SymbianConstants;
-import com.nokia.tracecompiler.utils.DocumentFactory;
-import com.nokia.tracecompiler.utils.TraceCompilerVersion;
-
-/**
- * TraceCompiler command-line main class
- * 
- */
-public class TraceCompiler {
-	
-	private static String LINE_SEPARATOR =  System.getProperty("line.separator"); //$NON-NLS-1$
-
-	/**
-	 * Index of third character
-	 */
-	private static final int INDEX_OF_THIRD_CHARACTER = 2;
-
-	/**
-	 * Index of first character
-	 */
-	private static final int INDEX_OF_FIRST_CHARACTER = 0;
-
-	/**
-	 * Version option
-	 */
-	private static final String VERSION_OPTION = "--version"; //$NON-NLS-1$
-	private static final String LEGACY_VERSION_OPTION = "-version"; //$NON-NLS-1$
-	private static final String VERSION_OPTION_SF = "-v"; //$NON-NLS-1$
-	/**
-	 * Version option instruction text
-	 */
-	private static final String VERSION_OPTION_INSTRUCTION_TEXT = "print TraceCompiler version"; //$NON-NLS-1$
-
-	
-	/**
-	 * help option
-	 */
-	private static final String HELP_OPTION = "--help"; //$NON-NLS-1$
-	private static final String HELP_OPTION_SF = "-h"; //$NON-NLS-1$
-	private static final String HELP_OPTION_INSTRUCTION_TEXT = "print help"; //$NON-NLS-1$
-	
-	/**
-	 * Verbose option
-	 */
-	private static final String VERBOSE_OPTION = "--verbose"; //$NON-NLS-1$
-	private static final String VERBOSE_OPTION_SF = "-vb"; //$NON-NLS-1$
-	/**
-	 * Verbose option instruction text
-	 */
-	private static final String VERBOSE_OPTION_INSTRUCTION_TEXT = "print info messages."; //$NON-NLS-1$
-
-	/**
-	 * keep going option
-	 */
-	private static final String STOP_ON_ERROR_OPTION = "--stopOnError"; //$NON-NLS-1$
-	private static final String STOP_ON_ERROR_OPTION_SF = "-soe"; //$NON-NLS-1$
-	/**
-	 * keep going option instruction text
-	 */
-	private static final String STOP_ON_ERROR_OPTION_INSTRUCTION_TEXT = "On error, stop at the end of the compilation unit."; //$NON-NLS-1$
-
-	
-
-	/**
-	 * Version text
-	 */
-	private static final String VERSION_TEXT = "TraceCompiler version "; //$NON-NLS-1$
-
-	/**
-	 * Option instruction text
-	 */
-	private static final String OPTION_INSTRUCTION_TEXT = "Options:"; //$NON-NLS-1$
-
-	
-	private static final String USAGE = "Usage: " + LINE_SEPARATOR + //$NON-NLS-1$
-										"tracecompiler [options] Component_UID [Component_name MMP_path source_file...]" + LINE_SEPARATOR + //$NON-NLS-1$
-										"\t" + OPTION_INSTRUCTION_TEXT + LINE_SEPARATOR + //$NON-NLS-1$
-										"\t" + HELP_OPTION_SF  + ", " + HELP_OPTION + ", " + HELP_OPTION_INSTRUCTION_TEXT + LINE_SEPARATOR +   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-										"\t" + VERSION_OPTION_SF + ", " + VERSION_OPTION + ", " + LEGACY_VERSION_OPTION + "\t" +  VERSION_OPTION_INSTRUCTION_TEXT + LINE_SEPARATOR +   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$
-										"\t" + VERBOSE_OPTION_SF + ", " + VERBOSE_OPTION + "\t\t" + VERBOSE_OPTION_INSTRUCTION_TEXT + LINE_SEPARATOR +  //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-										"\t" + STOP_ON_ERROR_OPTION_SF + ", " + STOP_ON_ERROR_OPTION + "\t" + STOP_ON_ERROR_OPTION_INSTRUCTION_TEXT + LINE_SEPARATOR;  //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-
-
-
-	/**
-	 * End of source files tag
-	 */
-	private static final String ENDOFSOURCEFILES = "*ENDOFSOURCEFILES*"; //$NON-NLS-1$
-	
-
-	/**
-	 * Offset to UID
-	 */
-	private static final int COMPONENT_UID_ARG = 0;
-
-	/**
-	 * Offset to component name
-	 */
-	private static final int COMPONENT_NAME_ARG = 1;
-
-	/**
-	 * Offset to MMP path
-	 */
-	private static final int COMPONENT_MMP_PATH_ARG = 2; // CodForChk_Dis_Magic
-
-	/**
-	 * Offset to source files
-	 */
-	private static final int SOURCE_FILE_START_OFFSET = 3; // CodForChk_Dis_Magic
-
-	/**
-	 * Number of arguments
-	 */
-	private static final int MANDATORY_ARGUMENT_COUNT = 1;
-
-	/**
-	 * MMP file extension
-	 */
-	private static final String MMP = ".mmp"; //$NON-NLS-1$
-
-	/**
-	 * Underscore character
-	 */
-	private static final String UNDERSCORE = "_"; //$NON-NLS-1$
-
-	/**
-	 * Name of the trace folder that include component name
-	 */
-	private String traceFolderName;
-
-	/**
-	 * Decode plugins path
-	 */
-	private String DECODE_PLUGINS_PATH = "com/nokia/tracecompiler/decodeplugins"; //$NON-NLS-1$
-
-	/**
-	 * Decode plugin name tag
-	 */
-	private String DECODE_PLUGIN_NAME_TAG = "<DECODE_PLUGIN_NAME>"; //$NON-NLS-1$
-
-	/**
-	 * Decode plugin class name tag
-	 */
-	private String DECODE_PLUGIN_CLASS_NAME_TAG = "<DECODE_PLUGIN_CLASS_NAME>"; //$NON-NLS-1$
-
-	/**
-	 * Decode plugin engine class name template
-	 */
-	private String ENGINE_CLASS_NAME_TEMPLATE = DECODE_PLUGIN_NAME_TAG
-			+ "Engine"; //$NON-NLS-1$
-
-	/**
-	 * Decode plugin engine file name template
-	 */
-	private String ENGINE_FILE_NAME_TEMPLATE = DECODE_PLUGIN_CLASS_NAME_TAG
-			+ ".class"; //$NON-NLS-1$
-
-	/**
-	 * Decode plugins class template
-	 */
-	private String CLASS_TEMPLATE = "com.nokia.tracecompiler.decodeplugins." + DECODE_PLUGIN_NAME_TAG + "." + DECODE_PLUGIN_CLASS_NAME_TAG; //$NON-NLS-1$ //$NON-NLS-2$	
-
-	/**
-	 * Main function
-	 * 
-	 * @param args
-	 *            the command line arguments
-	 */
-	public static void main(String[] args) {
-		ArrayList<String> list = new ArrayList<String>(Arrays.asList(args));
-		long startTime = System.currentTimeMillis();
-		//create a new session of TraceCompiler
-		TraceCompiler console = new TraceCompiler();
-		
-		try {
-			console.parseCommandLine(list);
-		} catch (Exception e) { //should cover IOException and TraceCompilerIllegalArgumentsException
-			//There is no point to continue if there are problems with the arguments.
-			TraceCompilerLogger.printError(e.getMessage());
-			printUsage();
-			System.exit(1);
-		}
-		
-		boolean error = false;
-		try {
-			if(list.size() != 0) {
-				console.createPlugins();
-				console.start();
-				console.buildTraceFiles();
-				
-			}
-		} catch (Exception e) {
-			if (e instanceof TraceCompilerRootException) {
-				TraceCompilerLogger.printError(e.getMessage()); 
-			} //else the error should have been reported earlier
-			error = true;
-		} finally {
-			try {
-				if (!error) { //check if errors have been logged by EventEngine
-					TraceCompilerEngineEvents events = TraceCompilerEngineGlobals.getEvents();
-					if (events != null && events.hasErrorHappened()) {
-						error = true;
-					}
-				}
-				console.shutdown();
-			} catch (TraceCompilerException e) {
-				error = true;
-			}
-		}
-
-		if (console.componentName != null) {
-			TraceCompilerLogger.printMessage(console.componentName + " took " //$NON-NLS-1$
-					+ (System.currentTimeMillis() - startTime) + " ms"); //$NON-NLS-1$
-		}
-		if (error) {
-			System.exit(1);
-		} else {
-			System.exit(0);
-		}	
-	}
-
-	/**
-	 * With Eclipse, the plug-ins are loaded by Eclipse framework. Here they
-	 * must be manually created and started
-	 */
-	private ArrayList<TraceCompilerPlugin> plugIns = new ArrayList<TraceCompilerPlugin>();
-
-	/**
-	 * Model listener
-	 */
-	private TraceCompilerModelListener modelListener;
-
-	/**
-	 * Name of the component
-	 */
-	private String componentName;
-
-	/**
-	 * UID of the component
-	 */
-	private long componentUID;
-
-	/**
-	 * Component path
-	 */
-	private String componentPath;
-
-	/**
-	 * MMP file path
-	 */
-	private File mmpPath;
-
-	/**
-	 * Constructor
-	 */
-	TraceCompiler() {
-
-		// Creates listeners and preferences
-		modelListener = new TraceCompilerModelListener();
-	}
-
-	/**
-	 * Creates the plug-ins to be registered with TraceCompiler
-	 * @throws TraceCompilerRootException if fail to create a valid plugins
-	 */
-	private void createPlugins() throws TraceCompilerRootException {
-		
-		// Get location of the TraceCompiler
-		URL path = getClass().getProtectionDomain().getCodeSource()
-				.getLocation();
-		String decodePluginsPath = path.getPath();
-
-		// If first character is forward slash and it is located before drive
-		// letter remove it
-		if (decodePluginsPath.charAt(INDEX_OF_FIRST_CHARACTER) == SourceConstants.FORWARD_SLASH_CHAR
-				&& decodePluginsPath.charAt(INDEX_OF_THIRD_CHARACTER) == SourceConstants.COLON_CHAR) {
-			decodePluginsPath = decodePluginsPath.substring(1);
-		}
-		
-		// Concatenate decode plugins path
-		decodePluginsPath = decodePluginsPath.concat(DECODE_PLUGINS_PATH);
-		
-		// Replace slashes with correct separator character
-		decodePluginsPath = decodePluginsPath.replace(
-				SourceConstants.FORWARD_SLASH_CHAR, File.separatorChar);
-		decodePluginsPath = decodePluginsPath.replace(
-				SourceConstants.BACKSLASH_CHAR, File.separatorChar);
-		File decodePluginsDir = new File(decodePluginsPath);
-		String[] decodePlugins = decodePluginsDir.list();
-		if (decodePlugins != null) {
-			for (int i = 0; i < decodePlugins.length; i++) {
-
-				// Get decode plugin name
-				String decodePluginName = decodePlugins[i];
-
-				// Get decode plugin path
-				String decodePluginPath = decodePluginsPath
-						+ File.separatorChar + decodePluginName;
-
-				// Decode plugin must be in own directory
-				Boolean isDirectory = (new File(decodePluginPath))
-						.isDirectory();
-				if (isDirectory) {
-
-					// Construct decode plugin engine class name
-					String engineClassName = ENGINE_CLASS_NAME_TEMPLATE
-							.replaceFirst(DECODE_PLUGIN_NAME_TAG,
-									decodePluginName.substring(0, 1)
-											.toUpperCase()
-											+ decodePluginName.substring(1));
-
-					// Construct decode plugin engine file name
-					String engineFileName = ENGINE_FILE_NAME_TEMPLATE
-							.replaceFirst(DECODE_PLUGIN_CLASS_NAME_TAG,
-									engineClassName);
-					String engineFileFullName = decodePluginPath
-							+ File.separatorChar + engineFileName;
-
-					// Check does engine file exist
-					Boolean exists = (new File(engineFileFullName)).exists();
-					if (exists) {
-						String engineClassFullName = CLASS_TEMPLATE
-								.replaceFirst(DECODE_PLUGIN_NAME_TAG,
-										decodePluginName).replaceFirst(
-										DECODE_PLUGIN_CLASS_NAME_TAG,
-										engineClassName);
-						try {
-							Class<?> engineClass = Class
-									.forName(engineClassFullName);
-							TraceCompilerPlugin engine = (TraceCompilerPlugin) engineClass
-									.newInstance();
-							plugIns.add(engine);
-							TraceCompilerLogger.printInfo("Decode plugin " + engineClassFullName + " added"); //$NON-NLS-1$ //$NON-NLS-2$
-						} catch (Exception e) {
-							String msg = "Decode plugin " + engineClassFullName + " adding failed"; //$NON-NLS-1$ //$NON-NLS-2$
-							throw new TraceCompilerRootException(msg, e); 
-						}
-					} else {
-						String msg = "Decode plugin file " + engineFileFullName + " does not exist"; //$NON-NLS-1$ //$NON-NLS-2$
-						throw new TraceCompilerRootException(msg, null);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Parses the command line
-	 * 
-	 * @param args
-	 *            the arguments
-	 * @throws TraceCompilerRootException if arguments are invalid
-	 * @throws IOException 
-	 */
-	private void parseCommandLine(ArrayList<String> list) throws TraceCompilerIllegalArgumentsException, IOException {
-		TraceCompilerLogger.printInfo("Building traces..."); //$NON-NLS-1$
-		if (list.size() == 0) {
-			printUsage();
-			System.exit(0);
-		}
-		List<String> switches = new ArrayList<String>();
-
-		// version, verbose, keepgoing if available could be anywhere, so process them and remove them from the list
-		for (String element : list) {
-			if (element.equalsIgnoreCase(HELP_OPTION) || element.equalsIgnoreCase(HELP_OPTION_SF)) {
-				printUsage();
-				System.exit(0);
-			}
-			if (element.equalsIgnoreCase(VERBOSE_OPTION) || element.equalsIgnoreCase(VERBOSE_OPTION_SF)) {
-				TraceCompilerGlobals.setVerbose(true);
-				switches.add(element);
-			}
-			if (element.equalsIgnoreCase(LEGACY_VERSION_OPTION) || element.equalsIgnoreCase(VERSION_OPTION) || element.equalsIgnoreCase(VERSION_OPTION_SF)) {
-				TraceCompilerLogger.printMessage(VERSION_TEXT + TraceCompilerVersion.getVersion());
-				System.exit(0);
-			}
-			if (element.equalsIgnoreCase(STOP_ON_ERROR_OPTION) || element.equalsIgnoreCase(STOP_ON_ERROR_OPTION_SF)) {
-				TraceCompilerGlobals.setKeepGoing(false);
-				switches.add(element);
-			}
-		}
-		
-		//remove switches from the list
-		for (String string : switches) {
-			list.remove(string);
-		}
-		
-		switches = null;
-		
-		if (list.size() < MANDATORY_ARGUMENT_COUNT) {
-			throw new TraceCompilerIllegalArgumentsException(Messages.getString("TraceCompiler.invalidTraceCompilerArgumetsExceptionText"), null); //$NON-NLS-1$
-		}
-		
-		
-		//the rest of elements must be in the order COMPONENT_UID, COMPONENT_NAME, COMPONENT_MMP_PATH, source...
-		//COMPONENT_UID must be on the command line, the rest can either be on the command line or stdin
-
-		try {
-			componentUID = Long.parseLong(list.get(COMPONENT_UID_ARG),
-					TraceCompilerConstants.HEX_RADIX);
-			TraceCompilerLogger.printInfo("Component UID: 0x" + Long.toHexString(componentUID)); //$NON-NLS-1$
-
-		} catch (NumberFormatException e) {
-			String msg = Messages.getString("TraceCompiler.componentUidIsNotValidExceptionText") + componentUID; //$NON-NLS-1$
-			throw new TraceCompilerIllegalArgumentsException(msg, null);
-		}
-		if (componentUID > 0) {
-
-			// Arguments are given as a parameter
-			if (list.size() > MANDATORY_ARGUMENT_COUNT + 1) {
-				parseParameters(list);
-
-				// Otherwise, read arguments from STDIN
-			} else {
-				readFromStdin();
-			}
-		} else {
-			String msg = Messages.getString("TraceCompiler.componentUidIsNotValidExceptionText") + componentUID; //$NON-NLS-1$
-			throw new TraceCompilerIllegalArgumentsException(msg, null);
-		}
-	}
-
-
-	private static void printUsage() {
-		TraceCompilerLogger.printMessage(VERSION_TEXT + TraceCompilerVersion.getVersion());
-		TraceCompilerLogger.printMessage(USAGE);
-	}
-
-	/**
-	 * Parses parameters
-	 * 
-	 * @param args
-	 *            the parameters
-	 * @throws TraceCompilerRootException if arguments are not valid
-	 */
-	private void parseParameters(List<String> args) throws TraceCompilerIllegalArgumentsException {
-		//index is safe, already checked by the caller
-		componentName = args.get(COMPONENT_NAME_ARG);
-		traceFolderName = 	TraceCompilerConstants.TRACES_DIRECTORY + UNDERSCORE
-							+ componentName;
-		
-		mmpPath = new File(args.get(COMPONENT_MMP_PATH_ARG));
-
-		if (isMmpValid()) {
-
-			// Move the files from args array to source file list
-				ArrayList<String> sources = new ArrayList<String>();
-				for (int i = 0; i < args.size() - SOURCE_FILE_START_OFFSET; i++) {
-					sources.add(args.get(SOURCE_FILE_START_OFFSET + i));
-				}
-
-				registerFiles(sources);
-		} else {
-			throw new TraceCompilerIllegalArgumentsException(Messages.getString("TraceCompiler.invalidMmpExceptionText") + mmpPath, null); //$NON-NLS-1$
-		}
-		
-	}
-
-	/**
-	 * Read information from STDIN
-	 * @throws IOException if fails to read the input
-	 * @throws TraceCompilerRootException if the list of files is empty
-	 */
-	private void readFromStdin() throws IOException, TraceCompilerIllegalArgumentsException {
-		ArrayList<String> files = new ArrayList<String>();
-
-		// Create reader
-		BufferedReader stdin = new BufferedReader(
-				new InputStreamReader(System.in));
-		
-			int numberOfReceivedLines = 1;
-
-			String line = stdin.readLine();
-						
-			while (line != null) {
-
-				// End of source files received
-				if (line.equals(ENDOFSOURCEFILES)) {
-					break;
-				}
-
-				// Component name
-				if (numberOfReceivedLines == COMPONENT_NAME_ARG) {
-					componentName = line;
-					traceFolderName = TraceCompilerConstants.TRACES_DIRECTORY
-							+ UNDERSCORE + componentName;
-
-					// MMP path
-				} else if (numberOfReceivedLines == COMPONENT_MMP_PATH_ARG) {
-					mmpPath = new File(line);
-					if (!isMmpValid()) {
-						stdin.close();
-						throw new TraceCompilerIllegalArgumentsException(Messages.getString("TraceCompiler.invalidMmpExceptionText") + mmpPath, null); //$NON-NLS-1$
-					}
-
-					// Source files
-				} else {
-					// Add to the files list
-					File file = new File(line);
-					files.add(file.getAbsolutePath());
-				}
-
-				numberOfReceivedLines++;
-
-				// Read new line from STDIN
-				line = stdin.readLine();				
-			}
-		stdin.close();
-		registerFiles(files);
-	}
-
-	/**
-	 * Registers files to document monitor.
-	 * 
-	 * @param sources
-	 *            sources
-	 * @throws TraceCompilerRootException 
-	 */
-	private void registerFiles(ArrayList<String> sources) throws TraceCompilerIllegalArgumentsException {
-
-		if (sources.size() == 0) {
-			throw new TraceCompilerIllegalArgumentsException(Messages.getString("TraceCompiler.noSourceFilesExceptionText"), null); //$NON-NLS-1$
-		}
-		File parent = mmpPath.getParentFile();
-		boolean found = false;
-
-		componentPath = parent.getAbsolutePath();
-
-		ProjectEngine.traceFolderName = TraceCompilerConstants.TRACES_DIRECTORY;
-
-		// Find location of "traces" or "traces_<component name>" -folder. If
-		// "traces" or "traces_<component name>" -folder does not
-		// exist, "traces" -folder will be add to same level than "group" or
-		// "mmpfiles" -folder. If "group" or "mmpfiles" -folder does not exist
-		// then "traces" -folder will be added to same level than source file.
-		while (!found && parent != null) {
-			File[] children = parent.listFiles();
-			if (children != null) {
-				for (int i = 0; i < children.length; i++) {
-					File child = children[i];
-					String childName = child.getName();
-					if (child.isDirectory() && isProjectRoot(childName)) {
-						componentPath = parent.getAbsolutePath();
-						found = true;
-
-						// Check that does subdirectory that name is
-						// "traces_<component name>" exist in this directory. If
-						// it exist use that as traces directory name.
-						for (i = 0; i < children.length; i++) {
-							child = children[i];
-							childName = child.getName();
-							if (child.isDirectory()
-									&& childName
-											.equalsIgnoreCase(traceFolderName)) {
-								ProjectEngine.traceFolderName = traceFolderName;
-								break;
-							}
-						}
-						break;
-					}
-				}
-			}
-
-			if (found == false) {
-				parent = parent.getParentFile();
-			}
-		}
-
-		registerSourceFiles(sources);
-	}
-
-	/**
-	 * Checks if this folder is the project root
-	 * 
-	 * @param name
-	 *            name of the folder
-	 * @return true if this folder is the project root
-	 */
-	private boolean isProjectRoot(String name) {
-		boolean retval = false;
-		if (name.equalsIgnoreCase(traceFolderName)
-				|| name.equalsIgnoreCase(SymbianConstants.GROUP_DIRECTORY)
-				|| name.equalsIgnoreCase(SymbianConstants.MMPFILES_DIRECTORY)
-				|| name
-						.equalsIgnoreCase(TraceCompilerConstants.TRACES_DIRECTORY)) {
-			retval = true;
-		}
-		return retval;
-	}
-
-	/**
-	 * Registers source files
-	 * 
-	 * @param files
-	 */
-	private void registerSourceFiles(ArrayList<String> files) {
-		if (files.size() > 0) {
-			String[] fileArr = new String[files.size()];
-			files.toArray(fileArr);
-
-			// Sets the source files to the TraceCompiler document
-			// factory. It will create a document from each source in the array
-			FileDocumentMonitor.setFiles(fileArr);
-			DocumentFactory.registerDocumentFramework(
-					new FileDocumentMonitor(), StringDocumentFactory.class);
-		}
-	}
-
-	/**
-	 * Initializes TraceCompiler
-	 * @throws TraceCompilerRootException if fail to initialize the plugins
-	 * @throws TraceCompilerException 
-	 */
-	private void start() throws TraceCompilerRootException, TraceCompilerException {
-
-		// Starts TraceCompiler. This is normally called from the Eclipse
-		// plug-in
-		// activator, but in console case that does not exist
-		TraceCompilerEngineGlobals.start();
-				
-		
-		//Reads the GroupId values from opensystemtrace_types.h
-		//If this fails a message is logged and trace compiler stops
-		GroupNames.initialiseGroupName();
-
-		
-		// Registers a view to TraceCompiler
-		TraceCompilerEngineGlobals
-				.setView(new TraceCompilerView(componentPath));
-
-		// Registers all plug-in components
-		for (TraceCompilerPlugin plugin : plugIns) {
-			TraceCompilerEngineGlobals.registerPlugin(plugin);
-		}
-		// Adds a model event listener
-		TraceCompilerEngineGlobals.getTraceModel().addModelListener(
-				modelListener);
-		TraceCompilerEngineGlobals.getTraceModel().addExtensionListener(
-				modelListener);
-		TraceCompilerEngineGlobals.getTraceModel().getExtension(
-				TraceLocationList.class).addLocationListListener(modelListener);
-		TraceCompilerEngineGlobals.getTraceModel().addProcessingListener(modelListener);
-	}
-
-	/**
-	 * Parses the sources and generates trace files
-	 * @throws Exception 
-	 */
-	private void buildTraceFiles() throws Exception {
-		TraceCompilerEngineInterface tbi = TraceCompilerEngineGlobals
-				.getTraceCompiler();
-		try {
-			// Opens a trace project
-			componentName = TraceUtils.convertName(componentName);
-
-			// Set project path before opening project
-			TraceCompilerEngineGlobals.setProjectPath(componentPath);
-			tbi.openProject(componentName);
-			TraceModel model = TraceCompilerEngineGlobals.getTraceModel();
-			if (model.isValid()) {
-				model.setID((int) componentUID);
-
-				// Location errors are printed after a file changes, but the
-				// last file is not detected by the listener
-				if (modelListener.getErrors().size() > 0) {
-					modelListener.printLocationErrors();
-					tbi.closeProject();
-					throw new TraceCompilerRootException(null, null);
-				}
-				tbi.exportProject();
-				tbi.closeProject();
-			} else {
-				String msg = "Project creation was cancelled"; //$NON-NLS-1$
-				throw new TraceCompilerRootException(msg, null);
-			}
-		} catch (TraceCompilerException e) {
-			TraceCompilerEngineGlobals.getEvents().postError(e);
-			throw new TraceCompilerRootException("Build trace files failed.", e); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Shuts down TraceCompiler
-	 * @throws TraceCompilerException 
-	 */
-	private void shutdown() throws TraceCompilerException {
-		for (TraceCompilerPlugin plugin : plugIns) {
-			TraceCompilerEngineGlobals.unregisterPlugin(plugin);
-		}
-		TraceCompilerEngineGlobals.shutdown();
-	}
-
-	/**
-	 * Checks if the MMP file is valid
-	 * 
-	 * @return true if MMP file is valid
-	 */
-	private boolean isMmpValid() {
-		boolean valid = false;
-		String pathStr = mmpPath.getAbsolutePath();
-
-		if (mmpPath.exists() && pathStr.length() > MMP.length()) {
-			String end = pathStr.substring(pathStr.length() - MMP.length());
-			if (end.equalsIgnoreCase(MMP)) {
-				valid = true;
-			} else {
-				TraceCompilerLogger.printError("Invalid MMP file: " + mmpPath.getAbsolutePath()); //$NON-NLS-1$
-			}
-		} else {
-			TraceCompilerLogger.printError("Missing or can not access MMP path: " + mmpPath.getAbsolutePath()); //$NON-NLS-1$
-		}
-		return valid;
-		
-	}
-
-}