svn commit: r942076 - /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java

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

svn commit: r942076 - /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java

jacopoc
Author: jacopoc
Date: Fri May  7 14:08:39 2010
New Revision: 942076

URL: http://svn.apache.org/viewvc?rev=942076&view=rev
Log:
Added ability to override the type, colName and description of an existing entity field using the extend-entity definition.


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

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=942076&r1=942075&r2=942076&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 Fri May  7 14:08:39 2010
@@ -303,13 +303,28 @@ public class ModelEntity extends ModelIn
 
     public void addExtendEntity(ModelReader reader, Element extendEntityElement) {
         for (Element fieldElement: UtilXml.childElementList(extendEntityElement, "field")) {
-            // TODO: should we look for existing fields of the same name here? for now just add to list...
             ModelField field = reader.createModelField(fieldElement);
             if (field != null) {
-                field.setModelEntity(this);
-                this.fields.add(field);
-                // this will always be true for now as extend-entity fielsd are always nonpks
-                if (!field.isPk) this.nopks.add(field);
+                ModelField existingField = this.getField(field.getName());
+                if (existingField != null) {
+                    // override the existing field's attributes
+                    // TODO: only overrides of type, colName and description are currently supported
+                    if (UtilValidate.isNotEmpty(field.getType())) {
+                        existingField.setType(field.getType());
+                    }
+                    if (UtilValidate.isNotEmpty(field.getColName())) {
+                        existingField.setColName(field.getColName());
+                    }
+                    if (UtilValidate.isNotEmpty(field.getDescription())) {
+                        existingField.setDescription(field.getDescription());
+                    }
+                } else {
+                    // add to the entity as a new field
+                    field.setModelEntity(this);
+                    this.fields.add(field);
+                    // this will always be true for now as extend-entity fielsd are always nonpks
+                    if (!field.isPk) this.nopks.add(field);
+                }
             }
         }