2006/unicorn/org/w3c/unicorn/tasklist TaskListUnmarshallerBeans.java,1.6,1.7 Task.java,1.1.1.1,1.2 RDFUnmarshallerJena.java,1.2,1.3 TasksListUnmarshaller.java,1.2,1.3 TasksListUnmarshallerJAXB.java,1.2,NONE Observation.java,1.2,NONE

Update of /sources/public/2006/unicorn/org/w3c/unicorn/tasklist
In directory hutz:/tmp/cvs-serv7798/org/w3c/unicorn/tasklist

Modified Files:
	TaskListUnmarshallerBeans.java Task.java 
	RDFUnmarshallerJena.java TasksListUnmarshaller.java 
Removed Files:
	TasksListUnmarshallerJAXB.java Observation.java 
Log Message:
Changes for all the tasklist management

Index: RDFUnmarshallerJena.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/tasklist/RDFUnmarshallerJena.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- RDFUnmarshallerJena.java	17 Jun 2008 13:45:32 -0000	1.2
+++ RDFUnmarshallerJena.java	26 Aug 2008 15:26:37 -0000	1.3
@@ -8,13 +8,9 @@
 import java.net.URL;
 import java.util.Map;
 
-import javax.activation.MimeType;
-import javax.activation.MimeTypeParseException;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.w3c.unicorn.contract.Observer;
-import org.w3c.unicorn.generated.tasklist.TPriority;
 import org.w3c.unicorn.tasklist.parameters.Mapping;
 import org.w3c.unicorn.tasklist.parameters.Parameter;
 import org.w3c.unicorn.tasklist.parameters.Value;
@@ -43,15 +39,12 @@
 	private static Resource RESOURCE_TASK = null;
 
 	private static Property PROPERTY_DESCRIPTION = null;
-	private static Property PROPERTY_HANDLE = null;
 	private static Property PROPERTY_HASMAPPING = null;
 	private static Property PROPERTY_HASPARAMETER = null;
 	private static Property PROPERTY_HASVALUE = null;
 	private static Property PROPERTY_LONGNAME = null;
-	private static Property PROPERTY_MIMETYPE = null;
 	private static Property PROPERTY_OBSERVER = null;
 	private static Property PROPERTY_PARAMETER = null;
-	private static Property PROPERTY_PRIORITY = null;
 	private static Property PROPERTY_REFERENCE = null;
 	private static Property PROPERTY_TYPE = null;
 	private static Property PROPERTY_VALUE = null;
@@ -66,15 +59,12 @@
 
 		// define property use to find information into the RDF graph
 		RDFUnmarshallerJena.PROPERTY_DESCRIPTION = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"description");
-		RDFUnmarshallerJena.PROPERTY_HANDLE = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"handle");
 		RDFUnmarshallerJena.PROPERTY_HASMAPPING = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"hasMapping");
 		RDFUnmarshallerJena.PROPERTY_HASPARAMETER = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"hasParameter");
 		RDFUnmarshallerJena.PROPERTY_HASVALUE = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"hasValue");
 		RDFUnmarshallerJena.PROPERTY_LONGNAME = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"longName");
-		RDFUnmarshallerJena.PROPERTY_MIMETYPE = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"mimetype");
 		RDFUnmarshallerJena.PROPERTY_OBSERVER = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"observer");
 		RDFUnmarshallerJena.PROPERTY_PARAMETER = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"parameter");
-		RDFUnmarshallerJena.PROPERTY_PRIORITY = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"priority");
 		RDFUnmarshallerJena.PROPERTY_REFERENCE = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"reference");
 		RDFUnmarshallerJena.PROPERTY_TYPE = RDFUnmarshallerJena.MODEL.getProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
 		RDFUnmarshallerJena.PROPERTY_VALUE = RDFUnmarshallerJena.MODEL.getProperty(RDFUnmarshallerJena.UCN_NAMESPACE+"value");
@@ -253,28 +243,6 @@
 	}
 
 	/**
-	 * Adds a handler to the given task.
-	 * @param aTask The task to consider.
-	 * @param aHandler The handler to add.
-	 * @throws MimeTypeParseException
-	 */
-	private void addHandler (final Task aTask, final Resource aHandler) throws MimeTypeParseException {
-		RDFUnmarshallerJena.logger.trace("addHandler");
-		final String sMimeType = aHandler.getProperty(RDFUnmarshallerJena.PROPERTY_MIMETYPE).getLiteral().getString();
-		final String sObserver = aHandler.getProperty(RDFUnmarshallerJena.PROPERTY_OBSERVER).getLiteral().getString();
-		final String sPriority = aHandler.getProperty(RDFUnmarshallerJena.PROPERTY_PRIORITY).getLiteral().getString();
-		if (RDFUnmarshallerJena.logger.isDebugEnabled()) {
-			RDFUnmarshallerJena.logger.debug("Task : "+aTask.getID()+".");
-			RDFUnmarshallerJena.logger.debug("Observer : "+sObserver+".");
-			RDFUnmarshallerJena.logger.debug("Mime type : "+sMimeType+".");
-			RDFUnmarshallerJena.logger.debug("Priority : "+sPriority+".");
-		}
-		aTask.getMapOfObservation().get(sObserver).addMimeType(
-				new MimeType(sMimeType),
-				TPriority.fromValue(sPriority));
-	}
-
-	/**
 	 * Adds a task to this object.
 	 * @param aTask The task to add.
 	 * @throws Exception
@@ -322,20 +290,6 @@
 			}
 			this.addParameter(oTask, aParameter);
 		} // find and add Parameter of the task
-		// find and add Handler of the Task
-		for (
-				final StmtIterator siHandler = this.aModel.listStatements(
-						aTask,
-						RDFUnmarshallerJena.PROPERTY_HANDLE,
-						(RDFNode) null);
-				siHandler.hasNext();) {
-			final Resource aHandler = (Resource) siHandler.nextStatement().getObject();
-			if (null == aHandler) {
-				RDFUnmarshallerJena.logger.error("Resource handler == null.");
-				continue;
-			}
-			this.addHandler(oTask, aHandler);
-		} // find and add Handler of the Task
 	}
 
 	/* (non-Javadoc)

Index: TasksListUnmarshaller.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/tasklist/TasksListUnmarshaller.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- TasksListUnmarshaller.java	29 Jul 2008 14:03:14 -0000	1.2
+++ TasksListUnmarshaller.java	26 Aug 2008 15:26:37 -0000	1.3
@@ -6,7 +6,6 @@
 
 import java.util.Map;
 
-import org.w3c.unicorn.tasklisttree.TLTNode;
 import org.w3c.unicorn.util.Unmarshaller;
 
 /**

Index: TaskListUnmarshallerBeans.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/tasklist/TaskListUnmarshallerBeans.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- TaskListUnmarshallerBeans.java	30 Jul 2008 14:43:29 -0000	1.6
+++ TaskListUnmarshallerBeans.java	26 Aug 2008 15:26:36 -0000	1.7
@@ -28,6 +28,7 @@
 import org.w3c.unicorn.contract.EnumInputMethod;
 import org.w3c.unicorn.contract.InputMethod;
 import org.w3c.unicorn.contract.Observer;
+import org.w3c.unicorn.Framework;
 import org.w3c.unicorn.exceptions.ParameterException;
 import org.w3c.unicorn.tasklist.parameters.Mapping;
 import org.w3c.unicorn.tasklist.parameters.Parameter;
@@ -45,6 +46,7 @@
 	
 	private static final Log logger = LogFactory.getLog("org.w3c.unicorn.tasklist");
 	
+	private int NodeID=0;
 
 	
 	/**
@@ -81,11 +83,9 @@
 		}
 		
 		final Task aTaskCurrent = new Task();
-		aTaskCurrent.setTree(this.ExpandTree(aTask));
-		
-//		 id
+//		Create the execution level tree
 		aTaskCurrent.setID(aTask.getId());
-		
+		aTaskCurrent.setTree(this.ExpandTree(aTask));
 		
 //		 parameters
 		final ParametersType aParameters = aTask.getParameters();
@@ -361,17 +361,17 @@
 	 *            the task to transform into a tree
 	 */
 	public TLTNode ExpandTree(TaskType myTask) {
-		int level=0;
 		TaskListUnmarshallerBeans.logger.trace("Creation of the tree based on the Task "
 				+ myTask.getId());
 		TLTNode root = new TLTNode();
-		root.setLevel(level++);
+		root.setID(NodeID++);
 		for (ExecType exec : myTask.getRoutine().getExecArray()) {
-			root.addExec(new TLTExec(exec.getId(), exec.getValue(), exec
+			final Observer obs=Framework.mapOfObserver.get(exec.getValue());
+			root.addExec(new TLTExec(exec.getId(), obs,exec.getValue(), exec
 					.getType(), exec.getParam()));
 		}
 		for (IfType iflist : myTask.getRoutine().getIfArray()) {
-			root.addIf(fillIfs(myTask,iflist,level));
+			root.addIf(fillIfs(myTask,iflist));
 		}
 		return root;
 	}
@@ -383,16 +383,17 @@
 	 *            the ThenType node for the recursion
 	 * @return the node created
 	 */
-	private TLTNode FillNode(TaskType myTask,ThenType myThen,int level) {
+	private TLTNode FillNode(TaskType myTask,ThenType myThen) {
 		TaskListUnmarshallerBeans.logger.trace("Creation of a then branch ");
 		TLTNode node = new TLTNode();
-		node.setLevel(level++);
+		node.setID(NodeID++);
 		for (ExecType exec : myThen.getExecArray()) {
-			node.addExec(new TLTExec(exec.getId(), exec.getValue(), exec
+			final Observer obs=Framework.mapOfObserver.get(exec.getValue());
+			node.addExec(new TLTExec(exec.getId(),obs, exec.getValue(), exec
 					.getType(), exec.getParam()));
 		}
 		for (IfType iflist : myThen.getIfArray()) {
-			node.addIf(fillIfs(myTask,iflist,level));
+			node.addIf(fillIfs(myTask,iflist));
 		}
 		return node;
 	}
@@ -404,7 +405,7 @@
 	 *            the IfType node template to create the Ifnode
 	 * @return the node created
 	 */
-	private TLTIf fillIfs(TaskType myTask,IfType ifs,int level) {
+	private TLTIf fillIfs(TaskType myTask,IfType ifs) {
 		TaskListUnmarshallerBeans.logger.trace("Creation of an If ");
 		// Create the if node
 		TLTIf ifnode = new TLTIf();
@@ -418,7 +419,8 @@
 				if (condlist.getId().equals(cond)) {
 					TaskListUnmarshallerBeans.logger.trace("Creation of a condition " + cond);
 					myCond.setId(condlist.getId());
-					myCond.setObserver(condlist.getObserver());
+					final Observer obs=Framework.mapOfObserver.get(condlist.getObserver());
+					myCond.setObserver(obs);
 					myCond
 							.setResult(condlist.getResult().equals("passed") ? true
 									: false);
@@ -435,11 +437,11 @@
 		// Add recursively the inner ifs in the then part
 		if (ifs.getThen() != null) {
 			TaskListUnmarshallerBeans.logger.trace("Call recursion for the Then ");
-			ifnode.setIfOk(FillNode(myTask,ifs.getThen(),level));
+			ifnode.setIfOk(FillNode(myTask,ifs.getThen()));
 			// Add recursively the inner if in the else part
 			if (ifs.getElse() != null) {
 				TaskListUnmarshallerBeans.logger.trace("Call recursion for the else");
-				ifnode.setIfNotOk(FillNode(myTask,ifs.getElse(),level));
+				ifnode.setIfNotOk(FillNode(myTask,ifs.getElse()));
 			}
 		}
 		return ifnode;
@@ -531,7 +533,7 @@
 		// and parameters
 		for (final org.w3c.unicorn.tasklist.Task aTask : this.mapOfTask.values()) {
 			TaskListUnmarshallerBeans.logger.debug("Expand task : "+aTask.getID()+".");
-			aTask.expand(this.mapOfTask);
+			aTask.setTree(aTask.expandNode(mapOfTask, aTask.getTree()));
 		}
 
 	}

--- TasksListUnmarshallerJAXB.java DELETED ---

Index: Task.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/tasklist/Task.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- Task.java	31 Aug 2006 09:09:26 -0000	1.1.1.1
+++ Task.java	26 Aug 2008 15:26:37 -0000	1.2
@@ -13,7 +13,16 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.w3.unicorn.tasklist.ExecType;
+import org.w3.unicorn.tasklist.TaskType;
+import org.w3.unicorn.tasklist.IfType;
+import org.w3.unicorn.tasklist.ThenType;
+import org.w3.unicorn.tasklist.CondType;
 import org.w3c.unicorn.tasklist.parameters.Parameter;
+import org.w3c.unicorn.tasklisttree.TLTCond;
+import org.w3c.unicorn.tasklisttree.TLTExec;
+import org.w3c.unicorn.tasklisttree.TLTIf;
+import org.w3c.unicorn.tasklisttree.TLTNode;
 import org.w3c.unicorn.util.LocalizedString;
 
 /**
@@ -22,93 +31,133 @@
  */
 public class Task {
 
-	private static final Log logger = LogFactory.getLog("org.w3c.unicorn.tasklist");
+	private static final Log logger = LogFactory
+			.getLog("org.w3c.unicorn.tasklist");
 
 	/**
 	 * Id of the task
 	 */
 	private String sID;
-	
+
 	/**
 	 * Longnames of the task
 	 */
 	private LocalizedString aLocalizedStringLongName;
-	
+
 	/**
 	 * Descriptions of the task
 	 */
 	private LocalizedString aLocalizedStringDescription;
-	
-	/**
-	 * Observation of the task
-	 */
-	private Map<String, Observation> mapOfObservation;
+
 	
 	/**
 	 * Parameters of the task
 	 */
 	private Map<String, Parameter> mapOfTaskParameter;
-	
+
 	/**
 	 * References to other tasks
 	 */
 	private List<String> listOfReference;
-	
+
 	/**
 	 * Used to expand the task
 	 */
 	private boolean bExpandingOrExpanded = false;
-	
+
+	/**
+	 * Root of the execution level tree
+	 */
+	private TLTNode root;
+
+
 	/**
 	 * Creates a new Task.
 	 */
-	public Task () {
+	public Task() {
 		this.sID = "";
 		this.aLocalizedStringLongName = new LocalizedString();
 		this.aLocalizedStringDescription = new LocalizedString();
-		this.mapOfObservation = new LinkedHashMap<String, Observation>();
 		this.mapOfTaskParameter = new LinkedHashMap<String, Parameter>();
 		this.listOfReference = new ArrayList<String>();
 	}
 	
 	/**
+	 * Allows to display the tree of execution level
+	 * 
+	 * @param root
+	 *            the node to display
+	 */
+	public void displayTree(TLTNode root) {
+		for (TLTExec exec : root.getExecutionList()) {
+			System.out.println(exec);
+		}
+		for (TLTIf ifs : root.getIfList()) {
+			displayTree(ifs.getIfOk());
+			for (TLTCond conds : ifs.getCondArray())
+				System.out.println(conds);
+			displayTree(ifs.getIfNotOk());
+		}
+	}
+
+	/**
+	 * Get the root of the execution level tree
+	 * @return the root of the tree
+	 */
+	public TLTNode getTree() {
+		return this.root;
+	}
+	
+	
+	/**
+	 * Set the root of the execution level tree
+	 */
+	public void setTree(TLTNode root) {
+		this.root=root;
+	}
+	
+
+
+	/**
 	 * Creates a new Task.
+	 * 
 	 * @param aLocalizedStringDescription
 	 * @param sID
 	 * @param aLocalizedStringLongName
 	 * @param mapOfParameter
 	 * @param mapOfObservation
 	 */
-	public Task (
-			final String sID,
-			final LocalizedString aLocalizedStringDescription, 
+	public Task(final String sID,
+			final LocalizedString aLocalizedStringDescription,
 			final LocalizedString aLocalizedStringLongName,
-			final Map<String, Parameter> mapOfParameter,
-			final Map<String, Observation> mapOfObservation) {
+			final Map<String, Parameter> mapOfParameter) {
 		super();
 		this.aLocalizedStringDescription = aLocalizedStringDescription;
 		this.sID = sID;
 		this.aLocalizedStringLongName = aLocalizedStringLongName;
 		this.mapOfTaskParameter = mapOfParameter;
-		this.mapOfObservation = mapOfObservation;
 		this.listOfReference = new ArrayList<String>();
 	}
-	
+
 	/**
 	 * Returns the internationalized description of this task
+	 * 
 	 * @return Returns the description.
 	 */
-	public LocalizedString getDescription () {
+	public LocalizedString getDescription() {
 		return this.aLocalizedStringDescription;
 	}
 
 	/**
 	 * Returns a localized description of this task
-	 * @param sLang requested locale (e.g. en, fr, zn-ch, ...)
+	 * 
+	 * @param sLang
+	 *            requested locale (e.g. en, fr, zn-ch, ...)
 	 * @return the localized description corresponding to the locale
 	 */
-	public String getDescription (final String sLang) {
-		final String sDesc = this.aLocalizedStringDescription.getLocalization(sLang);
+	public String getDescription(final String sLang) {
+		final String sDesc = this.aLocalizedStringDescription
+				.getLocalization(sLang);
 		if (sDesc == null) {
 			return "";
 		}
@@ -117,23 +166,29 @@
 
 	/**
 	 * Sets the internationalized description of this task
-	 * @param aLocalizedString The description to set.
+	 * 
+	 * @param aLocalizedString
+	 *            The description to set.
 	 */
-	public void setDescription (final LocalizedString aLocalizedString) {
+	public void setDescription(final LocalizedString aLocalizedString) {
 		this.aLocalizedStringDescription = aLocalizedString;
 	}
 
 	/**
 	 * Adds a localized description to this task
-	 * @param sLang the locale of the description
-	 * @param sDesc the localized description of this task
+	 * 
+	 * @param sLang
+	 *            the locale of the description
+	 * @param sDesc
+	 *            the localized description of this task
 	 */
-	public void addDescription (final String sLang, final String sDesc) {
+	public void addDescription(final String sLang, final String sDesc) {
 		this.aLocalizedStringDescription.addLocalization(sLang, sDesc);
 	}
 
 	/**
 	 * Gets the id of this task
+	 * 
 	 * @return Returns the id.
 	 */
 	public String getID() {
@@ -142,115 +197,108 @@
 
 	/**
 	 * Sets the id of this task
-	 * @param sID The id to set.
+	 * 
+	 * @param sID
+	 *            The id to set.
 	 */
-	public void setID (final String sID) {
+	public void setID(final String sID) {
 		this.sID = sID;
 	}
 
 	/**
 	 * Returns the itnernationalized long name of this task
+	 * 
 	 * @return Returns the longname.
 	 */
-	public LocalizedString getLongName () {
+	public LocalizedString getLongName() {
 		return this.aLocalizedStringLongName;
 	}
-	
+
 	/**
 	 * Returns a localized long name of this task
-	 * @param sLang requested locale (e.g. en, fr, zn-ch, ...)
+	 * 
+	 * @param sLang
+	 *            requested locale (e.g. en, fr, zn-ch, ...)
 	 * @return the localized long name corresponding to the locale
 	 */
-	public String getLongName (final String sLang) {
-		final String sName = this.aLocalizedStringLongName.getLocalization(sLang);
+	public String getLongName(final String sLang) {
+		final String sName = this.aLocalizedStringLongName
+				.getLocalization(sLang);
 		if (sName == null) {
 			return "";
 		}
 		return sName;
 	}
-	
+
 	/**
 	 * Sets the internationalized long name of this task
-	 * @param aLocalizedString The longname to set.
+	 * 
+	 * @param aLocalizedString
+	 *            The longname to set.
 	 */
-	public void setLongName (final LocalizedString aLocalizedString) {
+	public void setLongName(final LocalizedString aLocalizedString) {
 		this.aLocalizedStringLongName = aLocalizedString;
 	}
-	
+
 	/**
 	 * Adds a localized long name to this task
-	 * @param sLang the locale of the long name
-	 * @param sLongName the localized long name of this task
+	 * 
+	 * @param sLang
+	 *            the locale of the long name
+	 * @param sLongName
+	 *            the localized long name of this task
 	 */
-	public void addLongName (final String sLang, final String sLongName) {
+	public void addLongName(final String sLang, final String sLongName) {
 		this.aLocalizedStringLongName.addLocalization(sLang, sLongName);
 	}
-	
+
 	/**
 	 * Returns the parameters list of this task
+	 * 
 	 * @return Returns the parameters.
 	 */
-	public Map<String, Parameter> getMapOfParameter () {
+	public Map<String, Parameter> getMapOfParameter() {
 		return this.mapOfTaskParameter;
 	}
-	
+
 	/**
 	 * Sets the parameters list of this task
-	 * @param mapOfParameter The parameters to set.
+	 * 
+	 * @param mapOfParameter
+	 *            The parameters to set.
 	 */
-	public void setMapOfParameter (final Map<String, Parameter> mapOfParameter) {
+	public void setMapOfParameter(final Map<String, Parameter> mapOfParameter) {
 		this.mapOfTaskParameter = mapOfParameter;
 	}
-	
+
 	/**
 	 * Adds a parameter to this task
+	 * 
 	 * @param aParameter
 	 */
-	public void addParameter (final Parameter aParameter) {
+	public void addParameter(final Parameter aParameter) {
 		this.mapOfTaskParameter.put(aParameter.getName(), aParameter);
 	}
-	
-	/**
-	 * Returns the observations composing this task
-	 * @return Returns the observations.
-	 */
-	public Map<String, Observation> getMapOfObservation() {
-		return this.mapOfObservation;
-	}
 
-	/**
-	 * Sets the observations of this task
-	 * @param mapOfObservation The observations to set.
-	 */
-	public void setMapOfObservation (final Map<String, Observation> mapOfObservation) {
-		this.mapOfObservation = mapOfObservation;
-	}
 
 	/**
-	 * Adds an observation to this task
-	 * @param sName name of the observation
-	 * @param aObservation the observation to add
-	 */
-	public void addObservation (final String sName, final Observation aObservation) {
-		this.mapOfObservation.put(sName, aObservation);
-	}
-	
-	/**
-	 * Returns a list of tasknames referenced bye this task 
+	 * Returns a list of tasknames referenced bye this task
+	 * 
 	 * @return Returns the references.
 	 */
-	public List<String> getListOfReference () {
+	public List<String> getListOfReference() {
 		return this.listOfReference;
 	}
-	
+
 	/**
 	 * Recursively expands this task and referenced ones and merges observations
-	 * and parameters.<br/>
-	 * If a task A includes a task B that includes a task C, expand will put 
-	 * both B and C in A's referenced tasks.
+	 * and parameters.<br/> If a task A includes a task B that includes a task
+	 * C, expand will put both B and C in A's referenced tasks.
+	 * 
 	 * @param mapOfTask
 	 */
-	public void expand (final Map<String, Task> mapOfTask) {
+	/*
+	public void expand(final Map<String, Task> mapOfTask) {
 		this.bExpandingOrExpanded = true;
 		final List<String> listOfOldReference = new ArrayList<String>();
 		// re-ask why there build another list of reference
@@ -261,30 +309,32 @@
 
 		for (final String sReference : listOfOldReference) {
 			final Task aTask = mapOfTask.get(sReference);
-			
+
 			if (aTask == null) {
-				Task.logger.error("The task " + sReference + " directly referenced " +
-						"by the task" + this.getID() + " does not seem to" +
-						" exist... Ignoring reference");
+				Task.logger.error("The task " + sReference
+						+ " directly referenced " + "by the task"
+						+ this.getID() + " does not seem to"
+						+ " exist... Ignoring reference");
 				continue;
 			}
-			
+
 			this.merge(aTask);
-			
+
 			if (!aTask.bExpandingOrExpanded) {
 				aTask.expand(mapOfTask);
 			}
-			
+
 			for (final String sNewReference : aTask.listOfReference) {
-				if (this.listOfReference.contains(sNewReference) || this.sID.equals(sNewReference)) {
+				if (this.listOfReference.contains(sNewReference)
+						|| this.sID.equals(sNewReference)) {
 					continue;
 				}
 				final Task aTaskCurrentRef = mapOfTask.get(sNewReference);
 				if (aTaskCurrentRef == null) {
-					Task.logger.error("The task " + sReference + " recursively" +
-							" referenced by the task" + getID() +
-							" does not seem to exist... Ignoring " +
-							"reference");
+					Task.logger.error("The task " + sReference + " recursively"
+							+ " referenced by the task" + getID()
+							+ " does not seem to exist... Ignoring "
+							+ "reference");
 					continue;
 				}
 				this.listOfReference.add(sNewReference);
@@ -292,71 +342,163 @@
 			}
 		}
 	}
-	
+	*/
+
 	/**
 	 * Merges another task with this one
-	 * @param aNotherTask the task to merge
+	 * 
+	 * @param aNotherTask
+	 *            the task to merge
 	 */
-	private void merge (final Task aNotherTask) {
+	/*
+	private void merge(final Task aNotherTask) {
 		this.mergeObservations(aNotherTask);
 		this.mergeParameters(aNotherTask);
 	}
-	
+*/
 	/**
 	 * Merges observations of another task with this one
-	 * @param aNotherTask the task to merge
+	 * 
+	 * @param aNotherTask
+	 *            the task to merge
 	 */
-	private void mergeObservations (final Task aNotherTask) {
+	/*
+	private void mergeObservations(final Task aNotherTask) {
 		Task.logger.trace("mergeObservations");
 		if (Task.logger.isDebugEnabled()) {
 			Task.logger.debug("Other task : " + aNotherTask + ".");
 		}
-		final Map<String, Observation> mapOfObservation = aNotherTask.getMapOfObservation();
-		for (final String sObservationID : mapOfObservation.keySet()) {				   
-			final Observation aObservation = mapOfObservation.get(sObservationID);
+		final Map<String, Observation> mapOfObservation = aNotherTask
+				.getMapOfObservation();
+		for (final String sObservationID : mapOfObservation.keySet()) {
+			final Observation aObservation = mapOfObservation
+					.get(sObservationID);
 			if (this.mapOfObservation.containsKey(sObservationID)) {
 				this.mapOfObservation.get(sObservationID).merge(aObservation);
-			}
-			else {
+			} else {
 				this.mapOfObservation.put(sObservationID, aObservation);
 			}
 		}
 	}
-	
+*/
 	/**
 	 * Merges parameters of another task with this one.
-	 * @param aNotherTask the other task to merge
+	 * 
+	 * @param aNotherTask
+	 *            the other task to merge
 	 */
-	private void mergeParameters (final Task aNotherTask) {
-		final Map<String, Parameter> mapOfParameter = aNotherTask.getMapOfParameter();
+	private void mergeParameters(final Task aNotherTask) {
+		final Map<String, Parameter> mapOfParameter = aNotherTask
+				.getMapOfParameter();
 		for (final String sParameterName : mapOfParameter.keySet()) {
-			final Parameter aLocalParameter = this.mapOfTaskParameter.get(sParameterName);
-			final Parameter aNotherParameter = mapOfParameter.get(sParameterName);
-			if(aLocalParameter != null) {
+			final Parameter aLocalParameter = this.mapOfTaskParameter
+					.get(sParameterName);
+			final Parameter aNotherParameter = mapOfParameter
+					.get(sParameterName);
+			if (aLocalParameter != null) {
 				aLocalParameter.merge(aNotherParameter);
-			}
-			else {
+			} else {
 				this.mapOfTaskParameter.put(sParameterName, aNotherParameter);
 			}
 		}
 	}
 	
+	
+
+	public void mergeSubtask(final Map<String, Task> mapOfTask, Task subtask) {
+		for (TLTExec exec : subtask.getTree().getExecutionList()) {
+			if (exec.getType().equals("observation"))
+				this.root.addExec(exec);
+			else if (exec.getType().equals("subtask")) {
+				Task newTask = mapOfTask.get(exec.getValue());
+				newTask.expandNode(mapOfTask,newTask.getTree());
+				mergeSubtask(mapOfTask,newTask);
+			}
+				
+		}
+		for (TLTIf tltIf : subtask.getTree().getIfList()) {
+			this.root.addIf(tltIf);
+		}
+	}
+	
+	/**
+	 * 
+	 */
+	public TLTNode expandNode(final Map<String, Task> mapOfTask, TLTNode aRoot) {
+		aRoot.bExpandingOrExpanded = true;
+		
+		TLTNode finalRoot = new TLTNode();
+		
+		for (TLTExec exec : aRoot.getExecutionList()) {
+			if (exec.getType().equals("subtask")) {
+				finalRoot = mergeNode(mapOfTask, finalRoot, 
+						mapOfTask.get(exec.getValue()).getTree());
+			}
+			else if (exec.getType().equals("observation")) {
+				finalRoot.addExec(exec);
+			}
+		}	
+
+		for (TLTIf tltIf : aRoot.getIfList()) {
+			tltIf = expandIf(mapOfTask, tltIf);
+			finalRoot.addIf(tltIf);
+		}
+		
+		return finalRoot;
+	}
+	
+	
+		public TLTNode mergeNode(final Map<String,Task> mapOfTask, TLTNode firstNode,
+				TLTNode secondNode) {
+			TLTNode finalNode = firstNode;
+			for (TLTExec exec : secondNode.getExecutionList()) {
+				if (exec.getType().equals("observation"))
+					finalNode.addExec(exec);
+				else if (exec.getType().equals("subtask")) {
+					TLTNode newNode = mapOfTask.get(exec.getValue()).getTree();
+					if (!mapOfTask.get(exec.getValue()).getTree().bExpandingOrExpanded) 
+						newNode = 
+							expandNode(mapOfTask,mapOfTask.get(exec.getValue()).getTree());					
+					finalNode = mergeNode(mapOfTask,finalNode,newNode);
+				}
+			}
+			for (TLTIf tltIf : secondNode.getIfList()) {
+				tltIf = expandIf(mapOfTask,tltIf);
+				finalNode.addIf(tltIf);
+			}	
+			return finalNode;
+		}
+		
+	
+		public TLTIf expandIf(final Map<String,Task> mapOfTask, TLTIf tltIf) {
+			if (!tltIf.getIfOk().bExpandingOrExpanded) {
+				TLTNode tltIfOk = expandNode(mapOfTask,tltIf.getIfOk());
+				tltIf.setIfOk(tltIfOk);
+			}
+			if (!tltIf.getIfNotOk().bExpandingOrExpanded) {
+				TLTNode tltIfNotOk = expandNode(mapOfTask,tltIf.getIfNotOk());	
+				tltIf.setIfNotOk(tltIfNotOk);
+			}
+			return tltIf;
+		}
+
 	/**
 	 * Adds a reference to another task
-	 * @param sReference the referenced task
+	 * 
+	 * @param sReference
+	 *            the referenced task
 	 */
-	public void addReference (final String sReference) {
+	public void addReference(final String sReference) {
 		this.listOfReference.add(sReference);
 	}
-		
-	public String toString () {
+
+	public String toString() {
 		final int iStringBufferSize = 5000;
 		final String sVariableSeparator = "\n";
 		final StringBuffer aStringBuffer = new StringBuffer(iStringBufferSize);
 
 		aStringBuffer.append("ID:").append(sID);
 		aStringBuffer.append(sVariableSeparator);
-		aStringBuffer.append("observations:").append(this.mapOfObservation);
 		aStringBuffer.append(sVariableSeparator);
 		aStringBuffer.append("parameters:").append(this.mapOfTaskParameter);
 		aStringBuffer.append(sVariableSeparator);
@@ -365,18 +507,5 @@
 		return aStringBuffer.toString();
 	}
 
-	/**
-	 * Test if the mimetype is handle by a observer in this task.
-	 * @param aMimeType The mimetype to test.
-	 * @return Result of the test.
-	 */
-	public boolean allowMimeType (final MimeType aMimeType) {
-		for (final Observation aObservation : this.mapOfObservation.values()) {
-			if (aObservation.allowMimeType(aMimeType)) {
-				return true;
-			}
-		}
-		return false;
-	}
 
 }

--- Observation.java DELETED ---

Received on Tuesday, 26 August 2008 15:27:15 UTC