Hi, all! I've been looking into using view-entity entries to (in this
instance) collect product information, and have some questions about
"static conditionals". But first, some context for discussion
purposes. ;-)
Let's say I'd like to have a Product view that includes the product's
SKU as a column. Here's a sample entitydef.xml (angle-brackets
converted to square-brackets):
[view-entity entity-name="ProductFindViewEntity"
package-name="com.emforium.inventory" title="Product-Find View
Entity"]
[member-entity entity-alias="PR" entity-name="Product" /]
[member-entity entity-alias="SKU" entity-name="GoodIdentification" /]
[alias entity-alias="PR" name="productId" /]
[alias entity-alias="SKU" name="sku" field="idValue" /]
[alias entity-alias="SKU" name="skuTypeId"
field="goodIdentificationTypeId" /]
[view-link entity-alias="PR" rel-entity-alias="SKU" rel-optional="true"]
[key-map field-name="productId" /]
[/view-link]
[/view-entity]
Let's say I've also added two GoodIdentification rows for a product:
[GoodIdentification productId="ENCHILADAS"
goodIdentificationTypeId="SKU" idValue="ENCH-SKU" /]
[GoodIdentification productId="ENCHILADAS"
goodIdentificationTypeId="MANUFACTURER_ID_NO" idValue="123-ENCH-456"
/]
Now, a query for productId="ENCHILADAS" on this entity will yield two rows:
productId="ENCHILADAS", sku="ENCH-SKU", skuTypeId="SKU"
productId="ENCHILADAS", sku="123-ENCH-456", skuTypeId="MANUFACTURER_ID_NO"
Obviously, I need a conditional (e.g. skuTypeId="SKU" OR
skuTypeId=NULL), which I can do easily enough each place I do the
query, but I'd prefer to add that to the entitydef.xml file, since
it's the same in all cases (and avoids messy null-logic, etcetera).
Perhaps something like this:
...
[view-link entity-alias="PR" rel-entity-alias="SKU" rel-optional="true"]
[key-map field-name="productId" /]
[where entity-alias="SKU" field="goodIdentificationTypeId"
value="SKU" /]
[/view-link]
...
So, my questions: Have I missed some already-available functionality?
Is there a best-practice for this situation? Has anyone else
encountered this issue, and if so, how did you solve it? Are there
arguments against this sort of extension?
Thanks in advance,
.Dave