You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2011/06/26 20:10:23 UTC

svn commit: r1139878 - /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java

Author: doogie
Date: Sun Jun 26 18:10:22 2011
New Revision: 1139878

URL: http://svn.apache.org/viewvc?rev=1139878&view=rev
Log:
OPTIMIZE: Optimize ModelConversion looping logic, so that
it's not walking the map's values; instead, do custom management of a
standard array.

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java?rev=1139878&r1=1139877&r2=1139878&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java Sun Jun 26 18:10:22 2011
@@ -93,7 +93,7 @@ public class ModelViewEntity extends Mod
     /** List of field names to group by */
     protected List<String> groupByFields = FastList.newInstance();
 
-    protected Map<String, Map<String, ModelConversion>> conversions = FastMap.newInstance();
+    protected Map<String, ModelConversion[]> conversions = FastMap.newInstance();
 
     protected ViewEntityCondition viewEntityCondition = null;
 
@@ -516,16 +516,22 @@ public class ModelViewEntity extends Mod
             throw new RuntimeException("[" + this.getEntityName() + "]: Cannot create View Entity: " + errMsg);
         }
 
-        Map<String, ModelConversion> aliasConversions = conversions.get(member.getEntityName());
-        if (aliasConversions == null) {
-            aliasConversions = FastMap.newInstance();
-            conversions.put(member.getEntityName(), aliasConversions);
-        }
-        ModelConversion conversion = aliasConversions.get(aliasName);
-        if (conversion == null) {
-            conversion = new ModelConversion(aliasName, member);
-            aliasConversions.put(aliasName, conversion);
-        }
+        ModelConversion[] allConversions = conversions.get(member.getEntityName());
+        if (allConversions == null) {
+            ModelConversion conversion = new ModelConversion(aliasName, member);
+            conversions.put(member.getEntityName(), new ModelConversion[] {conversion});
+            return conversion;
+        }
+        for (ModelConversion conversion: allConversions) {
+            if (conversion.aliasName.equals(aliasName)) {
+                return conversion;
+            }
+        }
+        ModelConversion[] newConversions = new ModelConversion[allConversions.length + 1];
+        System.arraycopy(allConversions, 0, newConversions, 0, allConversions.length);
+        ModelConversion conversion = new ModelConversion(aliasName, member);
+        newConversions[allConversions.length] = conversion;
+        conversions.put(member.getEntityName(), newConversions);
         return conversion;
     }
 
@@ -572,15 +578,11 @@ public class ModelViewEntity extends Mod
         int[] maxIndex = new int[conversions.size()];
         ModelConversion[][] allConversions = new ModelConversion[conversions.size()][];
         int i = 0;
-        for (Map<String, ModelConversion> aliasConversions: conversions.values()) {
+        for (ModelConversion[] aliasConversions: conversions.values()) {
             currentIndex[i] = 0;
-            maxIndex[i] = aliasConversions.size();
-            allConversions[i] = new ModelConversion[aliasConversions.size()];
-            int j = 0;
-            for (ModelConversion conversion: aliasConversions.values()) {
-                allConversions[i][j] = conversion;
-                j++;
-            }
+            maxIndex[i] = aliasConversions.length;
+            allConversions[i] = new ModelConversion[aliasConversions.length];
+            System.arraycopy(aliasConversions, 0, allConversions[i], 0, aliasConversions.length);
             i++;
         }
         int ptr = 0;
@@ -606,10 +608,10 @@ public class ModelViewEntity extends Mod
     }
 
     public List<Map<String, Object>> convert(String fromEntityName, Map<String, ? extends Object> data) {
-        Map<String, ModelConversion> conversions = this.conversions.get(fromEntityName);
+        ModelConversion[] conversions = this.conversions.get(fromEntityName);
         if (conversions == null) return null;
         List<Map<String, Object>> values = FastList.newInstance();
-        for (ModelConversion conversion: conversions.values()) {
+        for (ModelConversion conversion: conversions) {
             conversion.convert(values, data);
         }
         return values;