[gatein-commits] gatein SVN: r3024 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon May 10 08:04:05 EDT 2010


Author: hoang_to
Date: 2010-05-10 08:04:05 -0400 (Mon, 10 May 2010)
New Revision: 3024

Modified:
   portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/PageNavigationUtils.java
   portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UINavigationNodeSelector.java
Log:
GTNPORTAL-1110: Refactor search methods in PageNavigationUtils and UINavigationNodeSelector

Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/PageNavigationUtils.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/PageNavigationUtils.java	2010-05-10 08:22:32 UTC (rev 3023)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/PageNavigationUtils.java	2010-05-10 12:04:05 UTC (rev 3024)
@@ -65,10 +65,14 @@
     * 
     * 2. The element indexed 0 is its parent
     * 
+    * @deprecated Returning 2-element array would makes it difficult to understand, handle the code. 
+    * Method searchParentChildPairByUri should be used instead.
+    * 
     * @param node
     * @param uri
     * @return
     */
+   @Deprecated
    public static PageNode[] searchPageNodesByUri(PageNode node, String uri)
    {
       if (node.getUri().equals(uri))
@@ -89,6 +93,7 @@
       return null;
    }
 
+   @Deprecated
    public static PageNode[] searchPageNodesByUri(PageNavigation nav, String uri)
    {
       if (nav.getNodes() == null)
@@ -102,7 +107,62 @@
       }
       return null;
    }
-
+   
+   /**
+    * This method returns a pair of a node matching the parsed uri and the parent of this node.
+    * 
+    * @param nav
+    * @param uri
+    * @return
+    */
+   public static ParentChildPair searchParentChildPairByUri(PageNavigation nav, String uri)
+   {
+      List<PageNode> nodes = nav.getNodes();
+      
+      if(nodes == null)
+      {
+         return null;
+      }
+      
+      for(PageNode ele : nodes)
+      {
+         ParentChildPair parentChildPair = searchParentChildPairUnderNode(ele, uri);
+         if(parentChildPair != null)
+         {
+            return parentChildPair;
+         }
+      }
+      
+      return null;
+   }
+   
+   public static ParentChildPair searchParentChildPairUnderNode(PageNode rootNode, String uri)
+   {
+      if(uri.equals(rootNode.getUri()))
+      {
+         return new ParentChildPair(null, rootNode);
+      }
+      
+      List<PageNode> nodes = rootNode.getNodes();
+      if(nodes == null)
+      {
+         return null;
+      }
+      
+      for(PageNode node : nodes)
+      {
+         ParentChildPair parentChildPair = searchParentChildPairUnderNode(node, uri);
+         if(parentChildPair != null)
+         {
+            parentChildPair.setParentNode(node);
+            return parentChildPair;
+         }
+      }
+      
+      return null;
+   }
+   
+   
    public static PageNode searchPageNodeByUri(PageNode node, String uri)
    {
       if (node.getUri().equals(uri))
@@ -326,4 +386,43 @@
       }
       return null;
    }
+   
+   /**
+    * 
+    * @author <a href="mailto:hoang281283 at gmail.com">Minh Hoang TO</a>
+    * @version $Id$
+    *
+    */
+   public static class ParentChildPair
+   {
+      private PageNode parentNode;
+      
+      private PageNode childNode;
+      
+      public ParentChildPair(PageNode _parentNode, PageNode _childNode)
+      {
+         this.parentNode = _parentNode;
+         this.childNode = _childNode;
+      }
+      
+      public PageNode getParentNode()
+      {
+         return parentNode;
+      }
+      
+      public PageNode getChildNode()
+      {
+         return childNode;
+      }
+      
+      public void setParentNode(PageNode _parentNode)
+      {
+         this.parentNode = _parentNode;
+      }
+      
+      public void setChildNode(PageNode _childNode)
+      {
+         this.childNode = _childNode;
+      }
+   }
 }

Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UINavigationNodeSelector.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UINavigationNodeSelector.java	2010-05-10 08:22:32 UTC (rev 3023)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UINavigationNodeSelector.java	2010-05-10 12:04:05 UTC (rev 3024)
@@ -26,6 +26,7 @@
 import org.exoplatform.portal.config.model.PageNode;
 import org.exoplatform.portal.config.model.PortalConfig;
 import org.exoplatform.portal.mop.Visibility;
+import org.exoplatform.portal.webui.navigation.PageNavigationUtils.ParentChildPair;
 import org.exoplatform.portal.webui.page.UIPage;
 import org.exoplatform.portal.webui.page.UIPageNodeForm2;
 import org.exoplatform.portal.webui.portal.UIPortalComposer;
@@ -804,31 +805,29 @@
             return;
          }
 
-         PageNode[] pageNodes = PageNavigationUtils.searchPageNodesByUri(nav, uri);
-         if (pageNodes == null)
+         ParentChildPair parentChildPair = PageNavigationUtils.searchParentChildPairByUri(nav, uri);
+         if (parentChildPair == null)
          {
             return;
          }
 
-         if (pageNodes[0] == null)
-         {
-        	if(pageNodes[1].isSystem()) {
+         PageNode parentNode = parentChildPair.getParentNode();
+         PageNode childNode = parentChildPair.getChildNode();
+         
+         if(childNode.isSystem()) {
         		uiApp.addMessage(new ApplicationMessage("UINavigationNodeSelector.msg.systemnode-delete", null, ApplicationMessage.ERROR));
         		return;
         	}
-        		
-            nav.getNodes().remove(pageNodes[1]);
-            return;
+        	
+         if(parentNode == null)
+         {
+            nav.getNodes().remove(childNode);
          }
-         
-         for (PageNode pageNode : pageNodes) {
-			if(pageNode.isSystem()) {
-				uiApp.addMessage(new ApplicationMessage("UINavigationNodeSelector.msg.systemnode-delete", null, ApplicationMessage.ERROR));
-				return;
-			}
+         else
+         {
+            parentNode.getNodes().remove(childNode);
+            uiNodeSelector.selectPageNodeByUri(parentNode.getUri());
          }
-         pageNodes[0].getChildren().remove(pageNodes[1]);
-         uiNodeSelector.selectPageNodeByUri(pageNodes[0].getUri());
       }
    }
 



More information about the gatein-commits mailing list