Author: nico
Date: 2009-05-18 13:27:02 +0200 (Mon, 18 May 2009)
New Revision: 35242

Modified:
   
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
   
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
   
CMSContainer/branches/b1_6/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
Log:
CMSC-1405 SiteCache loading on postgresql is very slow

Modified: 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
===================================================================
--- 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
    2009-05-18 11:26:56 UTC (rev 35241)
+++ 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
    2009-05-18 11:27:02 UTC (rev 35242)
@@ -1,34 +1,44 @@
-/*
-
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-The license (Mozilla version 1.0) can be read at the MMBase site.
-See http://www.MMBase.org/license
-
-*/
-package com.finalist.cmsc.navigation;
-
-import java.util.LinkedHashMap;
-
-import com.finalist.cmsc.builders.TreeBuilder;
-
-public abstract class NavigationBuilder extends TreeBuilder {
-
-    @Override
-    protected String getRelationName() {
-        return NavigationUtil.NAVREL;
-    }
-
-    @Override
-    protected LinkedHashMap<String,String> getPathManagers() {
-        return NavigationUtil.getTreeManagers();
-    }
-    
-    @Override
-    protected void registerTreeManager() {
-        String builderName = getTableName();
-        NavigationUtil.registerTreeManager(builderName, getFragmentField(), 
isRoot());
-    }
-
-}
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package com.finalist.cmsc.navigation;
+
+import java.util.LinkedHashMap;
+
+import com.finalist.cmsc.builders.TreeBuilder;
+import com.finalist.cmsc.mmbase.TypeUtil;
+
+public abstract class NavigationBuilder extends TreeBuilder {
+
+   @Override
+   public boolean init() {
+      boolean result = super.init();
+      if (result) {
+         TypeUtil.fillTypeCache(this);
+      }
+      return result;
+   }
+
+    @Override
+    protected String getRelationName() {
+        return NavigationUtil.NAVREL;
+    }
+
+    @Override
+    protected LinkedHashMap<String,String> getPathManagers() {
+        return NavigationUtil.getTreeManagers();
+    }
+    
+    @Override
+    protected void registerTreeManager() {
+        String builderName = getTableName();
+        NavigationUtil.registerTreeManager(builderName, getFragmentField(), 
isRoot());
+    }
+
+}

Modified: 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
===================================================================
--- 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
 2009-05-18 11:26:56 UTC (rev 35241)
+++ 
CMSContainer/branches/b1_6/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
 2009-05-18 11:27:02 UTC (rev 35242)
@@ -1,175 +1,176 @@
-/*
-
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-The license (Mozilla version 1.0) can be read at the MMBase site.
-See http://www.MMBase.org/license
-
-*/
-package com.finalist.cmsc.services.sitemanagement;
-
-import java.util.*;
-
-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.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.navigation.*;
-import com.finalist.cmsc.services.sitemanagement.tree.PageTree;
-import com.finalist.cmsc.services.sitemanagement.tree.PageTreeNode;
-
-
-public class SiteCacheLoader {
-
-    /** MMbase logging system */
-    private static final Logger log = 
Logging.getLoggerInstance(SiteCacheLoader.class.getName());
-
-
-    public List<NavigationItemManager> getNavigationManagers() {
-       return NavigationManager.getNavigationManagers();
-    }
-
-    public Cloud getCloud() {
-       return CloudProviderFactory.getCloudProvider().getAnonymousCloud();
-    }
-
-    public int getNavrelRelationNumber() {
-       return 
MMBase.getMMBase().getRelDef().getNumberByName(NavigationUtil.NAVREL);
-    }
-
-    public Map<String, PageTree> loadPageTreeMap() {
-        Cloud cloud = getCloud();
-        Map<String, PageTree> newtrees = new HashMap<String, PageTree>();
-
-        List<NavigationItemManager> navigationManagers = 
getNavigationManagers();
-        for (NavigationItemManager nim : navigationManagers) {
-            if (nim.isRoot()) {
-                String nodeType = nim.getTreeManager();
-                String fragmentField = 
NavigationUtil.getFragmentFieldname(nodeType);
-                loadTrees(newtrees, 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);
-            }
-        }
-
-        loadTreeStructure(newtrees, cloud, itemUrlFragments);
-        return newtrees;
-    }
-
-    @SuppressWarnings("unchecked")
-    private void loadTrees(Map<String, PageTree> newtrees, 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(newtrees, 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);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private void loadTreeStructure(Map<String, PageTree> newtrees, 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 : newtrees.values()) {
-             PageTreeNode pageTreeNode = tree.insert(sourceNumber, destNumber, 
fragment, childIndex);
-             if (pageTreeNode != null) {
-                parentNotFound = false;
-                break;
-             }
-          }
-          if (parentNotFound) {
-             unfinishedNodes.add(navrelNode);
-          }
-       }
-       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 : newtrees.values()) {
-                PageTreeNode pageTreeNode = tree.insert(sourceNumber, 
destNumber, fragment, childIndex);
-                if (pageTreeNode != null) {
-                   iter.remove();
-                   break;
-                }
-             }
-          }
-       }
-
-       for (Node navrelNode : unfinishedNodes) {
-          log.warn("Page treenode not found for navrel: " + navrelNode);
-       }
-    }
-
-
-    public void createTree(Map<String, PageTree> newtrees, int siteId, String 
sitefragment) {
-       PageTree siteTree = new PageTree(siteId, sitefragment);
-       newtrees.put(sitefragment.toLowerCase(), siteTree);
-    }
-
-}
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package com.finalist.cmsc.services.sitemanagement;
+
+import java.util.*;
+
+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.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.navigation.*;
+import com.finalist.cmsc.services.sitemanagement.tree.PageTree;
+import com.finalist.cmsc.services.sitemanagement.tree.PageTreeNode;
+
+
+public class SiteCacheLoader {
+
+    /** MMbase logging system */
+    private static final Logger log = 
Logging.getLoggerInstance(SiteCacheLoader.class.getName());
+
+
+    public List<NavigationItemManager> getNavigationManagers() {
+       return NavigationManager.getNavigationManagers();
+    }
+
+    public Cloud getCloud() {
+       return CloudProviderFactory.getCloudProvider().getAnonymousCloud();
+    }
+
+    public int getNavrelRelationNumber() {
+       return 
MMBase.getMMBase().getRelDef().getNumberByName(NavigationUtil.NAVREL);
+    }
+
+    public Map<String, PageTree> loadPageTreeMap() {
+        Cloud cloud = getCloud();
+        Map<String, PageTree> newtrees = new HashMap<String, PageTree>();
+
+        List<NavigationItemManager> navigationManagers = 
getNavigationManagers();
+        for (NavigationItemManager nim : navigationManagers) {
+            if (nim.isRoot()) {
+                String nodeType = nim.getTreeManager();
+                String fragmentField = 
NavigationUtil.getFragmentFieldname(nodeType);
+                loadTrees(newtrees, 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);
+            }
+        }
+
+        loadTreeStructure(newtrees, cloud, itemUrlFragments);
+        return newtrees;
+    }
+
+    @SuppressWarnings("unchecked")
+    private void loadTrees(Map<String, PageTree> newtrees, 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(newtrees, 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);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private void loadTreeStructure(Map<String, PageTree> newtrees, 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");
+       q.addField(NavigationUtil.NAVREL + ".dnumber");
+       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 : newtrees.values()) {
+             PageTreeNode pageTreeNode = tree.insert(sourceNumber, destNumber, 
fragment, childIndex);
+             if (pageTreeNode != null) {
+                parentNotFound = false;
+                break;
+             }
+          }
+          if (parentNotFound) {
+             unfinishedNodes.add(navrelNode);
+          }
+       }
+       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 : newtrees.values()) {
+                PageTreeNode pageTreeNode = tree.insert(sourceNumber, 
destNumber, fragment, childIndex);
+                if (pageTreeNode != null) {
+                   iter.remove();
+                   break;
+                }
+             }
+          }
+       }
+
+       for (Node navrelNode : unfinishedNodes) {
+          log.warn("Page treenode not found for navrel: " + navrelNode);
+       }
+    }
+
+
+    public void createTree(Map<String, PageTree> newtrees, int siteId, String 
sitefragment) {
+       PageTree siteTree = new PageTree(siteId, sitefragment);
+       newtrees.put(sitefragment.toLowerCase(), siteTree);
+    }
+
+}

Modified: 
CMSContainer/branches/b1_6/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
===================================================================
--- 
CMSContainer/branches/b1_6/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
      2009-05-18 11:26:56 UTC (rev 35241)
+++ 
CMSContainer/branches/b1_6/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
      2009-05-18 11:27:02 UTC (rev 35242)
@@ -1,96 +1,130 @@
-/*
-
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-The license (Mozilla version 1.0) can be read at the MMBase site.
-See http://www.MMBase.org/license
-
- */
-package com.finalist.cmsc.mmbase;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public final class TypeUtil {
-
-   private TypeUtil() {
-      // utility
-   }
-
-   private static final List<String> mmbaseTypes = new ArrayList<String>();
-   private static final List<String> securityTypes = new ArrayList<String>();
-   private static final List<String> publishTypes = new ArrayList<String>();
-
-   private static final List<String> systemTypes = new ArrayList<String>();
-   static {
-      mmbaseTypes.add("typedef");
-      mmbaseTypes.add("reldef");
-      mmbaseTypes.add("typerel");
-      mmbaseTypes.add("mmservers");
-      mmbaseTypes.add("oalias");
-      mmbaseTypes.add("daymarks");
-      mmbaseTypes.add("syncnodes");
-      mmbaseTypes.add("icaches");
-      mmbaseTypes.add("versions");
-
-      securityTypes.add("user");
-      securityTypes.add("mmbasegroups");
-      securityTypes.add("mmbaseranks");
-      securityTypes.add("mmbaseusers");
-      securityTypes.add("mmbasecontexts");
-      securityTypes.add("rightsrel");
-
-      publishTypes.add("remotenodes");
-      publishTypes.add("cloud");
-      publishTypes.add("publishqueue");
-
-      systemTypes.addAll(mmbaseTypes);
-      systemTypes.addAll(securityTypes);
-      systemTypes.addAll(publishTypes);
-
-      systemTypes.add("editwizards");
-      systemTypes.add("workflowitem");
-      systemTypes.add("properties");
-
-      systemTypes.add("cronjobs");
-      systemTypes.add("email");
-   }
-
-
-   public static boolean isMmbaseType(String name, boolean includeRootTypes) {
-      if (includeRootTypes && ("object".equals(name) || 
"insrel".equals(name))) {
-         return true;
-      }
-      return mmbaseTypes.contains(name);
-   }
-
-
-   public static boolean isMmbaseType(String name) {
-      return isMmbaseType(name, false);
-   }
-
-
-   public static boolean isSecurityType(String name) {
-      return securityTypes.contains(name);
-   }
-
-
-   public static boolean isPublishType(String name) {
-      return publishTypes.contains(name);
-   }
-
-
-   public static boolean isSystemType(String name, boolean includeRootTypes) {
-      if (includeRootTypes && ("object".equals(name) || 
"insrel".equals(name))) {
-         return true;
-      }
-      return systemTypes.contains(name);
-   }
-
-
-   public static boolean isSystemType(String name) {
-      return isSystemType(name, false);
-   }
-
-}
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+ */
+package com.finalist.cmsc.mmbase;
+
+import java.util.*;
+
+import org.mmbase.cache.Cache;
+import org.mmbase.module.core.*;
+import org.mmbase.storage.search.*;
+import org.mmbase.storage.search.implementation.BasicSearchQuery;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+public final class TypeUtil {
+
+   /** MMbase logging system */
+   private static final Logger log = 
Logging.getLoggerInstance(TypeUtil.class.getName());
+   
+   private TypeUtil() {
+      // utility
+   }
+
+   private static final List<String> mmbaseTypes = new ArrayList<String>();
+   private static final List<String> securityTypes = new ArrayList<String>();
+   private static final List<String> publishTypes = new ArrayList<String>();
+
+   private static final List<String> systemTypes = new ArrayList<String>();
+   static {
+      mmbaseTypes.add("typedef");
+      mmbaseTypes.add("reldef");
+      mmbaseTypes.add("typerel");
+      mmbaseTypes.add("mmservers");
+      mmbaseTypes.add("oalias");
+      mmbaseTypes.add("daymarks");
+      mmbaseTypes.add("syncnodes");
+      mmbaseTypes.add("icaches");
+      mmbaseTypes.add("versions");
+
+      securityTypes.add("user");
+      securityTypes.add("mmbasegroups");
+      securityTypes.add("mmbaseranks");
+      securityTypes.add("mmbaseusers");
+      securityTypes.add("mmbasecontexts");
+      securityTypes.add("rightsrel");
+
+      publishTypes.add("remotenodes");
+      publishTypes.add("cloud");
+      publishTypes.add("publishqueue");
+
+      systemTypes.addAll(mmbaseTypes);
+      systemTypes.addAll(securityTypes);
+      systemTypes.addAll(publishTypes);
+
+      systemTypes.add("editwizards");
+      systemTypes.add("workflowitem");
+      systemTypes.add("properties");
+
+      systemTypes.add("cronjobs");
+      systemTypes.add("email");
+   }
+
+
+   public static boolean isMmbaseType(String name, boolean includeRootTypes) {
+      if (includeRootTypes && ("object".equals(name) || 
"insrel".equals(name))) {
+         return true;
+      }
+      return mmbaseTypes.contains(name);
+   }
+
+
+   public static boolean isMmbaseType(String name) {
+      return isMmbaseType(name, false);
+   }
+
+
+   public static boolean isSecurityType(String name) {
+      return securityTypes.contains(name);
+   }
+
+
+   public static boolean isPublishType(String name) {
+      return publishTypes.contains(name);
+   }
+
+
+   public static boolean isSystemType(String name, boolean includeRootTypes) {
+      if (includeRootTypes && ("object".equals(name) || 
"insrel".equals(name))) {
+         return true;
+      }
+      return systemTypes.contains(name);
+   }
+
+
+   public static boolean isSystemType(String name) {
+      return isSystemType(name, false);
+   }
+
+   public static  void fillTypeCache(MMObjectBuilder builder) {
+      MMBase mmbase = builder.getMMBase();
+      try {
+         Cache typeCache = Cache.getCache("TypeCache");
+         if (typeCache != null) {
+            BasicSearchQuery query = new BasicSearchQuery();
+            Step step = query.addStep(builder);
+            query.addField(step, builder.getField("number"));
+            query.addField(step, builder.getField("otype"));
+            
+            List nodes = mmbase.getSearchQueryHandler().getNodes(query, new 
ResultBuilder(mmbase, query));
+            if (nodes != null) {
+               for (Iterator iterator = nodes.iterator(); iterator.hasNext();) 
{
+                  MMObjectNode tempNode = (MMObjectNode) iterator.next();
+                  Integer otype = 
Integer.valueOf(tempNode.getIntValue(MMObjectBuilder.FIELD_OBJECT_TYPE));
+                  Integer number = Integer.valueOf(tempNode.getNumber());
+                  typeCache.put(number, otype);
+               }
+            }
+         }
+      }
+      catch (SearchQueryException e) {
+         log.info("failed to preload typeCache fir " + builder.getTableName(), 
e);
+      }
+   }
+}

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to