diff -r a151135b0cf9 -r aa2539c91954 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceGroup.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceGroup.java Wed Sep 29 17:45:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -/* -* Copyright (c) 2007 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: -* -* Represents a logical collection of traces somehow related to each other -* -*/ -package com.nokia.tracecompiler.model; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; - -/** - * Represents a logical collection of traces somehow related to each other. Each - * trace group specifies a prefix that is attached to all trace lines made - * within that group. - * - */ -public class TraceGroup extends TraceObject implements Iterable { - - /** - * List of traces, sorted by ID - */ - private ArrayList tracesByID = new ArrayList(); - - /** - * List of traces, sorted by name - */ - private ArrayList tracesByName = new ArrayList(); - - /** - * Creates a new trace group and associates it with given trace model. - * - * @param model - * the trace model - */ - TraceGroup(TraceModel model) { - setModel(model); - model.addGroup(this); - } - - /** - * Adds a trace to this group. Creates objectAdded event to model listeners - * - * @see TraceModelListener#objectAdded(TraceObject, TraceObject) - * @param trace - * the trace to be added - */ - void addTrace(Trace trace) { - // Sorted when ID is set to trace - tracesByID.add(trace); - // Sorted when name is set to trace - tracesByName.add(trace); - getModel().notifyObjectAdded(this, trace); - } - - /** - * Removes a trace from this group. Creates objectRemoved event to model - * listeners - * - * @see TraceModelListener#objectRemoved(TraceObject, TraceObject) - * @param trace - * the trace to be removed - * @throws TraceCompilerException - */ - public void removeTrace(Trace trace) throws TraceCompilerException { - int index = Collections.binarySearch(tracesByID, trace, - TraceObjectUtils.traceObjectIDComparator); - if (index >= 0) { - tracesByID.remove(index); - index = Collections.binarySearch(tracesByName, trace, - TraceObjectUtils.traceObjectNameComparator); - tracesByName.remove(index); - getModel().notifyObjectRemoved(this, trace); - trace.reset(); - } - } - - /** - * Determines if this group has traces. - * - * @return true if the group contains traces - */ - public boolean hasTraces() { - return !tracesByID.isEmpty(); - } - - /** - * Gets the number of traces in this group. - * - * @return the number of traces - */ - public int getTraceCount() { - return tracesByID.size(); - } - - /** - * Returns an iterator over the traces within this group. - * - * @return the iterator - */ - public Iterator getTraces() { - return tracesByID.iterator(); - } - - /* - * (non-Javadoc) - * - * @see java.lang.Iterable#iterator() - */ - public Iterator iterator() { - return tracesByID.iterator(); - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.model.TraceObject#reset() - */ - @Override - void reset() { - // Reset removes constant table references - for (Trace trace : tracesByID) { - // Model listeners are not notified on reset, but if the - // trace itself implements a delete notification interface, - // it must be called to do appropriate cleanup - notifyOnDelete(trace); - trace.reset(); - } - tracesByID.clear(); - tracesByName.clear(); - super.reset(); - } - - /** - * Returns highest trace ID + 1. Can be used to create an unique ID for a - * new trace. - * - * @return the next trace ID - */ - public int getNextTraceID() { - int ret; - if (tracesByID.size() > 0) { - ret = tracesByID.get(tracesByID.size() - 1).getID() + 1; - } else { - ret = 1; - } - return ret; - } - - /** - * Gets the trace which has given ID - * - * @param id - * the trace ID - * @return the trace or null - */ - public Trace findTraceByID(int id) { - int index = Collections.binarySearch(tracesByID, id, - TraceObjectUtils.traceToIDComparator); - Trace retval; - if (index >= 0) { - retval = tracesByID.get(index); - } else { - retval = null; - } - return retval; - } - - /** - * Called by the model when a trace property is updated - * - * @param source - * the trace that was changed - * @param property - * the property that was changed - */ - void tracePropertyUpdated(TraceObject source, int property) { - if (property == TraceModelListener.NAME) { - Collections.sort(tracesByName, - TraceObjectUtils.traceObjectNameComparator); - } else if (property == TraceModelListener.ID) { - traceIDsUpdated(); - } - } - - /** - * Sorts the trace array based on new ID configuration - */ - void traceIDsUpdated() { - Collections.sort(tracesByID, TraceObjectUtils.traceObjectIDComparator); - } -}