This is very good addition to trunk. Thanks Jacopo!
> 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);
> + }
> }
> }
>
>
>
>