Update of
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
In directory
james.mmbase.org:/tmp/cvs-serv26804/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
Modified Files:
SiteManagementAdmin.java SiteManagementServiceMMBaseImpl.java
SiteManagement.java WorkflowSiteManagementAdminService.java
SiteManagementService.java SiteModelManager.java
SiteManagementAdminServiceMMBaseImpl.java
SiteManagementAdminService.java SiteCache.java
Added Files:
SiteCacheLoader.java
Log Message:
CMSC-755 Navigation code refactored to use navigationitem
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
See also: http://www.mmbase.org/jira/browse/CMSC-755
SiteCacheLoader.java is new
Index: SiteManagementAdmin.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementAdmin.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- SiteManagementAdmin.java 26 Nov 2007 11:43:39 -0000 1.2
+++ SiteManagementAdmin.java 28 Jan 2008 21:15:43 -0000 1.3
@@ -57,8 +57,8 @@
}
- public static boolean mayEdit(Page page) {
- return cService.mayEdit(page);
+ public static boolean mayEdit(NavigationItem item) {
+ return cService.mayEdit(item);
}
Index: SiteManagementServiceMMBaseImpl.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementServiceMMBaseImpl.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- SiteManagementServiceMMBaseImpl.java 7 Jan 2008 20:27:17 -0000
1.12
+++ SiteManagementServiceMMBaseImpl.java 28 Jan 2008 21:15:43 -0000
1.13
@@ -156,26 +156,13 @@
return sites;
}
-
- @Override
- public List<Page> getPages(Page page) {
- if (page != null) {
- List<Page> children = siteModelManager.getChildren(page);
- removeInvalidNavigationsFromList(children);
- return children;
- }
- return new ArrayList<Page>();
- }
-
-
- @Override
- public List<Page> getPages(Site site) {
- if (site != null) {
- List<Page> children = siteModelManager.getChildren(site);
+ public <E extends NavigationItem> List<E> getNavigationItems(NavigationItem
parent, Class<E> childClazz) {
+ if (parent != null) {
+ List<E> children = siteModelManager.getChildren(parent, childClazz);
removeInvalidNavigationsFromList(children);
return children;
}
- return new ArrayList<Page>();
+ return new ArrayList<E>();
}
@Override
@@ -190,7 +177,7 @@
@Override
public List<Stylesheet> getStylesheetForPageByPath(String path, boolean
override) {
- List<Page> pagesToRoot = getListFromPath(path);// get all pages to root
+ List<Page> pagesToRoot = getPagesFromPath(path);// get all pages to root
List<Stylesheet> stylesheets = new ArrayList<Stylesheet>();
Page page = null;
@@ -241,19 +228,19 @@
@Override
- public List<Page> getListFromPath(String path) {
- List<Page> pagesForPath = siteModelManager.getPagesForPath(path);
+ public <E extends NavigationItem> List<E> getListFromPath(String path,
Class<E> clazz) {
+ List<E> itemsForPath = siteModelManager.getItemsForPath(path, clazz);
if (ServerUtil.isStaging()) {
- for (Iterator<? extends NavigationItem> iterator =
pagesForPath.iterator(); iterator.hasNext();) {
- NavigationItem child = iterator.next();
+ for (Iterator<E> iterator = itemsForPath.iterator();
iterator.hasNext();) {
+ E child = iterator.next();
if (!showNavigation(child)) {
- pagesForPath.clear();
+ itemsForPath.clear();
break;
}
}
}
- return pagesForPath;
+ return itemsForPath;
}
@@ -264,13 +251,13 @@
@Override
- public String getPath(int pageId, boolean includeRoot) {
- Page page = (Page) siteModelManager.getNavigationItem(pageId);
- if (page == null) {
+ public String getPath(int itemId, boolean includeRoot) {
+ NavigationItem item = siteModelManager.getNavigationItem(itemId);
+ if (item == null) {
return null;
}
else {
- return siteModelManager.getPath(page, includeRoot);
+ return siteModelManager.getPath(item, includeRoot);
}
}
@@ -349,7 +336,7 @@
@Override
public List<Integer> getPageImagesForPath(String name, String path) {
- List<Page> pagesToRoot = getListFromPath(path);// get all pages to root
+ List<Page> pagesToRoot = getPagesFromPath(path);// get all pages to root
for (int count = pagesToRoot.size() - 1; count >= 0; count--) {
Page page = pagesToRoot.get(count);
Index: SiteManagement.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagement.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- SiteManagement.java 3 Dec 2007 13:10:26 -0000 1.8
+++ SiteManagement.java 28 Jan 2008 21:15:43 -0000 1.9
@@ -13,6 +13,7 @@
import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,14 +60,16 @@
return cService.getSites();
}
-
- public static List<Page> getPages(Page page) {
- return cService.getPages(page);
+ public static <E extends NavigationItem> List<E>
getNavigationItems(NavigationItem parent, Class<E> childClazz) {
+ return cService.getNavigationItems(parent, childClazz);
}
+ public static List<NavigationItem> getNavigationItems(NavigationItem item) {
+ return cService.getNavigationItems(item);
+ }
- public static List<Page> getPages(Site site) {
- return cService.getPages(site);
+ public static List<Page> getPages(Page page) {
+ return cService.getPages(page);
}
@@ -95,12 +98,15 @@
}
- public static String getPath(int pageid, boolean includeRoot) {
- return cService.getPath(pageid, includeRoot);
+ public static String getPath(int itemId, boolean includeRoot) {
+ return cService.getPath(itemId, includeRoot);
}
+ public static List<Page> getPagesFromPath(String path) {
+ return cService.getPagesFromPath(path);
+ }
- public static List<Page> getListFromPath(String path) {
+ public static List<NavigationItem> getListFromPath(String path) {
return cService.getListFromPath(path);
}
@@ -165,8 +171,8 @@
}
- public static String getSite(NavigationItem page) {
- return cService.getSite(page);
+ public static String getSite(NavigationItem item) {
+ return cService.getSite(item);
}
@@ -174,22 +180,51 @@
cService.resetSiteCache();
}
+ public static NavigationItem convertToNavigationItem(Object dest) {
+ NavigationItem item = null;
+ if (dest instanceof NavigationItem) {
+ item = (NavigationItem) dest;
+ }
+ else
+ if (dest instanceof Integer) {
+ item = convertToNavigationItemInteger((Integer) dest);
+ }
+ else
+ if (dest instanceof String) {
+ item = convertToNavigationItemString((String) dest);
+ }
+ else {
+ throw new IllegalArgumentException(
+ "only NavigationItem, integer or string allowed: "
+ dest.getClass());
+ }
+ return item;
+ }
+
/**
- * Here for downwards compatibility
+ * Set destination node number to navigate to.
*
- * @deprecated because we now have getNavigationItem
+ * @param n the node number
*/
- public static Page getPage(int number) {
- return (Page) getNavigationItem(number);
+ public static NavigationItem convertToNavigationItemInteger(Integer n) {
+ return SiteManagement.getNavigationItem(n.intValue());
}
-
/**
- * Here for downwards compatibility
+ * Set the destination node path to navigate to.
*
- * @deprecated because we now have getNavigationItemFromPath
+ * @param s comma, slash or space separated list of node numbers and/or
aliases
*/
- public static Page getPageFromPath(String path) {
- return (Page) getNavigationItemFromPath(path);
+ public static NavigationItem convertToNavigationItemString(String s) {
+ NavigationItem temp = null;
+ if (!StringUtils.isBlank(s)) {
+ if (StringUtils.isNumeric(s)) {
+ temp = SiteManagement.getNavigationItem(Integer.parseInt(s));
+ }
+ else {
+ temp = SiteManagement.getNavigationItemFromPath(s);
}
+ }
+ return temp;
+ }
+
}
Index: WorkflowSiteManagementAdminService.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/WorkflowSiteManagementAdminService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- WorkflowSiteManagementAdminService.java 26 Nov 2007 11:43:39 -0000
1.2
+++ WorkflowSiteManagementAdminService.java 28 Jan 2008 21:15:43 -0000
1.3
@@ -21,12 +21,12 @@
public class WorkflowSiteManagementAdminService extends
SiteManagementAdminServiceMMBaseImpl {
@Override
- public boolean mayEdit(Page page) {
- if (super.mayEdit(page)) {
+ public boolean mayEdit(NavigationItem item) {
+ if (super.mayEdit(item)) {
Cloud cloud = getUserCloud();
- Node pageNode = cloud.getNode(page.getId());
- UserRole userrole = NavigationUtil.getRole(pageNode.getCloud(),
pageNode, false);
- return Workflow.mayEdit(pageNode, userrole);
+ Node itemNode = cloud.getNode(item.getId());
+ UserRole userrole = NavigationUtil.getRole(itemNode.getCloud(),
itemNode, false);
+ return Workflow.mayEdit(itemNode, userrole);
}
return false;
}
Index: SiteManagementService.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementService.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- SiteManagementService.java 3 Dec 2007 13:10:26 -0000 1.8
+++ SiteManagementService.java 28 Jan 2008 21:15:43 -0000 1.9
@@ -43,11 +43,15 @@
public abstract List<Site> getSites();
- public abstract List<Page> getPages(Page page);
-
-
- public abstract List<Page> getPages(Site site);
+ public List<NavigationItem> getNavigationItems(NavigationItem item) {
+ return getNavigationItems(item, NavigationItem.class);
+ }
+
+ public List<Page> getPages(Page page) {
+ return getNavigationItems(page, Page.class);
+ }
+ public abstract <E extends NavigationItem> List<E>
getNavigationItems(NavigationItem parent, Class<E> childClazz);
public abstract NavigationItem getNavigationItem(int id);
@@ -61,13 +65,20 @@
public abstract String getPath(NavigationItem item, boolean includeRoot);
- public abstract String getPath(int pageid, boolean includeRoot);
+ public abstract String getPath(int itemId, boolean includeRoot);
public abstract List<Stylesheet> getStylesheetForPageByPath(String page,
boolean override);
+ public List<NavigationItem> getListFromPath(String path) {
+ return getListFromPath(path, NavigationItem.class);
+ }
+
+ public List<Page> getPagesFromPath(String path) {
+ return getListFromPath(path, Page.class);
+ }
- public abstract List<Page> getListFromPath(String path);
+ public abstract <E extends NavigationItem> List<E> getListFromPath(String
path, Class<E> clazz);
public abstract List<View> getViews(String screenId, String layoutId);
@@ -110,4 +121,5 @@
public abstract void resetSiteCache();
+
}
Index: SiteModelManager.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteModelManager.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- SiteModelManager.java 30 Nov 2007 10:58:31 -0000 1.9
+++ SiteModelManager.java 28 Jan 2008 21:15:43 -0000 1.10
@@ -79,14 +79,14 @@
public void resetSiteCache() {
- siteCache = new SiteCache();
+ siteCache.doSetupCache();
}
public boolean hasNavigationItem(String path) {
if (path != null && path.length() > 0) {
- Integer pageId = siteCache.getPage(path);
- return pageId != null;
+ Integer itemId = siteCache.getPage(path);
+ return itemId != null;
}
return false;
}
@@ -120,9 +120,9 @@
public Site getSite(String path) {
if (path != null && path.length() > 0) {
try {
- Integer pageId = siteCache.getSite(path);
- if (pageId != null) {
- return (Site) getCache(NAVIGATION_CACHE).get(pageId);
+ Integer itemId = siteCache.getSite(path);
+ if (itemId != null) {
+ return (Site) getCache(NAVIGATION_CACHE).get(itemId);
}
else {
log.debug("Site not found for path " + path);
@@ -159,15 +159,15 @@
}
- public List<Page> getPagesForPath(String path) {
- List<Page> pages = new ArrayList<Page>();
+ public <E extends NavigationItem> List<E> getItemsForPath(String path,
Class<E> clazz) {
+ List<E> items = new ArrayList<E>();
if (path != null && path.length() > 0) {
try {
- List<Integer> pageIds = siteCache.getPagesForPath(path);
- for (Integer pageId : pageIds) {
- Page page = (Page) getCache(NAVIGATION_CACHE).get(pageId);
- if (page != null) {
- pages.add(page);
+ List<Integer> itemIds = siteCache.getItemsForPath(path);
+ for (Integer itemId : itemIds) {
+ NavigationItem item = (NavigationItem)
getCache(NAVIGATION_CACHE).get(itemId);
+ if (item != null && clazz.isInstance(item)) {
+ items.add(clazz.cast(item));
}
}
}
@@ -175,19 +175,23 @@
log.info("" + e.getMessage(), e);
}
}
- return pages;
+ return items;
}
- public List<Page> getChildren(NavigationItem findpage) {
- List<Page> pages = new ArrayList<Page>();
- if (findpage != null) {
+ public List<NavigationItem> getChildren(NavigationItem parent) {
+ return getChildren(parent, NavigationItem.class);
+ }
+
+ public <E extends NavigationItem> List<E> getChildren(NavigationItem
parent, Class<E> childClazz) {
+ List<E> items = new ArrayList<E>();
+ if (parent != null) {
try {
- List<Integer> pageIds = siteCache.getChildren(findpage);
- for (Integer pageId : pageIds) {
- NavigationItem navigationItem = (NavigationItem)
getCache(NAVIGATION_CACHE).get(pageId);
- if (navigationItem != null && navigationItem instanceof Page) {
- pages.add((Page) navigationItem);
+ List<Integer> itemIds = siteCache.getChildren(parent);
+ for (Integer itemId : itemIds) {
+ NavigationItem navigationItem = (NavigationItem)
getCache(NAVIGATION_CACHE).get(itemId);
+ if (navigationItem != null &&
childClazz.isInstance(navigationItem)) {
+ items.add(childClazz.cast(navigationItem));
}
}
}
@@ -195,7 +199,7 @@
log.info("" + e.getMessage(), e);
}
}
- return pages;
+ return items;
}
@@ -335,8 +339,8 @@
}
- private List<Integer> getDefinitions(String screenId, String layoutId) {
- Page page = (Page) getNavigationItem(Integer.parseInt(screenId));
+ private List<Integer> getDefinitions(String pageId, String layoutId) {
+ Page page = (Page) getNavigationItem(Integer.parseInt(pageId));
Layout layout = getLayout(page.getLayout());
return layout.getAllowedDefinitions(layoutId);
}
@@ -387,14 +391,14 @@
}
- public void clearPage(String pageId) {
- clearPage(Integer.valueOf(pageId));
+ public void clearItem(String itemId) {
+ clearItem(Integer.valueOf(itemId));
}
- public void clearPage(int pageId) {
+ public void clearItem(int itemId) {
try {
- getCache(NAVIGATION_CACHE).put(pageId, null);
+ getCache(NAVIGATION_CACHE).put(itemId, null);
}
catch (CacheException e) {
log.info("" + e.getMessage(), e);
@@ -409,13 +413,4 @@
return layout.getNames();
}
- /*
- * [FP] public RssFeed getRssFeed(String path) { if (path != null &&
- * path.length() > 0) { Integer rssFeed = siteCache.getPage(path); if
- * (rssFeed != null) { return getRssFeed(rssFeed); } else { log.debug("Page
- * not found for path " + path); } } return null; } public RssFeed
- * getRssFeed(int rssFeedId) { try { return (RssFeed)
- * getCache(NAVIGATION_CACHE).get(rssFeedId); } catch (CacheException e) {
- * log.info("" + e.getMessage(), e); } return null; }
- */
}
Index: SiteManagementAdminServiceMMBaseImpl.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementAdminServiceMMBaseImpl.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- SiteManagementAdminServiceMMBaseImpl.java 30 Nov 2007 10:58:31 -0000
1.7
+++ SiteManagementAdminServiceMMBaseImpl.java 28 Jan 2008 21:15:43 -0000
1.8
@@ -134,7 +134,7 @@
PortletUtil.setPagePortlet(cloud, pageId, portletId, id);
updatePage(pageId);
- siteModelManager.clearPage(pageId);
+ siteModelManager.clearItem(pageId);
}
catch (Exception e) {
log.error("something went wrong while adding portlet (" + portletId +
")", e);
@@ -155,7 +155,7 @@
PortletUtil.setPagePortlet(cloud, pageId, newNode, layoutId);
updatePage(pageId);
- siteModelManager.clearPage(pageId);
+ siteModelManager.clearItem(pageId);
}
catch (Exception e) {
log.error("something went wrong while creating portlet (" +
portletName + ")", e);
@@ -172,21 +172,23 @@
PortletUtil.deletePagePortlet(getUserCloud(), page.getId(),
portlet.getId(), layoutId);
updatePage(page.getId());
- siteModelManager.clearPage(page.getId());
+ siteModelManager.clearItem(page.getId());
}
}
@Override
- public boolean mayEdit(Page page) {
+ public boolean mayEdit(NavigationItem item) {
boolean result = false;
try {
Cloud cloud = getUserCloud();
- UserRole role = NavigationUtil.getRole(cloud, page.getId());
+ if (cloud != null) {
+ UserRole role = NavigationUtil.getRole(cloud, item.getId());
result = role != null && SecurityUtil.isWriter(role);
}
+ }
catch (Exception e) {
- log.error("something went wrong checking page edit (" + page.getId()
+ ")");
+ log.error("something went wrong checking page edit (" + item.getId()
+ ")");
if (log.isDebugEnabled()) {
log.debug(e);
}
@@ -200,6 +202,7 @@
boolean result = false;
try {
Cloud cloud = getUserCloud();
+ if (cloud != null) {
PortletDefinition definition =
siteModelManager.getPortletDefinition(portlet.getDefinition());
if (definition.isSingle()) {
result = cloud.getUser().getRank().getInt() >=
definition.getRank();
@@ -208,6 +211,7 @@
result = true;
}
}
+ }
catch (Exception e) {
log.error("something went wrong checking portlet edit (" +
portlet.getId() + ")");
if (log.isDebugEnabled()) {
Index: SiteManagementAdminService.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementAdminService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- SiteManagementAdminService.java 26 Nov 2007 11:43:39 -0000 1.3
+++ SiteManagementAdminService.java 28 Jan 2008 21:15:43 -0000 1.4
@@ -38,7 +38,7 @@
public abstract void deletePagePortlet(Page page, Portlet portlet, String
layoutId);
- public abstract boolean mayEdit(Page page);
+ public abstract boolean mayEdit(NavigationItem item);
public abstract boolean mayEdit(Portlet portlet);
Index: SiteCache.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCache.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- SiteCache.java 18 Jan 2008 20:13:01 -0000 1.14
+++ SiteCache.java 28 Jan 2008 21:15:43 -0000 1.15
@@ -9,35 +9,21 @@
*/
package com.finalist.cmsc.services.sitemanagement;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import net.sf.mmapps.modules.cloudprovider.CloudProvider;
import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
-import org.mmbase.bridge.*;
-import org.mmbase.bridge.util.HugeNodeListIterator;
-import org.mmbase.bridge.util.SearchUtil;
-import org.mmbase.cache.CachePolicy;
-import org.mmbase.core.event.Event;
-import org.mmbase.core.event.NodeEvent;
-import org.mmbase.core.event.NodeEventListener;
-import org.mmbase.core.event.RelationEvent;
-import org.mmbase.core.event.RelationEventListener;
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Node;
+import org.mmbase.core.event.*;
import org.mmbase.module.core.MMBase;
-import org.mmbase.storage.search.SortOrder;
-import org.mmbase.storage.search.StepField;
import org.mmbase.util.logging.Logger;
import org.mmbase.util.logging.Logging;
import com.finalist.cmsc.beans.om.NavigationItem;
import com.finalist.cmsc.mmbase.TreeUtil;
-import com.finalist.cmsc.navigation.NavigationItemManager;
-import com.finalist.cmsc.navigation.NavigationManager;
-import com.finalist.cmsc.navigation.NavigationUtil;
+import com.finalist.cmsc.navigation.*;
import com.finalist.cmsc.services.sitemanagement.tree.PageTree;
import com.finalist.cmsc.services.sitemanagement.tree.PageTreeNode;
@@ -53,145 +39,42 @@
public SiteCache() {
this.cloudProvider = CloudProviderFactory.getCloudProvider();
doSetupCache();
+ registerListeners();
}
-
- public void doSetupCache() {
- Cloud cloud = getCloud();
+ public void registerListeners() {
List<NavigationItemManager> navigationManagers =
NavigationManager.getNavigationManagers();
for (NavigationItemManager nim : navigationManagers) {
- if (nim.isRoot()) {
- String nodeType = nim.getTreeManager();
- String fragmentField =
NavigationUtil.getFragmentFieldname(nodeType);
- loadTrees(cloud, nodeType, fragmentField);
- }
- }
-
- Map<Integer,String> itemUrlFragments = new HashMap<Integer, String>();
-
- for (NavigationItemManager nim : navigationManagers) {
if (!nim.isRoot()) {
String nodeType = nim.getTreeManager();
- String fragmentField =
NavigationUtil.getFragmentFieldname(nodeType);
- loadNavigationItems(cloud, nodeType, fragmentField,
itemUrlFragments);
MMBase.getMMBase().addNodeRelatedEventsListener(nodeType, this);
}
}
-
- loadTreeStructure(cloud, itemUrlFragments);
- }
-
- @SuppressWarnings("unchecked")
- private void loadTrees(Cloud cloud, String nodeType, String fragmentField) {
- NodeManager sitesManager = cloud.getNodeManager(nodeType);
- NodeList sites = sitesManager.getList(sitesManager.createQuery());
- for (Iterator<Node> iter = sites.iterator(); iter.hasNext();) {
- Node siteNode = iter.next();
- int siteId = siteNode.getNumber();
- String sitefragment = siteNode.getStringValue(fragmentField);
- createTree(siteId, sitefragment);
- }
}
- @SuppressWarnings("unchecked")
- private void loadNavigationItems(Cloud cloud, String nodeType, String
fragmentField, Map<Integer, String> itemUrlFragments) {
- NodeManager manager = cloud.getNodeManager(nodeType);
-
- NodeQuery q = manager.createQuery();
- List<String> types = new ArrayList<String>();
- types.add(manager.getName());
- SearchUtil.addTypeConstraints(q, types);
- q.setCachePolicy(CachePolicy.NEVER);
-
- for (NodeIterator iter = new HugeNodeListIterator(q); iter.hasNext();) {
- Node navNode = iter.nextNode();
- int number = navNode.getNumber();
- String urlfragment = navNode.getStringValue(fragmentField);
- itemUrlFragments.put(number, urlfragment);
- }
+ public void doSetupCache() {
+ Cloud cloud = getCloud();
+ SiteCacheLoader loader = new SiteCacheLoader();
+ Map<String, PageTree> newtrees = loader.loadPageTreeMap(cloud);
+ trees = newtrees;
}
- @SuppressWarnings("unchecked")
- private void loadTreeStructure(Cloud cloud, Map<Integer,String>
itemUrlFragments) {
- List<Node> unfinishedNodes = new ArrayList<Node>();
-
- NodeManager navrel = cloud.getNodeManager(NavigationUtil.NAVREL);
-
- Query q = cloud.createQuery();
- q.addStep(navrel);
-
- StepField sourceField = q.addField(NavigationUtil.NAVREL + ".snumber");
- StepField posField = q.addField(NavigationUtil.NAVREL + ".pos");
-
- q.addSortOrder(sourceField, SortOrder.ORDER_ASCENDING);
- q.addSortOrder(posField, SortOrder.ORDER_ASCENDING);
- q.setCachePolicy(CachePolicy.NEVER);
- for (NodeIterator iter = new HugeNodeListIterator(q); iter.hasNext();) {
- Node navrelNode = iter.nextNode();
-
- int sourceNumber = navrelNode.getIntValue(NavigationUtil.NAVREL +
".snumber");
- int destNumber = navrelNode.getIntValue(NavigationUtil.NAVREL +
".dnumber");
- int childIndex = navrelNode.getIntValue(NavigationUtil.NAVREL +
".pos");
- String fragment = itemUrlFragments.get(destNumber);
-
- boolean parentNotFound = true;
- for (PageTree tree : trees.values()) {
- PageTreeNode pageTreeNode = tree.insert(sourceNumber, destNumber,
fragment, childIndex);
- if (pageTreeNode != null) {
- parentNotFound = false;
- break;
- }
- }
- if (parentNotFound) {
- unfinishedNodes.add(navrelNode);
- }
+ protected Cloud getAdminCloud() {
+ return cloudProvider.getAdminCloud();
}
- int oldUnfinishedSize = unfinishedNodes.size() + 1;
- while (oldUnfinishedSize > unfinishedNodes.size()) {
- oldUnfinishedSize = unfinishedNodes.size();
-
- for (Iterator<Node> iter = unfinishedNodes.iterator();
iter.hasNext();) {
- Node navrelNode = iter.next();
- int sourceNumber = navrelNode.getIntValue(NavigationUtil.NAVREL +
".snumber");
- int destNumber = navrelNode.getIntValue(NavigationUtil.NAVREL +
".dnumber");
- int childIndex = navrelNode.getIntValue(NavigationUtil.NAVREL +
".pos");
- String fragment = itemUrlFragments.get(destNumber);
-
- for (PageTree tree : trees.values()) {
- PageTreeNode pageTreeNode = tree.insert(sourceNumber,
destNumber, fragment, childIndex);
- if (pageTreeNode != null) {
- iter.remove();
- break;
- }
- }
- }
- }
- for (Iterator<Node> iter = unfinishedNodes.iterator(); iter.hasNext();) {
- Node navrelNode = iter.next();
- log.warn("Page treenode not found for navrel: " + navrelNode);
- }
+ protected Cloud getCloud() {
+ return cloudProvider.getAnonymousCloud();
}
-
public void createTree(int siteId, String sitefragment) {
PageTree siteTree = new PageTree(siteId, sitefragment);
trees.put(sitefragment.toLowerCase(), siteTree);
}
- protected Cloud getAdminCloud() {
- return cloudProvider.getAdminCloud();
- }
-
-
- protected Cloud getCloud() {
- return cloudProvider.getAnonymousCloud();
- }
-
-
public Integer getSite(String path) {
List<String> names = PageTree.getPathElements(path);
PageTree tree = getTree(names.get(0));
@@ -292,7 +175,7 @@
}
- public List<Integer> getPagesForPath(String path) {
+ public List<Integer> getItemsForPath(String path) {
List<Integer> pageIds = new ArrayList<Integer>();
List<String> names = PageTree.getPathElements(path);
@@ -304,8 +187,8 @@
}
- public String getPath(NavigationItem page, boolean includeRoot) {
- PageTreeNode pageTreeNode = getPageTreeNode(page);
+ public String getPath(NavigationItem item, boolean includeRoot) {
+ PageTreeNode pageTreeNode = getPageTreeNode(item);
if (pageTreeNode != null) {
return pageTreeNode.getPathStr(includeRoot);
}
@@ -395,20 +278,14 @@
private boolean isChangeTreeEvent(RelationEvent event) {
- boolean sourceIsTreeType = false;
- boolean destinationIsTreeType = false;
-
- for (NavigationItemManager manager :
NavigationManager.getNavigationManagers()) {
- String treeManager = manager.getTreeManager();
- if (treeManager.equals(event.getRelationSourceType())) {
- sourceIsTreeType = true;
- }
- if (treeManager.equals(event.getRelationDestinationType())) {
- destinationIsTreeType = true;
- }
- }
+ int relationNumber =
MMBase.getMMBase().getRelDef().getNumberByName(NavigationUtil.NAVREL);
+ if (event.getRole() == relationNumber) {
+ boolean sourceIsTreeType =
NavigationManager.getNavigationManager(event.getRelationSourceType()) != null;
+ boolean destinationIsTreeType =
NavigationManager.getNavigationManager(event.getRelationDestinationType()) !=
null;
return sourceIsTreeType && destinationIsTreeType;
}
+ return false;
+ }
public void notify(NodeEvent event) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs