svn commit: r595371 - /lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Thu Nov 15 09:29:44 2007
New Revision: 595371

URL: http://svn.apache.org/viewvc?rev=595371&view=rev
Log:
Preserve child order in DocumentManagerImpl.copyAll() and moveAll(). This fixes bug 43858.

Modified:
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?rev=595371&r1=595370&r2=595371&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Thu Nov 15 09:29:44 2007
@@ -20,9 +20,13 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -506,20 +510,31 @@
         SiteStructure site = sourceArea.getSite();
 
         SiteNode root = site.getNode(sourcePath);
-        NodeSet subsite = SiteUtil.getSubSite(this.manager, root);
+        List subsite = preOrder(root);
 
-        for (NodeIterator n = subsite.ascending(); n.hasNext();) {
-            SiteNode node = n.next();
+        for (Iterator n = subsite.iterator(); n.hasNext();) {
+            SiteNode node = (SiteNode) n.next();
             String subPath = node.getPath().substring(sourcePath.length());
             targetArea.getSite().add(targetPath + subPath);
         }
-        for (NodeIterator n = subsite.descending(); n.hasNext();) {
-            SiteNode node = n.next();
+        Collections.reverse(subsite);
+        for (Iterator n = subsite.iterator(); n.hasNext();) {
+            SiteNode node = (SiteNode) n.next();
             String subPath = node.getPath().substring(sourcePath.length());
             moveAllLanguageVersions(sourceArea, sourcePath + subPath, targetArea, targetPath
                     + subPath);
         }
     }
+    
+    protected List preOrder(SiteNode node) {
+    	List list = new ArrayList();
+    	list.add(node);
+    	SiteNode[] children = node.getChildren();
+    	for (int i = 0; i < children.length; i++) {
+    		list.addAll(preOrder(children[i]));
+    	}
+    	return list;
+    }
 
     public void moveAllLanguageVersions(Area sourceArea, String sourcePath, Area targetArea,
             String targetPath) throws PublicationException {
@@ -563,14 +578,13 @@
 
         SiteStructure site = sourceArea.getSite();
 
-        SiteNode root = site.getNode(sourcePath);
-        NodeSet subsite = SiteUtil.getSubSite(this.manager, root);
-
-        for (NodeIterator i = subsite.ascending(); i.hasNext();) {
-            SiteNode node = i.next();
-            String subPath = node.getPath().substring(sourcePath.length());
-            copyAllLanguageVersions(sourceArea, sourcePath + subPath, targetArea, targetPath
-                    + subPath);
+        copyAllLanguageVersions(sourceArea, sourcePath, targetArea, targetPath);
+        
+        SiteNode node = site.getNode(sourcePath);
+        SiteNode[] children = node.getChildren();
+        for (int i = 0; i < children.length; i++) {
+        	String childTargetPath = targetPath + "/" + children[i].getName();
+        	copyAll(sourceArea, children[i].getPath(), targetArea, childTargetPath);
         }
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.