Author: nico
Date: 2009-05-18 13:27:42 +0200 (Mon, 18 May 2009)
New Revision: 35244
Modified:
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
Log:
CMSC-1405 SiteCache loading on postgresql is very slow
Modified:
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
===================================================================
---
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
2009-05-18 11:27:08 UTC (rev 35243)
+++
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TypeUtil.java
2009-05-18 11:27:42 UTC (rev 35244)
@@ -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