diff -r a151135b0cf9 -r aa2539c91954 tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/LocationMapModelListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/LocationMapModelListener.java Fri Oct 08 14:56:39 2010 +0300 @@ -0,0 +1,113 @@ +/* +* 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: +* +* Model listener for trace location mapper +* +*/ +package com.nokia.tracecompiler.engine; + +import com.nokia.tracecompiler.model.Trace; +import com.nokia.tracecompiler.model.TraceCompilerException; +import com.nokia.tracecompiler.model.TraceGroup; +import com.nokia.tracecompiler.model.TraceModelListener; +import com.nokia.tracecompiler.model.TraceObject; +import com.nokia.tracecompiler.model.TraceParameter; + +/** + * Model listener for trace location mapper + * + */ +final class LocationMapModelListener implements TraceModelListener { + + /** + * Trace location mapper + */ + private final TraceLocationMap locationMap; + + /** + * Constructor + * + * @param map + * the location mapper + */ + LocationMapModelListener(TraceLocationMap map) { + locationMap = map; + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracecompiler.model.TraceModelListener# + * objectAdded(com.nokia.tracecompiler.model.TraceObject, + * com.nokia.tracecompiler.model.TraceObject) + */ + public void objectAdded(TraceObject owner, TraceObject object) { + // A trace does not have a name yet, so this does nothing + // The locations are assigned to the trace in propertyChanged + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracecompiler.model.TraceModelListener# + * objectRemoved(com.nokia.tracecompiler.model.TraceObject, + * com.nokia.tracecompiler.model.TraceObject) + */ + public void objectRemoved(TraceObject owner, TraceObject object) throws TraceCompilerException { + if (object instanceof Trace) { + locationMap.moveToUnrelated((Trace) object); + } else if (object instanceof TraceGroup) { + // Moves locations to unrelated list + for (Trace trace : (TraceGroup) object) { + locationMap.moveToUnrelated(trace); + } + } + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracecompiler.model.TraceModelListener# + * propertiesUpdated(com.nokia.tracecompiler.model.TraceObject) + */ + public void propertyUpdated(TraceObject object, int property) throws TraceCompilerException { + if (object instanceof Trace && property == NAME && object.isComplete()) { + Trace trace = (Trace) object; + locationMap.moveFromUnrelated(trace); + } + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracecompiler.model.TraceModelListener# + * objectCreationComplete(com.nokia.tracecompiler.model.TraceObject) + */ + public void objectCreationComplete(TraceObject object) throws TraceCompilerException { + if (object instanceof Trace) { + Trace trace = (Trace) object; + locationMap.moveFromUnrelated(trace); + } else if (object instanceof TraceParameter) { + // If a parameter is added, the validity needs to be checked + TraceLocationList list = ((TraceParameter) object).getTrace() + .getExtension(TraceLocationList.class); + if (list != null) { + for (LocationProperties loc : list) { + ((TraceLocation) loc).runValidityCheck(); + } + } + } + } +} \ No newline at end of file