svn commit: r1139873 - in /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model: DynamicViewEntity.java ModelViewEntity.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1139873 - in /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model: DynamicViewEntity.java ModelViewEntity.java

doogie-3
Author: doogie
Date: Sun Jun 26 18:09:50 2011
New Revision: 1139873

URL: http://svn.apache.org/viewvc?rev=1139873&view=rev
Log:
OPTIMIZE: Make a bunch of support classes in ModelView be final.

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

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/DynamicViewEntity.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/DynamicViewEntity.java?rev=1139873&r1=1139872&r2=1139873&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/DynamicViewEntity.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/DynamicViewEntity.java Sun Jun 26 18:09:50 2011
@@ -229,7 +229,7 @@ public class DynamicViewEntity {
     }
 
     public void addAliasAll(String entityAlias, String prefix) {
-        ModelAliasAll aliasAll = new ModelAliasAll(entityAlias, prefix);
+        ModelAliasAll aliasAll = new ModelAliasAll(entityAlias, prefix, false, null, null);
         this.aliasAlls.add(aliasAll);
     }
 

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=1139873&r1=1139872&r2=1139873&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:09:50 2011
@@ -699,15 +699,8 @@ public class ModelViewEntity extends Mod
                     continue;
                 }
 
-                ModelAlias expandedAlias = new ModelAlias();
-                expandedAlias.name = aliasName;
-                expandedAlias.field = fieldName;
-                expandedAlias.entityAlias = aliasAll.getEntityAlias();
-                expandedAlias.isFromAliasAll = true;
-                expandedAlias.colAlias = ModelUtil.javaNameToDbName(UtilXml.checkEmpty(expandedAlias.name));
-                expandedAlias.function = function;
-                expandedAlias.groupBy = groupBy;
-                expandedAlias.description = modelField.getDescription();
+                ModelAlias expandedAlias = new ModelAlias(aliasAll.getEntityAlias(), aliasName, fieldName, ModelUtil.javaNameToDbName(UtilXml.checkEmpty(aliasName)), null, groupBy, function, true);
+                expandedAlias.setDescription(modelField.getDescription());
 
                 aliases.add(expandedAlias);
             }
@@ -719,9 +712,9 @@ public class ModelViewEntity extends Mod
         return "ModelViewEntity[" + getEntityName() + "]";
     }
 
-    public static class ModelMemberEntity implements Serializable {
-        protected String entityAlias = "";
-        protected String entityName = "";
+    public static final class ModelMemberEntity implements Serializable {
+        protected final String entityAlias;
+        protected final String entityName;
 
         public ModelMemberEntity(String entityAlias, String entityName) {
             this.entityAlias = entityAlias;
@@ -737,19 +730,30 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ModelAliasAll implements Serializable, Iterable<String> {
-        protected String entityAlias = "";
-        protected String prefix = "";
-        protected Set<String> fieldsToExclude = null;
-        protected boolean groupBy = false;
+    public static final class ModelAliasAll implements Serializable, Iterable<String> {
+        protected final String entityAlias;
+        protected final String prefix;
+        protected final Set<String> fieldsToExclude;
+        protected final boolean groupBy;
         // is specified this alias is a calculated value; can be: min, max, sum, avg, count, count-distinct
-        protected String function = null;
-
-        protected ModelAliasAll() {}
+        protected final String function;
 
+        @Deprecated
         public ModelAliasAll(String entityAlias, String prefix) {
+            this(entityAlias, prefix, false, null, null);
+        }
+
+        public ModelAliasAll(String entityAlias, String prefix, boolean groupBy, String function, Collection<String> excludes) {
             this.entityAlias = entityAlias;
             this.prefix = prefix;
+            this.groupBy = groupBy;
+            this.function = function;
+            if (UtilValidate.isNotEmpty(excludes)) {
+                this.fieldsToExclude = new HashSet<String>(excludes.size());
+                this.fieldsToExclude.addAll(excludes);
+            } else {
+                this.fieldsToExclude = null;
+            }
         }
 
         public ModelAliasAll(Element aliasAllElement) {
@@ -764,6 +768,8 @@ public class ModelViewEntity extends Mod
                 for (Element excludeElement: excludes) {
                     this.fieldsToExclude.add(excludeElement.getAttribute("field").intern());
                 }
+            } else {
+                this.fieldsToExclude = null;
             }
 
         }
@@ -801,23 +807,21 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ModelAlias implements Serializable {
-        protected String entityAlias = "";
-        protected String name = "";
-        protected String field = "";
-        protected String colAlias = "";
+    public static final class ModelAlias implements Serializable {
+        protected final String entityAlias;
+        protected final String name;
+        protected final String field;
+        protected final String colAlias;
         // this is a Boolean object for a tri-state: null, true or false
-        protected Boolean isPk = null;
-        protected boolean groupBy = false;
+        protected final Boolean isPk;
+        protected final boolean groupBy;
         // is specified this alias is a calculated value; can be: min, max, sum, avg, count, count-distinct
-        protected String function = null;
-        protected boolean isFromAliasAll = false;
-        protected ComplexAliasMember complexAliasMember = null;
+        protected final String function;
+        protected final boolean isFromAliasAll;
+        protected ComplexAliasMember complexAliasMember;
         // The description for documentation purposes
         protected String description = "";
 
-        protected ModelAlias() {}
-
         public ModelAlias(Element aliasElement) {
             this.entityAlias = UtilXml.checkEmpty(aliasElement.getAttribute("entity-alias")).intern();
             this.name = UtilXml.checkEmpty(aliasElement.getAttribute("name")).intern();
@@ -832,6 +836,7 @@ public class ModelViewEntity extends Mod
             }
             this.groupBy = "true".equals(UtilXml.checkEmpty(aliasElement.getAttribute("group-by")));
             this.function = UtilXml.checkEmpty(aliasElement.getAttribute("function")).intern();
+            this.isFromAliasAll = false;
             this.description = UtilXml.checkEmpty(UtilXml.childElementValue(aliasElement, "description")).intern();
 
             Element complexAliasElement = UtilXml.firstChildElement(aliasElement, "complex-alias");
@@ -841,6 +846,10 @@ public class ModelViewEntity extends Mod
         }
 
         public ModelAlias(String entityAlias, String name, String field, String colAlias, Boolean isPk, Boolean groupBy, String function) {
+            this(entityAlias, name, field, colAlias, isPk, groupBy, function, false);
+        }
+
+        protected ModelAlias(String entityAlias, String name, String field, String colAlias, Boolean isPk, Boolean groupBy, String function, boolean isFromAliasAll) {
             this.entityAlias = entityAlias;
             this.name = name;
             this.field = UtilXml.checkEmpty(field, this.name);
@@ -852,6 +861,7 @@ public class ModelViewEntity extends Mod
                 this.groupBy = false;
             }
             this.function = function;
+            this.isFromAliasAll = isFromAliasAll;
         }
 
         public void setComplexAliasMember(ComplexAliasMember complexAliasMember) {
@@ -913,9 +923,9 @@ public class ModelViewEntity extends Mod
         public void makeAliasColName(StringBuilder colNameBuffer, StringBuilder fieldTypeBuffer, ModelViewEntity modelViewEntity, ModelReader modelReader);
     }
 
-    public static class ComplexAlias implements ComplexAliasMember {
-        protected List<ComplexAliasMember> complexAliasMembers = FastList.newInstance();
-        protected String operator;
+    public static final class ComplexAlias implements ComplexAliasMember {
+        protected final List<ComplexAliasMember> complexAliasMembers = FastList.newInstance();
+        protected final String operator;
 
         public ComplexAlias(String operator) {
             this.operator = operator;
@@ -965,11 +975,11 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ComplexAliasField implements ComplexAliasMember {
-        protected String entityAlias = "";
-        protected String field = "";
-        protected String defaultValue = null;
-        protected String function = null;
+    public static final class ComplexAliasField implements ComplexAliasMember {
+        protected final String entityAlias;
+        protected final String field;
+        protected final String defaultValue;
+        protected final String function;
 
         public ComplexAliasField(Element complexAliasFieldElement) {
             this.entityAlias = complexAliasFieldElement.getAttribute("entity-alias").intern();
@@ -1016,14 +1026,12 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ModelViewLink implements Serializable, Iterable<ModelKeyMap> {
-        protected String entityAlias = "";
-        protected String relEntityAlias = "";
-        protected boolean relOptional = false;
-        protected List<ModelKeyMap> keyMaps = FastList.newInstance();
-        protected ViewEntityCondition viewEntityCondition = null;
-
-        protected ModelViewLink() {}
+    public static final class ModelViewLink implements Serializable, Iterable<ModelKeyMap> {
+        protected final String entityAlias;
+        protected final String relEntityAlias;
+        protected final boolean relOptional;
+        protected final List<ModelKeyMap> keyMaps = FastList.newInstance();
+        protected final ViewEntityCondition viewEntityCondition;
 
         public ModelViewLink(ModelViewEntity modelViewEntity, Element viewLinkElement) {
             this.entityAlias = UtilXml.checkEmpty(viewLinkElement.getAttribute("entity-alias")).intern();
@@ -1042,6 +1050,8 @@ public class ModelViewEntity extends Mod
             Element entityConditionElement = UtilXml.firstChildElement(viewLinkElement, "entity-condition");
             if (entityConditionElement != null) {
                 this.viewEntityCondition = new ViewEntityCondition(modelViewEntity, this, entityConditionElement);
+            } else {
+                this.viewEntityCondition = null;
             }
         }
 
@@ -1064,6 +1074,8 @@ public class ModelViewEntity extends Mod
             this.relEntityAlias = relEntityAlias;
             if (relOptional != null) {
                 this.relOptional = relOptional.booleanValue();
+            } else {
+                this.relOptional = false;
             }
             this.keyMaps.addAll(keyMaps);
             this.viewEntityCondition = viewEntityCondition;
@@ -1104,11 +1116,11 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public class ModelConversion implements Serializable {
-        protected String aliasName;
-        protected ModelEntity fromModelEntity;
-        protected Map<String, String> fieldMap = FastMap.newInstance();
-        protected Set<String> wildcards = new HashSet<String>();
+    public final class ModelConversion implements Serializable {
+        protected final String aliasName;
+        protected final ModelEntity fromModelEntity;
+        protected final Map<String, String> fieldMap = FastMap.newInstance();
+        protected final Set<String> wildcards = new HashSet<String>();
 
         public ModelConversion(String aliasName, ModelEntity fromModelEntity) {
             this.aliasName = aliasName;
@@ -1167,15 +1179,16 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ViewEntityCondition {
-        protected ModelViewEntity modelViewEntity;
-        protected ModelViewLink modelViewLink;
-        protected boolean filterByDate;
-        protected boolean distinct;
-        protected List<String> orderByList;
-        protected ViewCondition whereCondition;
-        protected ViewCondition havingCondition;
+    public static final class ViewEntityCondition {
+        protected final ModelViewEntity modelViewEntity;
+        protected final ModelViewLink modelViewLink;
+        protected final boolean filterByDate;
+        protected final boolean distinct;
+        protected final List<String> orderByList;
+        protected final ViewCondition whereCondition;
+        protected final ViewCondition havingCondition;
 
+        // FIXME: add programatic constructor
         public ViewEntityCondition(ModelViewEntity modelViewEntity, ModelViewLink modelViewLink, Element element) {
             this.modelViewEntity = modelViewEntity;
             this.modelViewLink = modelViewLink;
@@ -1188,6 +1201,8 @@ public class ModelViewEntity extends Mod
                 for (Element orderByElement: orderByElementList) {
                     orderByList.add(orderByElement.getAttribute("field-name"));
                 }
+            } else {
+                orderByList = null;
             }
 
             Element conditionExprElement = UtilXml.firstChildElement(element, "condition-expr");
@@ -1196,11 +1211,15 @@ public class ModelViewEntity extends Mod
                 this.whereCondition = new ViewConditionExpr(this, conditionExprElement);
             } else if (conditionListElement != null) {
                 this.whereCondition = new ViewConditionList(this, conditionListElement);
+            } else {
+                this.whereCondition = null;
             }
 
             Element havingConditionListElement = UtilXml.firstChildElement(element, "having-condition-list");
             if (havingConditionListElement != null) {
                 this.havingCondition = new ViewConditionList(this, havingConditionListElement);
+            } else {
+                this.havingCondition = null;
             }
         }
 
@@ -1229,36 +1248,39 @@ public class ModelViewEntity extends Mod
         public EntityCondition createCondition(ModelFieldTypeReader modelFieldTypeReader, List<String> entityAliasStack);
     }
 
-    public static class ViewConditionExpr implements ViewCondition {
-        protected ViewEntityCondition viewEntityCondition;
-        protected String entityAlias;
-        protected String fieldName;
-        protected String operator;
-        protected String relEntityAlias;
-        protected String relFieldName;
-        protected Object value;
-        protected boolean ignoreCase;
+    public static final class ViewConditionExpr implements ViewCondition {
+        protected final ViewEntityCondition viewEntityCondition;
+        protected final String entityAlias;
+        protected final String fieldName;
+        protected final String operator;
+        protected final String relEntityAlias;
+        protected final String relFieldName;
+        protected final Object value;
+        protected final boolean ignoreCase;
 
+        // FIXME: add programatic constructor
         public ViewConditionExpr(ViewEntityCondition viewEntityCondition, Element conditionExprElement) {
             this.viewEntityCondition = viewEntityCondition;
-            this.entityAlias = conditionExprElement.getAttribute("entity-alias");
+            String entityAlias = conditionExprElement.getAttribute("entity-alias");
             this.fieldName = conditionExprElement.getAttribute("field-name");
 
             this.operator = UtilFormatOut.checkEmpty(conditionExprElement.getAttribute("operator"), "equals");
-            this.relEntityAlias = conditionExprElement.getAttribute("rel-entity-alias");
+            String relEntityAlias = conditionExprElement.getAttribute("rel-entity-alias");
             this.relFieldName = conditionExprElement.getAttribute("rel-field-name");
             this.value = conditionExprElement.getAttribute("value");
             this.ignoreCase = "true".equals(conditionExprElement.getAttribute("ignore-case"));
 
             // if we are in a view-link, default to the entity-alias and rel-entity-alias there
             if (this.viewEntityCondition.modelViewLink != null) {
-                if (UtilValidate.isEmpty(this.entityAlias)) {
-                    this.entityAlias = this.viewEntityCondition.modelViewLink.getEntityAlias();
+                if (UtilValidate.isEmpty(entityAlias)) {
+                    entityAlias = this.viewEntityCondition.modelViewLink.getEntityAlias();
                 }
-                if (UtilValidate.isEmpty(this.relEntityAlias)) {
-                    this.relEntityAlias = this.viewEntityCondition.modelViewLink.getRelEntityAlias();
+                if (UtilValidate.isEmpty(relEntityAlias)) {
+                    relEntityAlias = this.viewEntityCondition.modelViewLink.getRelEntityAlias();
                 }
             }
+            this.entityAlias = entityAlias;
+            this.relEntityAlias = relEntityAlias;
         }
 
         public EntityCondition createCondition(ModelFieldTypeReader modelFieldTypeReader, List<String> entityAliasStack) {
@@ -1267,6 +1289,7 @@ public class ModelViewEntity extends Mod
                 throw new IllegalArgumentException("Could not find an entity operator for the name: " + this.operator);
             }
 
+            Object value = this.value;
             // If IN or BETWEEN operator, see if value is a literal list and split it
             if ((operator.equals(EntityOperator.IN) || operator.equals(EntityOperator.BETWEEN))
                     && value instanceof String) {
@@ -1330,10 +1353,10 @@ public class ModelViewEntity extends Mod
         }
     }
 
-    public static class ViewConditionList implements ViewCondition {
-        protected ViewEntityCondition viewEntityCondition;
-        List<ViewCondition> conditionList = new LinkedList<ViewCondition>();
-        String combine;
+    public static final class ViewConditionList implements ViewCondition {
+        protected final ViewEntityCondition viewEntityCondition;
+        protected final List<ViewCondition> conditionList = new LinkedList<ViewCondition>();
+        protected final String combine;
 
         public ViewConditionList(ViewEntityCondition viewEntityCondition, Element conditionListElement) {
             this.viewEntityCondition = viewEntityCondition;
@@ -1351,6 +1374,14 @@ public class ModelViewEntity extends Mod
             }
         }
 
+        public ViewConditionList(ViewEntityCondition viewEntityCondition, String combine, List<ViewCondition> conditionList) {
+            this.viewEntityCondition = viewEntityCondition;
+            this.combine = combine;
+            if (UtilValidate.isNotEmpty(conditionList)) {
+                this.conditionList.addAll(conditionList);
+            }
+        }
+
         public EntityCondition createCondition(ModelFieldTypeReader modelFieldTypeReader, List<String> entityAliasStack) {
             if (this.conditionList.size() == 0) {
                 return null;