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