Update of 
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation
In directory 
james.mmbase.org:/tmp/cvs-serv26804/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation

Modified Files:
        PathTag.java LocationTag.java OnPathTag.java LinkTag.java 
Log Message:
CMSC-755 Navigation code refactored to use navigationitem


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation
See also: http://www.mmbase.org/jira/browse/CMSC-755


Index: PathTag.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/PathTag.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- PathTag.java        30 Nov 2007 10:58:32 -0000      1.11
+++ PathTag.java        28 Jan 2008 21:15:45 -0000      1.12
@@ -12,29 +12,28 @@
 import java.util.Iterator;
 import java.util.List;
 
-import com.finalist.cmsc.beans.om.Page;
+import com.finalist.cmsc.beans.om.NavigationItem;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
 import com.finalist.cmsc.taglib.AbstractListTag;
 
 /**
- * path of pages valid attributes for this tag are:
+ * path of items valid attributes for this tag are:
  * <ul>
  * <li>mode := <strong>menu</strong>|hidden|all</li>
  * <li>includeSite := <strong>true</strong>|false</li>
- * <li>page := 1..n</li>
+ * <li>item := 1..n</li>
  * </ul>
  * Examples: <cmsc:path var="listPath" /> <cmsc:path var="listPath" mode="all"
  * includeSite="false" page="${myPage}"/>
  */
-public class PathTag extends AbstractListTag<Page> {
+public class PathTag extends AbstractListTag<NavigationItem> {
 
-   private static final String MODE_ALL = "all";
    private static final String MODE_HIDDEN = "hidden";
    private static final String MODE_MENU = "menu";
 
    private String mode = MODE_MENU;
    private boolean includeSite = true;
-   private int page;
+   private int itemNumber;
 
 
    public boolean isIncludeSite() {
@@ -76,7 +75,7 @@
 
 
    public int getPage() {
-      return page;
+      return itemNumber;
    }
 
 
@@ -89,36 +88,36 @@
     *           current page
     */
    public void setPage(int page) {
-      this.page = page;
+      this.itemNumber = page;
    }
 
 
    @Override
-   protected List<Page> getList() {
+   protected List<NavigationItem> getList() {
       String path;
 
-      if (page > 0) {
-         // get path for a specific page
-         path = getPathForPage();
+      if (itemNumber > 0) {
+         // get path for a specific item
+         path = getPathForItem();
       }
       else {
-         // get path for current page
+         // get path for current item
          path = getPath();
       }
       if (path == null) {
          return null;
       }
 
-      List<Page> pages = SiteManagement.getListFromPath(path);
-      if (pages == null) {
-         return pages;
+      List<NavigationItem> items = SiteManagement.getListFromPath(path);
+      if (items == null) {
+         return items;
       }
 
       if (MODE_MENU.equalsIgnoreCase(mode)) {
          boolean hideChildren = false;
-         for (Iterator<? extends Page> iter = pages.iterator(); 
iter.hasNext();) {
-            Page page = iter.next();
-            if (hideChildren || !page.isInmenu()) {
+         for (Iterator<NavigationItem> iter = items.iterator(); 
iter.hasNext();) {
+            NavigationItem item = iter.next();
+            if (hideChildren || !item.isInmenu()) {
                iter.remove();
                hideChildren = true;
             }
@@ -126,9 +125,9 @@
       }
       else if (MODE_HIDDEN.equalsIgnoreCase(mode)) {
          boolean showChildren = false;
-         for (Iterator<? extends Page> iter = pages.iterator(); 
iter.hasNext();) {
-            Page page = iter.next();
-            if (showChildren || page.isInmenu()) {
+         for (Iterator<NavigationItem> iter = items.iterator(); 
iter.hasNext();) {
+            NavigationItem item = iter.next();
+            if (showChildren || item.isInmenu()) {
                iter.remove();
                showChildren = true;
             }
@@ -136,20 +135,20 @@
       }
 
       // remove the first entry if the site itself should not be shown
-      if (!includeSite && pages.size() > 0) {
-         pages.remove(0);
+      if (!includeSite && items.size() > 0) {
+         items.remove(0);
       }
 
-      return pages;
+      return items;
    }
 
 
-   private String getPathForPage() {
+   private String getPathForItem() {
       String path = null;
 
-      Page tmpPage = SiteManagement.getPage(page);
-      if (tmpPage != null) {
-         path = SiteManagement.getPath(tmpPage, true);
+      NavigationItem tmpItem = SiteManagement.getNavigationItem(itemNumber);
+      if (tmpItem != null) {
+         path = SiteManagement.getPath(tmpItem, true);
       }
 
       return path;


Index: LocationTag.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/LocationTag.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- LocationTag.java    26 Nov 2007 11:43:40 -0000      1.7
+++ LocationTag.java    28 Jan 2008 21:15:45 -0000      1.8
@@ -12,8 +12,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.PageContext;
 
-import com.finalist.cmsc.beans.om.Page;
-import com.finalist.cmsc.beans.om.Site;
+import com.finalist.cmsc.beans.om.*;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
 import com.finalist.cmsc.taglib.CmscTag;
 
@@ -54,7 +53,7 @@
       if (path == null) {
          path = getPath();
       }
-      Page result = SiteManagement.getPageFromPath(path);
+      NavigationItem result = SiteManagement.getNavigationItemFromPath(path);
 
       // handle result
       if (result == null) {


Index: OnPathTag.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/OnPathTag.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- OnPathTag.java      26 Nov 2007 11:43:40 -0000      1.5
+++ OnPathTag.java      28 Jan 2008 21:15:45 -0000      1.6
@@ -17,7 +17,7 @@
 import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.tagext.JspFragment;
 
-import com.finalist.cmsc.beans.om.Page;
+import com.finalist.cmsc.beans.om.NavigationItem;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
 import com.finalist.cmsc.taglib.CmscTag;
 
@@ -25,7 +25,7 @@
  * Checks if a Site or Page is on the path
  * 
  * @author Wouter Heijke
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
  */
 public class OnPathTag extends CmscTag {
    /**
@@ -33,7 +33,7 @@
     */
    private String var;
 
-   private Object origin;
+   private NavigationItem origin;
 
 
    @Override
@@ -41,17 +41,15 @@
       boolean onpath = false;
 
       String path = getPath();
-      List<Page> contents = SiteManagement.getListFromPath(path);
-      if (contents != null) {
-         for (int i = 0; i < contents.size(); i++) {
-            Object item = contents.get(i);
-            if (item instanceof Page && origin instanceof Page) {
-               if (((Page) item).getId() == ((Page) origin).getId()) {
+      List<NavigationItem> items = SiteManagement.getListFromPath(path);
+      if (items != null) {
+         for (int i = 0; i < items.size(); i++) {
+            NavigationItem item = items.get(i);
+            if (item.getId() == origin.getId()) {
                   onpath = true;
                }
             }
          }
-      }
 
       if (var != null && var.length() > 0) {
          PageContext ctx = (PageContext) getJspContext();
@@ -71,7 +69,7 @@
 
 
    public void setOrigin(Object origin) {
-      this.origin = origin;
+       this.origin = SiteManagement.convertToNavigationItem(origin);
    }
 
 


Index: LinkTag.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/LinkTag.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- LinkTag.java        28 Jan 2008 12:38:28 -0000      1.16
+++ LinkTag.java        28 Jan 2008 21:15:45 -0000      1.17
@@ -50,8 +50,8 @@
     * Parameters added by nested param tag
     */
    private Map<String, Object> params = new HashMap<String, Object>();
-   private Page page;
-   private Page defaultPage;
+   private NavigationItem page;
+   private NavigationItem defaultPage;
 
 
    @Override
@@ -79,23 +79,26 @@
       if (page != null) {
          String newlink = null;
 
-         String externalurl = page.getExternalurl();
+         String externalurl = null;
+         if (page instanceof Page) {
+             externalurl = ((Page) page).getExternalurl();
+         }
          if (!StringUtils.isBlank(externalurl)) {
             if (externalurl.indexOf("://") > -1) {
                newlink = externalurl;
             }
             else {
-               Page internalPage = SiteManagement.getPageFromPath(externalurl);
+               NavigationItem internalPage = 
SiteManagement.getNavigationItemFromPath(externalurl);
                if (internalPage != null) {
                   String link = SiteManagement.getPath(internalPage, 
!ServerUtil.useServerName());
-                  newlink = getPageUrl(request, link);
+                  newlink = getItemUrl(request, link);
                }
             }
          }
          else {
             String link = SiteManagement.getPath(page, 
!ServerUtil.useServerName());
             if (link != null) {
-               newlink = getPageUrl(request, link);
+               newlink = getItemUrl(request, link);
             }
          }
          // handle result
@@ -125,7 +128,7 @@
 
 
    private void setPageAndWindowBasedOnPortletDefinition(String path, String 
portletdefinition) {
-      List<Page> pages = SiteManagement.getListFromPath(path);
+      List<Page> pages = SiteManagement.getPagesFromPath(path);
       int lastIndexOfPages = pages.size() - 1;
 
       if (restrictToCurrentPage) {
@@ -181,8 +184,8 @@
    }
 
 
-   private Page getPageWithUrlFragement(String path, String urlfragment) {
-      List<Page> pages = SiteManagement.getListFromPath(path);
+   private NavigationItem getPageWithUrlFragement(String path, String 
urlfragment) {
+      List<Page> pages = SiteManagement.getPagesFromPath(path);
       int lastIndexOfPages = pages.size() - 1;
       for (int i = lastIndexOfPages; i >= 0; i--) {
          Page currentPage = pages.get(i);
@@ -205,7 +208,7 @@
    }
 
 
-   private String getPageUrl(HttpServletRequest request, String link) throws 
JspException, IOException {
+   private String getItemUrl(HttpServletRequest request, String link) throws 
JspException, IOException {
       String newlink = null;
       if (link != null) {
          // handle body, call any nested tags
@@ -221,10 +224,24 @@
          }
          PortalURL u = new PortalURL(host, request, link);
 
+         if (page instanceof Page) {
+             addPortletParametersToUrl(u);
+         }
+
+         newlink = u.toString();
+
+         if (newlink != null && newlink.length() == 0) {
+            newlink = "/";
+         }
+      }
+      return newlink;
+   }
+
+    private void addPortletParametersToUrl(PortalURL u) {
          if (element != null) {
             int pageId = page.getId();
             if (window == null) {
-               window = Search.getPortletWindow(pageId, element, host);
+               window = Search.getPortletWindow(pageId, element);
             }
             if (window != null) {
                u.setRenderParameter(window, "elementId", new String[] { 
element });
@@ -236,14 +253,6 @@
                u.setRenderParameter(window, paramEntry.getKey(), new String[] 
{ paramEntry.getValue().toString() });
             }
          }
-
-         newlink = u.toString();
-
-         if (newlink != null && newlink.length() == 0) {
-            newlink = "/";
-         }
-      }
-      return newlink;
    }
 
 
@@ -256,18 +265,7 @@
     */
    public void setDest(Object dest) {
       if (dest != null) {
-         if (dest instanceof Page) {
-            page = (Page) dest;
-         }
-         else if (dest instanceof Integer) {
-            page = getPageInteger((Integer) dest);
-         }
-         else if (dest instanceof String) {
-            page = getPageString((String) dest);
-         }
-         else {
-            throw new IllegalArgumentException("only Page, integer or string 
allowed: " + dest.getClass());
-         }
+         page = SiteManagement.convertToNavigationItem(dest);
       }
    }
 
@@ -293,18 +291,7 @@
 
    public void setDefaultpage(Object dest) {
       if (dest != null) {
-         if (dest instanceof Page) {
-            defaultPage = (Page) dest;
-         }
-         else if (dest instanceof Integer) {
-            defaultPage = getPageInteger((Integer) dest);
-         }
-         else if (dest instanceof String) {
-            defaultPage = getPageString((String) dest);
-         }
-         else {
-            throw new IllegalArgumentException("only Page, integer or string 
allowed: " + dest.getClass());
-         }
+         defaultPage = SiteManagement.convertToNavigationItem(dest);
       }
    }
 
@@ -314,38 +301,6 @@
    }
 
 
-   /**
-    * Set destination node number to navigate to.
-    * 
-    * @param n
-    *           the node number
-    */
-   private Page getPageInteger(Integer n) {
-      return SiteManagement.getPage(n.intValue());
-   }
-
-
-   /**
-    * Set the destination node path to navigate to.
-    * 
-    * @param s
-    *           comma, slash or space separated list of node numbers and/or
-    *           aliases
-    */
-   private Page getPageString(String s) {
-      Page temp = null;
-      if (!StringUtils.isBlank(s)) {
-         if (StringUtils.isNumeric(s)) {
-            temp = SiteManagement.getPage(Integer.parseInt(s));
-         }
-         else {
-            temp = SiteManagement.getPageFromPath(s);
-         }
-      }
-      return temp;
-   }
-
-
    public void setVar(String var) {
       this.var = var;
    }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to