Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2429)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2430)
@@ -120,7 +120,7 @@
 	
 	
 	/**
-	 * Instantiates a new partition.
+	 * Computes the Partition using a list of queries.
 	 *
 	 * @param corpus the corpus
 	 * @param name the name
@@ -137,7 +137,7 @@
 		Log.fine(NLS.bind(SearchEngineCoreMessages.info_creatingNewPartition, this.getParent(), this.userName));
 		long start = System.currentTimeMillis();
 		
-		if (monitor != null) monitor.beginTask("Building parts...", pQueries.size());
+		this.beginTask("Building parts...", pQueries.size());
 		
 		for (int i = 0; i < pQueries.size(); i++) {
 			String queryS = pQueries.get(i);
@@ -150,7 +150,8 @@
 				partName = "-"; //$NON-NLS-1$
 			}
 			new Part(this, partName, queryS);
-			if (monitor != null) monitor.worked(1);
+			
+			this.worked(1);
 		}
 		long end = System.currentTimeMillis();
 		Log.fine(NLS.bind(SearchEngineCoreMessages.info_partitionCreatedInXMs, this.userName, (end - start)));
@@ -253,15 +254,20 @@
 	@Override
 	protected boolean _compute() throws Exception {
 		
-		// Parts already created
+		// Parts already created but not computed
+		// This case happens at TXM start, when Parts have not been yet computed
+		// FIXME: SJ: problem, this code is executed and THEN Partition.compute() calls again Part.compute() of all its children
+		// FIXME: SJ: need to remove this code, the compute of children should not be done here
 		if (this.getParts().size() > 0) {
 			
-			if (monitor != null) monitor.beginTask("Building parts...", this.getParts().size());
+			this.beginTask("Building partition parts...", this.getParts().size());
+			Log.info("Building partition parts...");
+			
 			// FIXME: temporary fix, compute all the children parts
 			List<Part> parts = (List<Part>) getChildren(Part.class);
 			for (int i = 0; i < parts.size(); i++) {
+				this.worked(1);
 				parts.get(i).compute();
-				if (monitor != null) monitor.worked(1);
 			}
 		}
 		else {
@@ -274,45 +280,10 @@
 				_compute_with_lists();
 			}
 		}
-		totalsize = -1; // refresh total size at next call of getTotalSize
+		this.totalsize = -1; // refresh total size at next call of getTotalSize
 		return true;
 	}
 	
-	/*
-	 * (non-Javadoc)
-	 * @see org.txm.objects.TxmObject#load()
-	 */
-	protected boolean _load(Element e) {
-		
-		// partition already computed
-		if (this.hasBeenComputedOnce) {
-			return true;
-		}
-		
-		if (e != null && this.getParent() != null) {
-			NodeList partList = e.getChildNodes();
-			for (int i = 0; i < partList.getLength(); i++) {
-				if (partList.item(i).getNodeType() == 1) {
-					Element c = (Element) partList.item(i);
-					if (c.getNodeName().equals("part")) { //$NON-NLS-1$
-						String pname = c.getAttribute("name"); //$NON-NLS-1$
-						String pshortname = c.getAttribute("shortname"); //$NON-NLS-1$
-						String pquery = c.getAttribute("query"); //$NON-NLS-1$
-						for (Part part : getParts()) {
-							if (part.getName().equals(pname)) {
-								part.setName(pname);
-								part.setQuery(new CQLQuery(pquery));
-							}
-						}
-					}
-				}
-			}
-			// this.loadMetadata();
-			return true;
-		}
-		
-		return false;
-	}
 	
 	@Override
 	public boolean canCompute() {
@@ -378,6 +349,43 @@
 	// }
 	
 	
+	/*
+	 * (non-Javadoc)
+	 * @see org.txm.objects.TxmObject#load()
+	 */
+	protected boolean _load(Element e) {
+		
+		// partition already computed
+		if (this.hasBeenComputedOnce) {
+			return true;
+		}
+		
+		if (e != null && this.getParent() != null) {
+			NodeList partList = e.getChildNodes();
+			for (int i = 0; i < partList.getLength(); i++) {
+				if (partList.item(i).getNodeType() == 1) {
+					Element c = (Element) partList.item(i);
+					if (c.getNodeName().equals("part")) { //$NON-NLS-1$
+						String pname = c.getAttribute("name"); //$NON-NLS-1$
+						String pshortname = c.getAttribute("shortname"); //$NON-NLS-1$
+						String pquery = c.getAttribute("query"); //$NON-NLS-1$
+						for (Part part : getParts()) {
+							if (part.getName().equals(pname)) {
+								part.setName(pname);
+								part.setQuery(new CQLQuery(pquery));
+							}
+						}
+					}
+				}
+			}
+			// this.loadMetadata();
+			return true;
+		}
+		
+		return false;
+	}
+	
+	
 	@Override
 	public String getDetails() {
 		return this.getName();
