diff -r a151135b0cf9 -r aa2539c91954 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceObjectFactory.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceObjectFactory.java Wed Sep 29 17:45:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,319 +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: -* -* Creates trace objects and provides configurable rules for trace object creation -* -*/ -package com.nokia.tracecompiler.model; - -import java.util.Iterator; - -/** - * Creates trace objects and provides configurable rules for trace object - * creation - * - */ -public class TraceObjectFactory { - - /** - * The trace model - */ - private TraceModel model; - - /** - * Rule factory - */ - private TraceObjectRuleFactory ruleFactory; - - /** - * Creates a new factory - * - * @param model - * the model - * @param factory - * the rule factory - * @throws TraceCompilerException - */ - TraceObjectFactory(TraceModel model, TraceObjectRuleFactory factory) throws TraceCompilerException { - this.model = model; - this.ruleFactory = factory; - processNewObjectRules(model); - model.setComplete(); - } - - /** - * Gets the rule factory - * - * @return the rule factory - */ - public TraceObjectRuleFactory getRuleFactory() { - return ruleFactory; - } - - /** - * Creates a new trace group - * - * @param id - * the group ID - * @param name - * the name for the group - * @param extensions - * list of extensions to be added to the group - * @return the new group - * @throws TraceCompilerException - */ - public TraceGroup createTraceGroup(int id, String name, - TraceModelExtension[] extensions) throws TraceCompilerException { - TraceGroup group = new TraceGroup(model); - group.setID(id); - group.setName(name); - setExtensions(group, extensions); - processNewObjectRules(group); - group.setComplete(); - return group; - } - - /** - * Creates a new trace - * - * @param group - * the trace group - * @param id - * the id for the trace - * @param name - * the trace name - * @param traceText - * the trace text - * @param extensions - * list of extensions to be added to the trace - * @return the new trace - * @throws TraceCompilerException - */ - public Trace createTrace(TraceGroup group, int id, String name, - String traceText, TraceModelExtension[] extensions) throws TraceCompilerException { - Trace trace = new Trace(group); - trace.setID(id); - trace.setName(name); - trace.setTrace(traceText); - setExtensions(trace, extensions); - processNewObjectRules(trace); - trace.setComplete(); - return trace; - } - - /** - * Creates a new trace parameter - * - * @param trace - * the trace the parameter is associated to - * @param id - * the parameter ID - * @param name - * the parameter name - * @param type - * parameter type - * @param extensions - * list of extensions to be added to the parameter - * @return the new parameter - * @throws TraceCompilerException - */ - public TraceParameter createTraceParameter(Trace trace, int id, - String name, String type, TraceModelExtension[] extensions) throws TraceCompilerException { - TraceParameter parameter = new TraceParameter(trace); - initializeParameter(parameter, id, name, type, extensions); - return parameter; - } - - /** - * Creates a new trace parameter inserting it into the specified index - * - * @param objectIndex - * the index for the object - * @param trace - * the trace the parameter is associated to - * @param id - * the parameter ID - * @param name - * the parameter name - * @param type - * parameter type - * @param extensions - * list of extensions to be added to the parameter - * @return the new parameter - * @throws TraceCompilerException - */ - public TraceParameter createTraceParameter(int objectIndex, Trace trace, - int id, String name, String type, TraceModelExtension[] extensions) throws TraceCompilerException { - TraceParameter parameter = new TraceParameter(trace, objectIndex); - initializeParameter(parameter, id, name, type, extensions); - return parameter; - } - - /** - * Initializes a parameter - * - * @param parameter - * the parameter - * @param id - * the parameter ID - * @param name - * the parameter name - * @param type - * parameter type - * @param extensions - * list of extensions to be added to the parameter - * @throws TraceCompilerException - */ - private void initializeParameter(TraceParameter parameter, int id, - String name, String type, TraceModelExtension[] extensions) throws TraceCompilerException { - parameter.setID(id); - parameter.setName(name); - parameter.setType(type); - setExtensions(parameter, extensions); - processNewObjectRules(parameter); - parameter.setComplete(); - } - - /** - * Creates a new constant table - * - * @param id - * id for the table - * @param typeName - * the name for the table - * @param extensions - * list of extensions to be added to the table - * @return the constant table - * @throws TraceCompilerException - */ - public TraceConstantTable createConstantTable(int id, String typeName, - TraceModelExtension[] extensions) throws TraceCompilerException { - TraceConstantTable table = new TraceConstantTable(model); - table.setID(id); - table.setName(typeName); - setExtensions(table, extensions); - processNewObjectRules(table); - table.setComplete(); - for (TraceGroup group : model) { - for (Trace trace : group) { - for (TraceParameter param : trace) { - if (param.getType().equals(typeName)) { - table.addParameterReference(param); - } - } - } - } - return table; - } - - /** - * Creates a new constant table entry - * - * @param table - * constant table - * @param id - * id for the entry - * @param value - * value for the entry - * @param extensions - * list of extensions to be added to the constant - * @return the constant table entry - * @throws TraceCompilerException - */ - public TraceConstantTableEntry createConstantTableEntry( - TraceConstantTable table, int id, String value, - TraceModelExtension[] extensions) throws TraceCompilerException { - TraceConstantTableEntry entry = new TraceConstantTableEntry(table); - entry.setID(id); - entry.setName(value); - setExtensions(entry, extensions); - processNewObjectRules(entry); - entry.setComplete(); - return entry; - } - - /** - * Creates an extension based on its name. This does not add the extension - * to the object, since the setData method should be called first - * - * @param object - * the target object for the extension - * @param name - * the extension name - * @return the created extension - */ - public TraceModelPersistentExtension createExtension(TraceObject object, - String name) { - return ruleFactory.createExtension(object, name); - } - - /** - * Adds extensions to given object - * - * @param object - * the object - * @param extensions - * extensions to be added - */ - private void setExtensions(TraceObject object, - TraceModelExtension[] extensions) { - if (extensions != null) { - for (TraceModelExtension element : extensions) { - object.addExtension(element); - } - } - } - - /** - * Processes the rules of a new object - * - * @param object - * the object to be processed - * @throws TraceCompilerException - */ - private void processNewObjectRules(TraceObject object) throws TraceCompilerException { - // Calls the factory to preprocess the extensions passed to - // create-function - ruleFactory.preProcessNewRules(object); - // The rules may contain object creation rules - Iterator rules = object - .getExtensions(TraceObjectRule.class); - while (rules.hasNext()) { - TraceObjectRule rule = rules.next(); - if (rule instanceof TraceObjectRuleCreateObject) { - TraceObjectRuleCreateObject createRule = (TraceObjectRuleCreateObject) rule; - createRule.createObject(); - } - } - // Some rules are removed after the objects have been created - Iterator itr; - boolean changed; - do { - changed = false; - itr = object.getExtensions(TraceObjectRuleRemoveOnCreate.class); - while (itr.hasNext() && !changed) { - TraceObjectRuleRemoveOnCreate ext = itr.next(); - if (ext.canBeRemoved()) { - object.removeExtension(ext); - changed = true; - } - } - } while (changed); - // After processing is complete, the rule factory is used to do - // post-processing - ruleFactory.postProcessNewRules(object); - } - -} \ No newline at end of file