trace/tracebuilder/com.nokia.tracebuilder/src/com/nokia/tracebuilder/model/DuplicateValueModifier.java
author Matti Laitinen <matti.t.laitinen@nokia.com>
Wed, 23 Jun 2010 14:35:40 +0300
changeset 10 ed1c9f64298a
permissions -rw-r--r--
TraceBuilder 2.4.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
* Base class for value modifiers
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
*/
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
package com.nokia.tracebuilder.model;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
 * Base class for value modifiers
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
abstract class DuplicateValueModifier implements TraceObjectModifier {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
	 * Duplicate tag for values
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
	private static final String DUPLICATE_TAG = "DUP"; //$NON-NLS-1$
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
	 * Duplicate tag separator
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
	private static final char DUPLICATE_SEPARATOR = '_';
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
	 * Value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
	private String value;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
	 * Changed flag
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
	private boolean changed;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
	 * Constructor
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
	 * @param value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
	 *            the value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
	DuplicateValueModifier(String value) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
		this.value = value;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
	/*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
	 * (non-Javadoc)
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
	 * @see com.nokia.tracebuilder.model.TraceObjectUtils.TraceObjectModifier#getData()
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
	public String getData() {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
		return value;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
	/*
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
	 * (non-Javadoc)
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
	 * @see com.nokia.tracebuilder.model.TraceObjectUtils.TraceObjectModifier#hasChanged()
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
	public boolean hasChanged() {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
		return changed;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
	 * Gets the separator character
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
	 * @return the char
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
	protected char getSeparator() {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
		return DUPLICATE_SEPARATOR;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
	 * Processes the name and modifies if there are duplicates
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
	void processName() {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
		int index = getStartIndex(value);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
		TraceObject object;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
		do {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
			object = findObject(value);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
			if (object != null) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
				changed = true;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
				value = appendIndexToString(value, index);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
				index++;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
			}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
		} while (object != null);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
	 * Gets the start index from given text
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
	 * @param value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
	 *            the value to be parsed
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
	 * @return the start index
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
	private int getStartIndex(String value) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
		String valueStr = null;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
		if (value.startsWith(DUPLICATE_TAG)) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
			for (int i = DUPLICATE_TAG.length(); i < value.length(); i++) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
				char c = value.charAt(i);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
				if (!Character.isDigit(c)) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
					valueStr = value.substring(DUPLICATE_TAG.length(), i);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
					i = value.length();
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
				}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
			}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
		}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
		int retval = -1;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
		if (valueStr != null && valueStr.length() > 0) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
			retval = Integer.parseInt(valueStr);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
		}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
		return retval;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
	 * Appends an index value to given string replacing existing index if it
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
	 * exists
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
	 * @param value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
	 *            the string
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
	 * @param index
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
	 *            the index
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
	 * @return the changed string
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
	private String appendIndexToString(String value, int index) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
		StringBuffer newValue = new StringBuffer();
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
		if (index >= 0) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
			String indexStr = String.valueOf(index);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
			newValue.append(DUPLICATE_TAG);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
			newValue.append(String.valueOf(index + 1));
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
			newValue.append(getSeparator());
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
			newValue.append(value.substring(DUPLICATE_TAG.length()
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
					+ indexStr.length() + 1)); // Add separator
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
		} else {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
			newValue.append(DUPLICATE_TAG);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
			newValue.append("1"); //$NON-NLS-1$
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
			newValue.append(getSeparator());
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
			newValue.append(value);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
		}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
		return newValue.toString();
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
	 * Gets the duplicate modifier from beginning of given text
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
	 * @param text
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
	 *            the text
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
	 * @return the modifier
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
	static String getModifier(String text) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
		String retval = null;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
		if (text.startsWith(DUPLICATE_TAG)) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
			for (int i = DUPLICATE_TAG.length(); i < text.length(); i++) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
				char c = text.charAt(i);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
				if (!Character.isDigit(c)) {
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
					retval = text.substring(0, i + 1); // Add separator
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
					i = text.length();
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
				}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
			}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
		}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
		return retval;
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
	}
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
	/**
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
	 * Finds the object from model
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
	 * 
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
	 * @param value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
	 *            the value
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
	 * @return the object or null if not found
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
	 */
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
	abstract TraceObject findObject(String value);
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
ed1c9f64298a TraceBuilder 2.4.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
}