You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by er...@apache.org on 2011/11/22 21:41:15 UTC

svn commit: r1205156 - in /ofbiz/trunk/framework/entity: dtd/entitymodel.xsd src/org/ofbiz/entity/model/ModelViewEntity.java

Author: erwan
Date: Tue Nov 22 20:41:14 2011
New Revision: 1205156

URL: http://svn.apache.org/viewvc?rev=1205156&view=rev
Log:
A patch from Youssef Khaye - OFBIZ-4573 - complex-alias does not allow to do (discountPercent * 100) as stated in xsd

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

Modified: ofbiz/trunk/framework/entity/dtd/entitymodel.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/dtd/entitymodel.xsd?rev=1205156&r1=1205155&r2=1205156&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/dtd/entitymodel.xsd (original)
+++ ofbiz/trunk/framework/entity/dtd/entitymodel.xsd Tue Nov 22 20:41:14 2011
@@ -346,9 +346,10 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.complex-alias-field">
-        <xs:attribute name="entity-alias" type="xs:string" use="required"/>
-        <xs:attribute name="field" type="xs:string" use="required"/>
+        <xs:attribute name="entity-alias" type="xs:string"/>
+        <xs:attribute name="field" type="xs:string"/>
         <xs:attribute name="default-value" type="xs:string"/>
+        <xs:attribute name="value" type="xs:string"/>
         <xs:attribute name="function" type="aggregate-function"/>
     </xs:attributeGroup>
     <xs:element name="view-link">

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=1205156&r1=1205155&r2=1205156&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 Tue Nov 22 20:41:14 2011
@@ -1045,12 +1045,14 @@ public class ModelViewEntity extends Mod
         protected final String field;
         protected final String defaultValue;
         protected final String function;
+        protected final String value;
 
         public ComplexAliasField(Element complexAliasFieldElement) {
             this.entityAlias = complexAliasFieldElement.getAttribute("entity-alias").intern();
             this.field = complexAliasFieldElement.getAttribute("field").intern();
             this.defaultValue = complexAliasFieldElement.getAttribute("default-value").intern();
             this.function = complexAliasFieldElement.getAttribute("function").intern();
+            this.value = complexAliasFieldElement.getAttribute("value").intern();
         }
 
         public ComplexAliasField(String entityAlias, String field, String defaultValue, String function) {
@@ -1058,36 +1060,49 @@ public class ModelViewEntity extends Mod
             this.field = field;
             this.defaultValue = defaultValue;
             this.function = function;
+            this.value = null;
+        }
+        public ComplexAliasField(String entityAlias, String field, String defaultValue, String function, String value) {
+            this.entityAlias = entityAlias;
+            this.field = field;
+            this.defaultValue = defaultValue;
+            this.function = function;
+            this.value = value;
         }
 
         /**
          * Make the alias as follows: function(coalesce(entityAlias.field, defaultValue))
          */
         public void makeAliasColName(StringBuilder colNameBuffer, StringBuilder fieldTypeBuffer, ModelViewEntity modelViewEntity, ModelReader modelReader) {
-            ModelEntity modelEntity = modelViewEntity.getAliasedEntity(entityAlias, modelReader);
-            ModelField modelField = modelViewEntity.getAliasedField(modelEntity, field, modelReader);
-
-            String colName = entityAlias + "." + modelField.getColName();
-
-            if (UtilValidate.isNotEmpty(defaultValue)) {
-                colName = "COALESCE(" + colName + "," + defaultValue + ")";
-            }
-
-            if (UtilValidate.isNotEmpty(function)) {
-                String prefix = functionPrefixMap.get(function);
-                if (prefix == null) {
-                    Debug.logWarning("[" + modelViewEntity.getEntityName() + "]: Specified alias function [" + function + "] not valid; must be: min, max, sum, avg, count or count-distinct; using a column name with no function function", module);
-                } else {
-                    colName = prefix + colName + ")";
+            if(UtilValidate.isEmpty(entityAlias) 
+                    && UtilValidate.isEmpty(field) 
+                    && UtilValidate.isNotEmpty(value)){
+                colNameBuffer.append(value);
+            }
+            else {
+                ModelEntity modelEntity = modelViewEntity.getAliasedEntity(entityAlias, modelReader);
+                ModelField modelField = modelViewEntity.getAliasedField(modelEntity, field, modelReader);
+                String colName = entityAlias + "." + modelField.getColName();
+    
+                if (UtilValidate.isNotEmpty(defaultValue)) {
+                    colName = "COALESCE(" + colName + "," + defaultValue + ")";
+                }
+    
+                if (UtilValidate.isNotEmpty(function)) {
+                    String prefix = functionPrefixMap.get(function);
+                    if (prefix == null) {
+                        Debug.logWarning("[" + modelViewEntity.getEntityName() + "]: Specified alias function [" + function + "] not valid; must be: min, max, sum, avg, count or count-distinct; using a column name with no function function", module);
+                    } else {
+                        colName = prefix + colName + ")";
+                    }
+                }
+    
+                colNameBuffer.append(colName);
+                //set fieldTypeBuffer if not already set
+                if (fieldTypeBuffer.length() == 0) {
+                    fieldTypeBuffer.append(modelField.type);
                 }
             }
-
-            colNameBuffer.append(colName);
-
-            //set fieldTypeBuffer if not already set
-            if (fieldTypeBuffer.length() == 0) {
-                fieldTypeBuffer.append(modelField.type);
-            }
         }
     }