Author: adrianc
Date: Sat Mar 21 10:47:49 2015
New Revision: 1668232

URL: http://svn.apache.org/r1668232
Log:
Some small optimizations in the entity engine - don't repeatedly build things 
that don't change over time.

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericEntity.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/AbstractCache.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericEntity.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericEntity.java?rev=1668232&r1=1668231&r2=1668232&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericEntity.java 
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericEntity.java Sat 
Mar 21 10:47:49 2015
@@ -905,13 +905,7 @@ public class GenericEntity implements Ma
     }
 
     public GenericPK getPrimaryKey() {
-        Collection<String> pkNames = new LinkedList<String>();
-        Iterator<ModelField> iter = this.getModelEntity().getPksIterator();
-        while (iter != null && iter.hasNext()) {
-            ModelField curField = iter.next();
-            pkNames.add(curField.getName());
-        }
-        return GenericPK.create(this.getDelegator(), getModelEntity(), 
this.getFields(pkNames));
+        return GenericPK.create(this.getDelegator(), getModelEntity(), 
getFields(getModelEntity().getPkFieldNames()));
     }
 
     /** go through the pks and for each one see if there is an entry in fields 
to set */

Modified: 
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/AbstractCache.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/AbstractCache.java?rev=1668232&r1=1668231&r2=1668232&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/AbstractCache.java 
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/AbstractCache.java 
Sat Mar 21 10:47:49 2015
@@ -24,11 +24,12 @@ import org.ofbiz.entity.DelegatorFactory
 
 public abstract class AbstractCache<K, V> {
 
-    protected String delegatorName, id;
+    protected final String delegatorName, id, cacheNamePrefix;
 
     protected AbstractCache(String delegatorName, String id) {
         this.delegatorName = delegatorName;
         this.id = id;
+        this.cacheNamePrefix = 
"entitycache.".concat(id).concat(".").concat(delegatorName).concat(".");
     }
 
     public Delegator getDelegator() {
@@ -44,13 +45,13 @@ public abstract class AbstractCache<K, V
     }
 
     public String getCacheNamePrefix() {
-        return "entitycache." + id + "." + delegatorName + ".";
+        return cacheNamePrefix;
     }
 
     public String[] getCacheNamePrefixes() {
         return new String[] {
             "entitycache." + id + ".${delegator-name}.",
-            "entitycache." + id + "." + delegatorName + "."
+            cacheNamePrefix
         };
     }
 

Modified: 
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java?rev=1668232&r1=1668231&r2=1668232&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java 
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java 
Sat Mar 21 10:47:49 2015
@@ -98,6 +98,8 @@ public class ModelEntity implements Comp
 
     private final Map<String, ModelField> fieldsMap = new HashMap<String, 
ModelField>();
 
+    private final ArrayList<String> pkFieldNames = new ArrayList<String>();
+
     /** A List of the Field objects for the Entity, one for each Primary Key */
     private final ArrayList<ModelField> pks = new ArrayList<ModelField>();
 
@@ -168,7 +170,6 @@ public class ModelEntity implements Comp
         if (utilTimer != null) utilTimer.timerString("  createModelEntity: 
before general/basic info");
         this.populateBasicInfo(entityElement);
         if (utilTimer != null) utilTimer.timerString("  createModelEntity: 
before prim-keys");
-        List<String> pkFieldNames = new ArrayList<String>();
         for (Element pkElement: UtilXml.childElementList(entityElement, 
"prim-key")) {
             pkFieldNames.add(pkElement.getAttribute("field").intern());
         }
@@ -216,6 +217,7 @@ public class ModelEntity implements Comp
                 pks.add(pkField);
             }
         }
+        pkFieldNames.trimToSize();
         pks.trimToSize();
         nopks.trimToSize();
         reader.incrementFieldCount(fieldsMap.size());
@@ -375,6 +377,9 @@ public class ModelEntity implements Comp
                         this.pks.remove(existingField);
                     }
                     this.pks.add(newField);
+                    if (!this.pkFieldNames.contains(newField.getName())) {
+                        this.pkFieldNames.add(newField.getName());
+                    }
                 }
             }
         }
@@ -627,6 +632,9 @@ public class ModelEntity implements Comp
             fieldsMap.put(field.getName(), field);
             if (field.getIsPk()) {
                 pks.add(field);
+                if (!pkFieldNames.contains(field.getName())) {
+                    pkFieldNames.add(field.getName());
+                }
             } else {
                 nopks.add(field);
             }
@@ -642,6 +650,7 @@ public class ModelEntity implements Comp
                 this.fieldsList.remove(field);
                 if (field.getIsPk()) {
                     pks.remove(field);
+                    pkFieldNames.remove(field.getName());
                 } else {
                     nopks.remove(field);
                 }
@@ -652,14 +661,14 @@ public class ModelEntity implements Comp
 
     public List<String> getAllFieldNames() {
         synchronized (fieldsLock) {
-            List<String> newList = new ArrayList<String>(fieldsMap.size());
-            newList.addAll(this.fieldsMap.keySet());
-            return newList;
+            return new ArrayList<String>(this.fieldsMap.keySet());
         }
     }
 
     public List<String> getPkFieldNames() {
-        return getFieldNamesFromFieldVector(getPkFields());
+        synchronized (fieldsLock) {
+            return new ArrayList<String>(pkFieldNames);
+        }
     }
 
     public List<String> getNoPkFieldNames() {


Reply via email to