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@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());
}
}
Show replies by date