Author: nico
Date: 2009-05-18 13:27:08 +0200 (Mon, 18 May 2009)
New Revision: 35243
Modified:
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
CMSContainer/branches/b1_5/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_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
===================================================================
---
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
2009-05-18 11:27:02 UTC (rev 35242)
+++
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/navigation/NavigationBuilder.java
2009-05-18 11:27:08 UTC (rev 35243)
@@ -12,9 +12,19 @@
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;
Modified:
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
===================================================================
---
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
2009-05-18 11:27:02 UTC (rev 35242)
+++
CMSContainer/branches/b1_5/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteCacheLoader.java
2009-05-18 11:27:08 UTC (rev 35243)
@@ -113,6 +113,7 @@
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);
Modified:
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
===================================================================
---
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
2009-05-18 11:27:02 UTC (rev 35242)
+++
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
2009-05-18 11:27:08 UTC (rev 35243)
@@ -9,11 +9,20 @@
*/
package com.finalist.cmsc.mmbase;
-import java.util.ArrayList;
-import java.util.List;
+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
}
@@ -93,4 +102,29 @@
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