diff -r ca8a1b6995f6 -r 52e343bb8f80 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceObject.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceObject.java Tue Aug 31 16:45:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +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: -* -* Base class for all trace model objects -* -*/ -package com.nokia.tracecompiler.model; - -import java.util.ArrayList; -import java.util.Iterator; - -/** - * Base class for all trace model objects - * - */ -public abstract class TraceObject { - - /** - * The extensions can be used by trace providers to associate extra data to - * the object. - */ - private ArrayList extensions = new ArrayList(); - - /** - * Object ID. - */ - private int id; - - /** - * Object name. - */ - private String name = ""; //$NON-NLS-1$ - - /** - * The trace model. - */ - private TraceModel model; - - /** - * Complete flag - */ - private boolean complete; - - /** - * Associates this object to a trace model. - * - * @param model - * the model where this object belongs to - */ - void setModel(TraceModel model) { - this.model = model; - } - - /** - * Returns the trace model this object is associated to. - * - * @return the trace model - */ - public TraceModel getModel() { - return model; - } - - /** - * Sets the ID of this object. Generates propertyUpdated event to model - * listeners if the ID changes - * - * @see TraceModelListener#propertyUpdated(TraceObject, int) - * @param id - * the new ID - * @throws TraceCompilerException - */ - public void setID(int id) throws TraceCompilerException { - if (this.id != id) { - this.id = id; - model.notifyPropertyUpdated(this, TraceModelListener.ID); - } - } - - /** - * Sets the ID of this object but does not generate any notifications - * - * @param id - * the new ID - */ - void internalSetID(int id) { - this.id = id; - } - - /** - * Returns the ID of this object. - * - * @return the ID - */ - public int getID() { - return id; - } - - /** - * Sets the name of this object. Generates propertyUpdated event to model - * listeners if the name changes - * - * @see TraceModelListener#propertyUpdated(TraceObject, int) - * @param name - * the new name - * @throws TraceCompilerException - */ - public void setName(String name) throws TraceCompilerException { - if (name == null) { - name = ""; //$NON-NLS-1$ - } - if (!name.equals(this.name)) { - this.name = name; - model.notifyPropertyUpdated(this, TraceModelListener.NAME); - } - } - - /** - * Returns the name of this object. This never returns null - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Adds an extension to this object. Generates extensionAdded event to model - * listeners - * - * @param extension - * the new extension - */ - public void addExtension(TraceModelExtension extension) { - if (extension == null) { - throw new NullPointerException(); - } - extensions.add(extension); - extension.setOwner(this); - model.notifyExtensionAdded(this, extension); - } - - /** - * Removes an extension from this object. Generates extensionRemoved event - * to model listeners if the extension was actually removed - * - * @param extension - * the extension to be removed - */ - public void removeExtension(TraceModelExtension extension) { - if (extensions.remove(extension)) { - extension.setOwner(null); - model.notifyExtensionRemoved(this, extension); - } - } - - /** - * Removes all extensions which are of given type - * - * @param - * the type of the extension - * @param extClass - * the extension type - */ - public void removeExtensions( - Class extClass) { - Iterator itr = extensions.iterator(); - while (itr.hasNext()) { - TraceModelExtension ext = itr.next(); - if (extClass.isAssignableFrom(ext.getClass())) { - itr.remove(); - ext.setOwner(null); - model.notifyExtensionRemoved(this, ext); - } - } - } - - /** - * Returns the first extension which is of given type. The extensions are - * stored in a list in the order they have been added. This returns the - * first instance found from the list. - * - * @param - * the type of the extension - * @param extClass - * the extension type - * @return the extension or null if not found - */ - @SuppressWarnings("unchecked") - public T getExtension(Class extClass) { - T ret = null; - for (TraceModelExtension ext : extensions) { - if (extClass.isAssignableFrom(ext.getClass())) { - ret = (T) ext; - break; - } - } - return ret; - } - - /** - * Returns the extensions which are of given type. - * - * @param - * the type of the extension - * @param extClass - * the extension type - * @return iterator over the list of extension - */ - @SuppressWarnings("unchecked") - public Iterator getExtensions( - Class extClass) { - ArrayList list = new ArrayList(); - for (TraceModelExtension ext : extensions) { - if (extClass.isAssignableFrom(ext.getClass())) { - list.add((T) ext); - } - } - return list.iterator(); - } - - /** - * Resets the ID and name - */ - void reset() { - id = 0; - name = ""; //$NON-NLS-1$ - } - - /** - * Sets the complete flag and fires complete event - * @throws TraceCompilerException - */ - void setComplete() throws TraceCompilerException { - complete = true; - model.notifyObjectCreationComplete(this); - } - - /** - * Calls OnDelete rules if the object owns them - * - * @param object - * the object that was removed - */ - protected void notifyOnDelete(TraceObject object) { - Iterator rules = object - .getExtensions(TraceObjectRuleOnDelete.class); - while (rules.hasNext()) { - rules.next().objectDeleted(); - } - } - - /** - * Gets the complete flag - * - * @return the flag - */ - public boolean isComplete() { - return complete; - } - -}