tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/TraceCompilerEngineGlobals.java
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
* Access point to the exported interfaces of TraceCompiler engine
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*/
hgs
parents:
diff changeset
    19
package com.nokia.tracecompiler.engine;
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
import java.io.BufferedReader;
hgs
parents:
diff changeset
    22
import java.io.IOException;
hgs
parents:
diff changeset
    23
import java.io.InputStream;
hgs
parents:
diff changeset
    24
import java.io.InputStreamReader;
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
import com.nokia.tracecompiler.TraceCompilerLogger;
hgs
parents:
diff changeset
    27
import com.nokia.tracecompiler.engine.source.SourceEngine;
hgs
parents:
diff changeset
    28
import com.nokia.tracecompiler.model.TraceCompilerException;
hgs
parents:
diff changeset
    29
import com.nokia.tracecompiler.model.TraceModel;
hgs
parents:
diff changeset
    30
import com.nokia.tracecompiler.plugin.TraceCompilerPlugin;
hgs
parents:
diff changeset
    31
import com.nokia.tracecompiler.source.SourceConstants;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
 * Access point to the exported interfaces of TraceCompiler engine
hgs
parents:
diff changeset
    35
 * 
hgs
parents:
diff changeset
    36
 */
hgs
parents:
diff changeset
    37
public class TraceCompilerEngineGlobals {
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
	/**
hgs
parents:
diff changeset
    40
	 * Max group ID
hgs
parents:
diff changeset
    41
	 */
hgs
parents:
diff changeset
    42
	public static final int MAX_GROUP_ID = 65535; // CodForChk_Dis_Magic
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
	/**
hgs
parents:
diff changeset
    45
	 * Max trace ID
hgs
parents:
diff changeset
    46
	 */
hgs
parents:
diff changeset
    47
	public static final int MAX_TRACE_ID = 65535; // CodForChk_Dis_Magic
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
	/**
hgs
parents:
diff changeset
    50
	 * TraceCompiler engine instance
hgs
parents:
diff changeset
    51
	 */
hgs
parents:
diff changeset
    52
	private static TraceCompilerEngine instance;
hgs
parents:
diff changeset
    53
	
hgs
parents:
diff changeset
    54
	/**
hgs
parents:
diff changeset
    55
	 * default licence
hgs
parents:
diff changeset
    56
	 */
hgs
parents:
diff changeset
    57
	static String defaultLicence;
hgs
parents:
diff changeset
    58
	
hgs
parents:
diff changeset
    59
	/**
hgs
parents:
diff changeset
    60
	 * default licence
hgs
parents:
diff changeset
    61
	 */
hgs
parents:
diff changeset
    62
	static String defaultLicenceWithHash;
hgs
parents:
diff changeset
    63
	
hgs
parents:
diff changeset
    64
	/**
hgs
parents:
diff changeset
    65
	 * Constructor is hidden
hgs
parents:
diff changeset
    66
	 */
hgs
parents:
diff changeset
    67
	private TraceCompilerEngineGlobals() {
hgs
parents:
diff changeset
    68
	}
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
	/**
hgs
parents:
diff changeset
    71
	 * Starts TraceCompiler engine.
hgs
parents:
diff changeset
    72
	 * @throws TraceCompilerException 
hgs
parents:
diff changeset
    73
	 */
hgs
parents:
diff changeset
    74
	public static void start() throws TraceCompilerException {
hgs
parents:
diff changeset
    75
		if (instance == null) {
hgs
parents:
diff changeset
    76
			instance = new TraceCompilerEngine();
hgs
parents:
diff changeset
    77
			instance.start();
hgs
parents:
diff changeset
    78
		}
hgs
parents:
diff changeset
    79
	}
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
	/**
hgs
parents:
diff changeset
    82
	 * Shuts down the TraceCompiler instance
hgs
parents:
diff changeset
    83
	 * @throws TraceCompilerException 
hgs
parents:
diff changeset
    84
	 */
hgs
parents:
diff changeset
    85
	public static void shutdown() throws TraceCompilerException {
hgs
parents:
diff changeset
    86
		if (instance != null) {
hgs
parents:
diff changeset
    87
			instance.shutdown();
hgs
parents:
diff changeset
    88
			instance = null;
hgs
parents:
diff changeset
    89
		}
hgs
parents:
diff changeset
    90
	}
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
	/**
hgs
parents:
diff changeset
    93
	 * Gets the configuration interface. The configuration interface is not
hgs
parents:
diff changeset
    94
	 * available until view has been registered.
hgs
parents:
diff changeset
    95
	 * 
hgs
parents:
diff changeset
    96
	 * @return the configuration
hgs
parents:
diff changeset
    97
	 */
hgs
parents:
diff changeset
    98
	public static TraceCompilerEngineConfiguration getConfiguration() {
hgs
parents:
diff changeset
    99
		return instance.getConfiguration();
hgs
parents:
diff changeset
   100
	}
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
	/**
hgs
parents:
diff changeset
   103
	 * Gets the trace model
hgs
parents:
diff changeset
   104
	 * 
hgs
parents:
diff changeset
   105
	 * @return the model
hgs
parents:
diff changeset
   106
	 */
hgs
parents:
diff changeset
   107
	public static TraceModel getTraceModel() {
hgs
parents:
diff changeset
   108
		return instance.getModel();
hgs
parents:
diff changeset
   109
	}
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
	/**
hgs
parents:
diff changeset
   112
	 * Gets the source engine
hgs
parents:
diff changeset
   113
	 * 
hgs
parents:
diff changeset
   114
	 * @return the source engine
hgs
parents:
diff changeset
   115
	 */
hgs
parents:
diff changeset
   116
	public static SourceEngine getSourceEngine() {
hgs
parents:
diff changeset
   117
		return instance.getSourceEngine();
hgs
parents:
diff changeset
   118
	}
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
	/**
hgs
parents:
diff changeset
   121
	 * Gets the trace compiler interface
hgs
parents:
diff changeset
   122
	 * 
hgs
parents:
diff changeset
   123
	 * @return trace compiler
hgs
parents:
diff changeset
   124
	 */
hgs
parents:
diff changeset
   125
	public static TraceCompilerEngineInterface getTraceCompiler() {
hgs
parents:
diff changeset
   126
		return instance.getTraceCompiler();
hgs
parents:
diff changeset
   127
	}
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	/**
hgs
parents:
diff changeset
   130
	 * Gets the events interface
hgs
parents:
diff changeset
   131
	 * 
hgs
parents:
diff changeset
   132
	 * @return the events interface
hgs
parents:
diff changeset
   133
	 */
hgs
parents:
diff changeset
   134
	public static TraceCompilerEngineEvents getEvents() {
hgs
parents:
diff changeset
   135
		if (instance != null) {
hgs
parents:
diff changeset
   136
			return instance.getEvents();
hgs
parents:
diff changeset
   137
		} else {
hgs
parents:
diff changeset
   138
			return null;
hgs
parents:
diff changeset
   139
		}
hgs
parents:
diff changeset
   140
	}
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
	/**
hgs
parents:
diff changeset
   143
	 * Called by a plug-in to register itself
hgs
parents:
diff changeset
   144
	 * 
hgs
parents:
diff changeset
   145
	 * @param plugin
hgs
parents:
diff changeset
   146
	 *            the plugin to be registered
hgs
parents:
diff changeset
   147
	 */
hgs
parents:
diff changeset
   148
	public static void registerPlugin(TraceCompilerPlugin plugin) {
hgs
parents:
diff changeset
   149
		instance.registerPlugin(plugin);
hgs
parents:
diff changeset
   150
	}
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
	/**
hgs
parents:
diff changeset
   153
	 * Called by a plug-in to unregister itself
hgs
parents:
diff changeset
   154
	 * 
hgs
parents:
diff changeset
   155
	 * @param plugin
hgs
parents:
diff changeset
   156
	 *            the plugin to be unregistered
hgs
parents:
diff changeset
   157
	 */
hgs
parents:
diff changeset
   158
	public static void unregisterPlugin(TraceCompilerPlugin plugin) {
hgs
parents:
diff changeset
   159
		if (instance != null) {
hgs
parents:
diff changeset
   160
			instance.unregisterPlugin(plugin);
hgs
parents:
diff changeset
   161
		}
hgs
parents:
diff changeset
   162
	}
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
	/**
hgs
parents:
diff changeset
   165
	 * Called by the view plug-in to register the view
hgs
parents:
diff changeset
   166
	 * 
hgs
parents:
diff changeset
   167
	 * @param view
hgs
parents:
diff changeset
   168
	 *            the view
hgs
parents:
diff changeset
   169
	 * @throws TraceCompilerException 
hgs
parents:
diff changeset
   170
	 */
hgs
parents:
diff changeset
   171
	public static void setView(TraceCompilerEngineView view) throws TraceCompilerException {
hgs
parents:
diff changeset
   172
		instance.setView(view);
hgs
parents:
diff changeset
   173
	}
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
	/**
hgs
parents:
diff changeset
   176
	 * Gets the source context manager
hgs
parents:
diff changeset
   177
	 * 
hgs
parents:
diff changeset
   178
	 * @return the context manager
hgs
parents:
diff changeset
   179
	 */
hgs
parents:
diff changeset
   180
	public static SourceContextManager getSourceContextManager() {
hgs
parents:
diff changeset
   181
		return instance.getSourceContextManager();
hgs
parents:
diff changeset
   182
	}
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
	/**
hgs
parents:
diff changeset
   185
	 * Get project path
hgs
parents:
diff changeset
   186
	 * 
hgs
parents:
diff changeset
   187
	 * @return project path
hgs
parents:
diff changeset
   188
	 */
hgs
parents:
diff changeset
   189
	public static String getProjectPath() {
hgs
parents:
diff changeset
   190
		String projetcPath = instance.getProjectPath();
hgs
parents:
diff changeset
   191
		return projetcPath;
hgs
parents:
diff changeset
   192
	}
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
	/**
hgs
parents:
diff changeset
   195
	 * Set project path
hgs
parents:
diff changeset
   196
	 * 
hgs
parents:
diff changeset
   197
	 * @param path
hgs
parents:
diff changeset
   198
	 *            the path
hgs
parents:
diff changeset
   199
	 */
hgs
parents:
diff changeset
   200
	public static void setProjectPath(String path) {
hgs
parents:
diff changeset
   201
		instance.setProjectPath(path);
hgs
parents:
diff changeset
   202
	}
hgs
parents:
diff changeset
   203
	
hgs
parents:
diff changeset
   204
	/**
hgs
parents:
diff changeset
   205
	 * get default licence from com/nokia/tracecompiler/licence.lic
hgs
parents:
diff changeset
   206
	 * c++ comment format
hgs
parents:
diff changeset
   207
	 * @param boolean cppCommented
hgs
parents:
diff changeset
   208
	 *  if true, it returns the licence in cpp comment \/** ... **\/
hgs
parents:
diff changeset
   209
	 *  else it retuen the licence in a # comment ## ... ##
hgs
parents:
diff changeset
   210
	 * @return String licence
hgs
parents:
diff changeset
   211
	 */
hgs
parents:
diff changeset
   212
	public static String getDefaultLicence(boolean cppCommented) {
hgs
parents:
diff changeset
   213
		String licenceResourceName;
hgs
parents:
diff changeset
   214
		if (cppCommented) {
hgs
parents:
diff changeset
   215
			if (defaultLicence == null) {
hgs
parents:
diff changeset
   216
				licenceResourceName = "/com/nokia/tracecompiler/licence.lic"; //$NON-NLS-1$
hgs
parents:
diff changeset
   217
				defaultLicence = readLicence(licenceResourceName);
hgs
parents:
diff changeset
   218
			}
hgs
parents:
diff changeset
   219
			return defaultLicence;
hgs
parents:
diff changeset
   220
		} else {
hgs
parents:
diff changeset
   221
			if (defaultLicenceWithHash == null) {
hgs
parents:
diff changeset
   222
				licenceResourceName = "/com/nokia/tracecompiler/licence_hash.lic"; //$NON-NLS-1$
hgs
parents:
diff changeset
   223
				defaultLicenceWithHash = readLicence(licenceResourceName);
hgs
parents:
diff changeset
   224
			}
hgs
parents:
diff changeset
   225
			return defaultLicenceWithHash;
hgs
parents:
diff changeset
   226
		}
hgs
parents:
diff changeset
   227
	}
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
	/**
hgs
parents:
diff changeset
   230
	 * read the provided resource file and return the text in it.
hgs
parents:
diff changeset
   231
	 */
hgs
parents:
diff changeset
   232
	private static String readLicence(String aLicenceResourceName) {
hgs
parents:
diff changeset
   233
		String licenceText = null;
hgs
parents:
diff changeset
   234
		InputStream is = instance.getClass().getResourceAsStream(aLicenceResourceName); 
hgs
parents:
diff changeset
   235
		if (is != null) {
hgs
parents:
diff changeset
   236
			InputStreamReader isr = new InputStreamReader(is);
hgs
parents:
diff changeset
   237
			BufferedReader br = new BufferedReader(isr);
hgs
parents:
diff changeset
   238
			StringBuffer sb = new StringBuffer();
hgs
parents:
diff changeset
   239
			String line;
hgs
parents:
diff changeset
   240
			try {
hgs
parents:
diff changeset
   241
				while ((line = br.readLine()) != null) {
hgs
parents:
diff changeset
   242
					sb.append(line + SourceConstants.LINE_FEED);
hgs
parents:
diff changeset
   243
				}
hgs
parents:
diff changeset
   244
				licenceText = sb.toString();
hgs
parents:
diff changeset
   245
				br.close();
hgs
parents:
diff changeset
   246
				isr.close();
hgs
parents:
diff changeset
   247
				is.close();
hgs
parents:
diff changeset
   248
			} catch (IOException e) {
hgs
parents:
diff changeset
   249
				TraceCompilerLogger.printWarning(Messages.getString("TraceCompilerErrorMessages.LicenceFileError") + e.getMessage()); //$NON-NLS-1$
hgs
parents:
diff changeset
   250
			}
hgs
parents:
diff changeset
   251
		}
hgs
parents:
diff changeset
   252
		return licenceText;
hgs
parents:
diff changeset
   253
	}
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
}