diff -r a151135b0cf9 -r aa2539c91954 tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/TraceCompilerEngineErrorMessages.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/TraceCompilerEngineErrorMessages.java Fri Oct 08 14:56:39 2010 +0300 @@ -0,0 +1,722 @@ +/* + * Copyright (c) 2008 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: + * + * Error code to error message mapper + * + */ +package com.nokia.tracecompiler.engine; + +import java.io.File; + +import com.nokia.tracecompiler.engine.TraceCompilerEngineErrorCodes.FileErrorParameters; +import com.nokia.tracecompiler.engine.TraceCompilerEngineErrorCodes.RangeErrorParameters; +import com.nokia.tracecompiler.engine.TraceCompilerEngineErrorCodes.StringErrorParameters; +import com.nokia.tracecompiler.engine.TraceCompilerEngineErrorCodes.TraceCompilerErrorCode; +import com.nokia.tracecompiler.model.TraceCompilerErrorParameters; +import com.nokia.tracecompiler.model.TraceCompilerException; +import com.nokia.tracecompiler.source.SourceConstants; +import com.nokia.tracecompiler.source.SourceUtils; + +/** + * Error code to error message mapper + * + */ +public final class TraceCompilerEngineErrorMessages { + + /** + * Maps an exception to error message + * + * @param e + * the exception + * @return the message + */ + public static String getErrorMessage(TraceCompilerException e) { + return TraceCompilerEngineErrorMessages.getErrorMessage( + (TraceCompilerErrorCode) e.getErrorCode(), e + .getErrorParameters()); + } + + /** + * Maps error code to error message + * + * @param error + * the error code + * @param parameters + * the parameters of the error + * @return the message + */ + public static String getErrorMessage(TraceCompilerErrorCode error, + TraceCompilerErrorParameters parameters) { + // CodForChk_Dis_LengthyFunc + // CodForChk_Dis_ComplexFunc + String s; + StringBuffer sb = new StringBuffer(); + switch (error) { + case DUPLICATE_GROUP_ID: + sb.append(Messages + .getString("TraceCompilerErrorMessages.DuplicateGroupID")); //$NON-NLS-1$ + break; + case DUPLICATE_GROUP_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.DuplicateGroupName")); //$NON-NLS-1$ + break; + case DUPLICATE_TRACE_ID: + sb.append(Messages + .getString("TraceCompilerErrorMessages.DuplicateTraceID")); //$NON-NLS-1$ + break; + case DUPLICATE_TRACE_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.DuplicateTraceName")); //$NON-NLS-1$ + break; + case DUPLICATE_PARAMETER_ID: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateParameterID"); //$NON-NLS-1$ + sb.append(s); + break; + case DUPLICATE_CONSTANT_VALUE: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateConstantValue"); //$NON-NLS-1$ + sb.append(s); + break; + case DUPLICATE_CONSTANT_ID: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateConstantID"); //$NON-NLS-1$ + sb.append(s); + break; + case DUPLICATE_CONSTANT_TABLE_NAME: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateConstantTableName"); //$NON-NLS-1$ + sb.append(s); + break; + case DUPLICATE_CONSTANT_TABLE_ID: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateConstantTableID"); //$NON-NLS-1$ + sb.append(s); + break; + case DUPLICATE_PARAMETER_NAME: + s = Messages + .getString("TraceCompilerErrorMessages.DuplicateParameterName"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_GROUP_ID: + createInvalidGroupIDMessage(parameters, sb); + break; + case INVALID_TRACE_ID: + createInvalidTraceIDMessage(parameters, sb); + break; + case INVALID_MODEL_PROPERTIES_FOR_EXPORT: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidModelPropertiesForExport"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_MODEL_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidProjectName")); //$NON-NLS-1$ + break; + case INVALID_GROUP_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidGroupName")); //$NON-NLS-1$ + break; + case INVALID_TRACE_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidTraceName")); //$NON-NLS-1$ + break; + case INVALID_PARAMETER_NAME: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidParameterName"); //$NON-NLS-1$ + sb.append(s); + break; + case EMPTY_PARAMETER_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.EmptyParameterName")); //$NON-NLS-1$ + break; + case INVALID_CONSTANT_TABLE_NAME: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidConstantTableName"); //$NON-NLS-1$ + sb.append(s); + break; + case CONSTANT_TABLE_NOT_PART_OF_PROJECT: + s = Messages + .getString("TraceCompilerErrorMessages.ConstantTableNotPartOfProject"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_TRACE_DATA: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidTraceData")); //$NON-NLS-1$ + break; + case INVALID_PARAMETER_TYPE: + createInvalidParameterTypeMessage(parameters, sb); + break; + case INVALID_CONSTANT_VALUE: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidConstantValue"); //$NON-NLS-1$ + sb.append(s); + break; + case SOURCE_NOT_EDITABLE: + s = Messages + .getString("TraceCompilerErrorMessages.SourceNotEditable"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_SOURCE_LOCATION: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidSourceLocation"); //$NON-NLS-1$ + sb.append(s); + break; + case UNREACHABLE_TRACE_LOCATION: + s = Messages + .getString("TraceCompilerErrorMessages.UnreachableTraceLocation"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_PROJECT_FILE: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidTraceFile")); //$NON-NLS-1$ + break; + case FILE_NOT_FOUND: + createFileNotFoundMessage((FileErrorParameters) parameters, sb); + break; + case INVALID_PATH: + createInvalidPathMessage((FileErrorParameters) parameters, sb); + break; + case SOURCE_NOT_OPEN: + sb.append(Messages + .getString("TraceCompilerErrorMessages.SourceNotOpen")); //$NON-NLS-1$ + break; + case CANNOT_OPEN_PROJECT_FILE: + s = Messages + .getString("TraceCompilerErrorMessages.CannotOpenProjectFile"); //$NON-NLS-1$ + sb.append(s); + break; + case CANNOT_WRITE_PROJECT_FILE: + s = Messages + .getString("TraceCompilerErrorMessages.CannotWriteProjectFile"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_FORMAT_MISMATCH: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatMismatch"); //$NON-NLS-1$ + sb.append(s); + break; + case GROUP_NOT_SELECTED: + sb.append(Messages + .getString("TraceCompilerErrorMessages.GroupNotSelected")); //$NON-NLS-1$ + break; + case TRACE_NOT_SELECTED: + sb.append(Messages + .getString("TraceCompilerErrorMessages.TraceNotSelected")); //$NON-NLS-1$ + break; + case CONSTANT_TABLE_NOT_SELECTED: + s = Messages + .getString("TraceCompilerErrorMessages.ConstantTableNotSelected"); //$NON-NLS-1$ + sb.append(s); + break; + case LOCATION_NOT_SELECTED: + s = Messages + .getString("TraceCompilerErrorMessages.TraceLocationNotSelected"); //$NON-NLS-1$ + sb.append(s); + break; + case CANNOT_DELETE_SELECTED_OBJECT: + s = Messages + .getString("TraceCompilerErrorMessages.CannotDeleteSelectedObject"); //$NON-NLS-1$ + sb.append(s); + break; + case MODEL_NOT_READY: + s = Messages + .getString("TraceCompilerErrorMessages.TraceProjectNotOpen"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_TRACE_GROUPS: + sb.append(Messages + .getString("TraceCompilerErrorMessages.NoTraceGroups")); //$NON-NLS-1$ + break; + case NOT_ENOUGH_PARAMETERS: + s = Messages + .getString("TraceCompilerErrorMessages.NotEnoughParameters"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_ADD_NOT_ALLOWED: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterAddNotAllowed"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_REMOVE_NOT_ALLOWED: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterRemoveNotAllowed"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_TEMPLATE_ALREADY_IN_USE: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterTemplateInUse"); //$NON-NLS-1$ + sb.append(s); + break; + case CONSTANT_TABLE_PARSE_FAILED: + s = Messages + .getString("TraceCompilerErrorMessages.ConstantTableParseFailed"); //$NON-NLS-1$ + sb.append(s); + break; + case UNEXPECTED_EXCEPTION: + s = Messages + .getString("TraceCompilerErrorMessages.UnexpectedException"); //$NON-NLS-1$ + sb.append(s); + break; + case TRACE_NAME_FORMAT_MISSING_FUNCTION: + s = Messages + .getString("TraceCompilerErrorMessages.NameFormatMissingFunction"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_TRACE_TEXT_FORMAT: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidTraceTextFormat"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_TRACE_NAME_FORMAT: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidTraceNameFormat"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_FUNCTIONS_TO_INSTRUMENT_WITH_TEMPLATE: + s = Messages + .getString("TraceCompilerErrorMessages.NoFunctionsToInstrumentPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.NoFunctionsToInstrumentPostfix"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_FUNCTIONS_TO_INSTRUMENT: + s = Messages + .getString("TraceCompilerErrorMessages.NoFunctionsToInstrument"); //$NON-NLS-1$ + sb.append(s); + break; + case MULTIPLE_ERRORS_IN_OPERATION: + s = Messages + .getString("TraceCompilerErrorMessages.MultipleErrorsInOperation"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_TRACES_TO_DELETE: + sb.append(Messages + .getString("TraceCompilerErrorMessages.NoTracesToDelete")); //$NON-NLS-1$ + break; + case TRACE_DOES_NOT_EXIST: + s = Messages + .getString("TraceCompilerErrorMessages.TraceDoesNotExist"); //$NON-NLS-1$ + sb.append(s); + break; + case TRACE_NEEDS_CONVERSION: + s = Messages + .getString("TraceCompilerErrorMessages.TraceNeedsConversionPrefix"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_COUNT_MISMATCH: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterCountMismatch"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_COUNT_DOES_NOT_MATCH_API: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterCountDoesNotMatchApi"); //$NON-NLS-1$ + sb.append(s); + break; + case TRACE_HAS_NO_LOCATIONS: + s = Messages + .getString("TraceCompilerErrorMessages.TraceHasNoLocations"); //$NON-NLS-1$ + sb.append(s); + break; + case TRACE_HAS_MULTIPLE_LOCATIONS: + s = Messages + .getString("TraceCompilerErrorMessages.TraceHasMultipleLocations"); //$NON-NLS-1$ + sb.append(s); + break; + case LOCATION_PARSER_FAILED: + s = Messages + .getString("TraceCompilerErrorMessages.LocationCouldNotBeParsed"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_TRACES_TO_EXPORT: + s = Messages + .getString("TraceCompilerErrorMessages.NoTracesToExport"); //$NON-NLS-1$ + sb.append(s); + break; + case CANNOT_OPEN_SOURCE_FILE: + s = Messages + .getString("TraceCompilerErrorMessages.CannotOpenSourceFile"); //$NON-NLS-1$ + sb.append(s); + break; + case CANNOT_UPDATE_TRACE_INTO_SOURCE: + s = Messages + .getString("TraceCompilerErrorMessages.CannotUpdateTraceIntoSource"); //$NON-NLS-1$ + sb.append(s); + break; + case PARAMETER_FORMAT_NOT_SUPPORTED: + createParameterFormatNotSupportedMessage(parameters, sb); + break; + case PARAMETER_FORMAT_NEEDS_EXT_MACRO: + createParameterFormatNotSupportedInMacroMessage(parameters, sb); + break; + case PARAMETER_FORMAT_NOT_SUPPORTED_IN_ARRAY: + createParameterFormatNotSupportedInArrayMessage(parameters, sb); + break; + case PARAMETER_FORMAT_UNNECESSARY_EXT_MACRO: + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatUnnecessaryExtMacro"); //$NON-NLS-1$ + sb.append(s); + break; + case PROPERTY_FILE_ELEMENT_NOT_SUPPORTED: + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileElementNotSupportedPrefix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileElementNotSupportedPostfix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + break; + case PROPERTY_FILE_ELEMENT_MISPLACED: + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileElementMisplacedPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileElementMisplacedPostfix"); //$NON-NLS-1$ + sb.append(s); + break; + case PROPERTY_FILE_ATTRIBUTE_INVALID: + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileAttributeInvalidPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.PropertyFileAttributeInvalidPostfix"); //$NON-NLS-1$ + sb.append(s); + break; + case INSERT_TRACE_DOES_NOT_WORK: + s = Messages + .getString("TraceCompilerErrorMessages.InsertTraceDoesNotWork"); //$NON-NLS-1$ + sb.append(s); + break; + case NO_CONTEXT_FOR_LOCATION: + s = Messages + .getString("TraceCompilerErrorMessages.NoContextForLocation"); //$NON-NLS-1$ + sb.append(s); + break; + case CANNOT_PARSE_FUNCTION_PARAMETERS: + s = Messages + .getString("TraceCompilerErrorMessages.CannotParseFunctionParameters"); //$NON-NLS-1$ + sb.append(s); + break; + case INVALID_PARAMETER_NAME_IN_RETURN_VALUE: + s = Messages + .getString("TraceCompilerErrorMessages.InvalidParameterNameInReturnValue"); //$NON-NLS-1$ + sb.append(s); + break; + case RUN_OUT_OF_GROUP_IDS: + sb.append(Messages + .getString("TraceCompilerErrorMessages.RunOutOfGroupIDs")); //$NON-NLS-1$ + break; + case RUN_OUT_OF_TRACE_IDS: + sb.append(Messages + .getString("TraceCompilerErrorMessages.RunOutOfTraceIDs")); //$NON-NLS-1$ + break; + case VAR_ARG_LIST_PARAMETER_FOUND: + sb.append(Messages + .getString("TraceCompilerErrorMessages.VarArgListParameterFound")); //$NON-NLS-1$ + break; + case INVALID_USAGE_OF_TRACE_STATE_GROUP_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidUsageOfTraceStateGroupName")); //$NON-NLS-1$ + break; + case INVALID_USAGE_OF_TRACE_PERFORMACE_GROUP_NAME: + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidUsageOfTracePerformanceGroupName")); //$NON-NLS-1$ + break; + default: + break; + } + return sb.toString(); + } + + /** + * Creates invalid parameter type message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createInvalidParameterTypeMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof StringErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.InvalidParameterTypePrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + String format = SourceUtils + .mapNormalTypeToFormat(((StringErrorParameters) parameters).string); + if (format != null) { + sb.append(" "); //$NON-NLS-1$ + sb.append(format); + } + s = Messages + .getString("TraceCompilerErrorMessages.InvalidParameterTypePostfix"); //$NON-NLS-1$ + sb.append(s); + } else { + s = Messages + .getString("TraceCompilerErrorMessages.InvalidParameterType"); //$NON-NLS-1$ + sb.append(s); + } + } + + /** + * Creates parameter format not supported message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createParameterFormatNotSupportedMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof StringErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedPostfix"); //$NON-NLS-1$ + sb.append(s); + } else { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupported"); //$NON-NLS-1$ + sb.append(s); + } + } + + /** + * Creates parameter not supported in macro message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createParameterFormatNotSupportedInMacroMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof StringErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInMacroPrefix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInMacroPostfix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + } else { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInMacro"); //$NON-NLS-1$ + sb.append(s); + } + } + + /** + * Creates parameter not supported in array message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createParameterFormatNotSupportedInArrayMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof StringErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInArrayPrefix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + sb.append(((StringErrorParameters) parameters).string); + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInArrayPostfix"); //$NON-NLS-1$ CodForChk_Dis_LengthyLine + sb.append(s); + } else { + s = Messages + .getString("TraceCompilerErrorMessages.ParameterFormatNotSupportedInArray"); //$NON-NLS-1$ + sb.append(s); + } + } + + /** + * Creates invalid trace ID message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createInvalidTraceIDMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof RangeErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.InvalidTraceIDStart"); //$NON-NLS-1$ + sb.append(s); + s = Messages + .getString("TraceCompilerErrorMessages.InvalidTraceIDMiddle"); //$NON-NLS-1$ + addRangeParameter((RangeErrorParameters) parameters, sb, s); + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidTraceIDEnd")); //$NON-NLS-1$ + } else { + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidTraceID")); //$NON-NLS-1$ + } + } + + /** + * Creates invalid group ID message + * + * @param parameters + * the parameters + * @param sb + * the message buffer + */ + private static void createInvalidGroupIDMessage( + TraceCompilerErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters instanceof RangeErrorParameters) { + s = Messages + .getString("TraceCompilerErrorMessages.InvalidGroupIDStart"); //$NON-NLS-1$ + sb.append(s); + s = Messages + .getString("TraceCompilerErrorMessages.InvalidGroupIDMiddle"); //$NON-NLS-1$ + addRangeParameter((RangeErrorParameters) parameters, sb, s); + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidGroupIDEnd")); //$NON-NLS-1$ + } else { + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidGroupID")); //$NON-NLS-1$ + } + } + + /** + * Adds a range parameter to error buffer + * + * @param parameters + * the range + * @param sb + * the buffer + * @param middleText + * the text between the range + */ + private static void addRangeParameter(RangeErrorParameters parameters, + StringBuffer sb, String middleText) { + if (parameters.isHex) { + sb.append(SourceConstants.HEX_PREFIX); + sb.append(Integer.toHexString(parameters.start)); + } else { + sb.append(parameters.start); + } + sb.append(middleText); + if (parameters.isHex) { + sb.append(SourceConstants.HEX_PREFIX); + sb.append(Integer.toHexString(parameters.end)); + } else { + sb.append(parameters.end); + } + } + + /** + * Creates "Invalid directory" message + * + * @param parameters + * the message parameters + * @param sb + * the string buffer where the message is stored + */ + private static void createInvalidPathMessage( + FileErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters != null) { + s = Messages + .getString("TraceCompilerErrorMessages.InvalidDirectoryPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(convertPath(parameters.file)); + s = Messages + .getString("TraceCompilerErrorMessages.InvalidDirectoryPostfix"); //$NON-NLS-1$ + sb.append(s); + } else { + sb.append(Messages + .getString("TraceCompilerErrorMessages.InvalidDirectory")); //$NON-NLS-1$ + } + } + + /** + * Creates "File not found" message + * + * @param parameters + * the message parameters + * @param sb + * the string buffer where the message is stored + */ + private static void createFileNotFoundMessage( + FileErrorParameters parameters, StringBuffer sb) { + String s; + if (parameters != null) { + s = Messages + .getString("TraceCompilerErrorMessages.FileDoesNotExistPrefix"); //$NON-NLS-1$ + sb.append(s); + sb.append(convertPath(parameters.file)); + s = Messages + .getString("TraceCompilerErrorMessages.FileDoesNotExistPostfix"); //$NON-NLS-1$ + sb.append(s); + } else { + sb.append(Messages + .getString("TraceCompilerErrorMessages.FileDoesNotExist")); //$NON-NLS-1$ + } + } + + /** + * Adds some spaces to path string to allow folding + * + * @param path + * the path + * @return the converted path + */ + public static String convertPath(String path) { + StringBuffer sb = new StringBuffer(); + int strIndex = -1; + do { + strIndex++; + int lastIndex = strIndex; + strIndex = path.indexOf(File.separatorChar, strIndex); + if (strIndex != -1) { + String sub = path.substring(lastIndex, strIndex); + if (sub.length() > 0) { + sb.append(sub); + sb.append(' '); + sb.append(File.separatorChar); + sb.append(' '); + } + } else { + // If the data ends with file separator, lastIndex points to + // end-of-data. If not, the rest of the data is appended without + // further white spaces + if (lastIndex < path.length()) { + String sub = path.substring(lastIndex); + sb.append(sub); + } + } + } while (strIndex != -1); + return sb.toString(); + } + +}