details: /erp/devel/pi/rev/9cc8c8a6dfd1
changeset: 10468:9cc8c8a6dfd1
user: Stefan Hühner <stefan.huehner <at> openbravo.com>
date: Wed Feb 09 15:17:13 2011 +0100
summary: Improve performance of first login after tomcat startup.
UIDefinitionController fills a in-memory cache on its first use (normally
on first login after tomcat start). Improve this by reusing the list of columns
already present in the DAL in memory model (from ModelProvider) instead of
it again from the db. Saves around 3-4s on first login.
Note: This removes around 367 entries from this cache. However those are never
needed as they are linked to tables which cannot be used via DAL so the reduced
entry set in the cache is now consistent with DAL-usable columns.
diffstat:
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinitionController.java
| 50 +++++----
1 files changed, 26 insertions(+), 24 deletions(-)
diffs (82 lines):
diff -r d98f5745a830 -r 9cc8c8a6dfd1
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinitionController.java
---
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinitionController.java
Wed Feb 09 15:12:04 2011 +0100
+++
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinitionController.java
Wed Feb 09 15:17:13 2011 +0100
@@ -20,21 +20,23 @@
import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.hibernate.Hibernate;
+import org.openbravo.base.model.Column;
+import org.openbravo.base.model.ModelProvider;
+import org.openbravo.base.model.Table;
import org.openbravo.base.session.OBPropertiesProvider;
import org.openbravo.base.util.OBClassLoader;
import org.openbravo.client.kernel.BaseTemplateComponent;
import org.openbravo.client.kernel.UserInterfaceDefinition;
-import org.openbravo.dal.core.DalUtil;
import org.openbravo.dal.core.OBContext;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
-import org.openbravo.model.ad.datamodel.Column;
import org.openbravo.model.ad.domain.Reference;
import org.openbravo.model.ad.domain.ReferencedTable;
@@ -141,30 +143,30 @@
}
}
- final OBQuery<Column> columnQry =
OBDal.getInstance().createQuery(Column.class, "");
- columnQry.setFilterOnActive(false);
- for (Column column : columnQry.list()) {
- String referenceId;
- if (column.getReferenceSearchKey() != null) {
- referenceId = (String) DalUtil.getId(column.getReferenceSearchKey());
- } else {
- referenceId = (String) DalUtil.getId(column.getReference());
+ for (Table table : ModelProvider.getInstance().getTables()) {
+ List<Column> cols = table.getColumns();
+ for (Column column : cols) {
+ String referenceId;
+ if (column.getReferenceValue() != null) {
+ referenceId = column.getReferenceValue().getId();
+ } else {
+ referenceId = column.getReference().getId();
+ }
+
+ // if one of the old hardcoded pwd-column -> move to new-style
reference
+ // Companion-code in org.openbravo.base.mode.Property (for for
domaintype)
+ String colReferenceId = column.getReference().getId();
+ if (column.isEncrypted() && colReferenceId !=
EncryptedStringReferenceID
+ && colReferenceId != HashedStringReferenecID) {
+ if (column.isDecryptable()) {
+ referenceId = EncryptedStringReferenceID;
+ } else {
+ referenceId = HashedStringReferenecID;
+ }
+ }
+ localUIDefinitionsByColumn.put(column.getId(),
localCachedDefinitions.get(referenceId));
}
-
- // if one of the old hardcoded pwd-column -> move to new-style
reference
- // Companion-code in org.openbravo.base.mode.Property (for for
domaintype)
- String colReferenceId = (String) DalUtil.getId(column.getReference());
- if (column.isDisplayEncription() && colReferenceId !=
EncryptedStringReferenceID
- && colReferenceId != HashedStringReferenecID) {
- if (column.isDeencryptable()) {
- referenceId = EncryptedStringReferenceID;
- } else {
- referenceId = HashedStringReferenecID;
- }
- }
- localUIDefinitionsByColumn.put(column.getId(),
localCachedDefinitions.get(referenceId));
}
-
} finally {
OBContext.restorePreviousMode();
}
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits