Instead of this feature, I would have preferred to see implemented an
<if> element for actions. In this way you could do: <if>...condition... <then> entity find with all the exprs </then> <else> entity find without the expr you want to skip </else> </if> This is my opinion is more flexible and general purpose approach. I am worried about the readability of the "ignore" attribute... Jacopo On Aug 28, 2008, at 9:47 AM, [hidden email] wrote: > Author: hansbak > Date: Wed Aug 27 21:17:48 2008 > New Revision: 689713 > > URL: http://svn.apache.org/viewvc?rev=689713&view=rev > Log: > OFBIZ-1934: Ignore property for condition-expr tag, excellent > contribution by Bruno Busco > > Modified: > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > EntityFinderUtil.java > ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > ofbiz/trunk/framework/widget/dtd/widget-form.xsd > ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > > Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > EntityFinderUtil.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/EntityFinderUtil.java?rev=689713&r1=689712&r2=689713&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > EntityFinderUtil.java (original) > +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > EntityFinderUtil.java Wed Aug 27 21:17:48 2008 > @@ -154,6 +154,7 @@ > protected FlexibleStringExpander operatorExdr; > protected FlexibleMapAccessor<Object> envNameAcsr; > protected FlexibleStringExpander valueExdr; > + protected FlexibleStringExpander ignoreExdr; > protected boolean ignoreIfNull; > protected boolean ignoreIfEmpty; > protected boolean ignoreCase; > @@ -171,6 +172,7 @@ > this.ignoreIfNull = > "true".equals(conditionExprElement.getAttribute("ignore-if-null")); > this.ignoreIfEmpty = > "true".equals(conditionExprElement.getAttribute("ignore-if-empty")); > this.ignoreCase = > "true".equals(conditionExprElement.getAttribute("ignore-case")); > + this.ignoreExdr = > FlexibleStringExpander > .getInstance(conditionExprElement.getAttribute("ignore")); > } > > public EntityCondition createCondition(Map<String, ? extends > Object> context, String entityName, GenericDelegator delegator) { > @@ -225,6 +227,10 @@ > return null; > } > > + if > ("true".equals(this.ignoreExdr.expandString(context))) { > + return null; > + } > + > if (operator == EntityOperator.NOT_EQUAL && value != null) { > // since some databases don't consider nulls in != > comparisons, explicitly include them > // this makes more sense logically, but if anyone ever > needs it to not behave this way we should add an "or-null" attribute > that is true by default > > Modified: ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd?rev=689713&r1=689712&r2=689713&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd (original) > +++ ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd Wed Aug 27 > 21:17:48 2008 > @@ -2643,6 +2643,14 @@ > </xs:restriction> > </xs:simpleType> > </xs:attribute> > + <xs:attribute name="ignore" default="false"> > + <xs:annotation> > + <xs:documentation> > + Ignore the condition if flag is true. > + Defaults to false. > + </xs:documentation> > + </xs:annotation> > + </xs:attribute> > </xs:attributeGroup> > <xs:element name="condition-object"> > <xs:annotation> > > Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=689713&r1=689712&r2=689713&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) > +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Wed Aug 27 > 21:17:48 2008 > @@ -1594,6 +1594,14 @@ > </xs:restriction> > </xs:simpleType> > </xs:attribute> > + <xs:attribute name="ignore" default="false"> > + <xs:annotation> > + <xs:documentation> > + Ignore the condition if flag is true. > + Defaults to false. > + </xs:documentation> > + </xs:annotation> > + </xs:attribute> > </xs:attributeGroup> > <xs:element name="condition-list"> > <xs:complexType> > > Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=689713&r1=689712&r2=689713&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) > +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Wed Aug 27 > 21:17:48 2008 > @@ -669,6 +669,14 @@ > </xs:restriction> > </xs:simpleType> > </xs:attribute> > + <xs:attribute name="ignore" default="false"> > + <xs:annotation> > + <xs:documentation> > + Ignore the condition if flag is true. > + Defaults to false. > + </xs:documentation> > + </xs:annotation> > + </xs:attribute> > </xs:attributeGroup> > <xs:element name="condition-object"> > <xs:complexType> > > Modified: ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree.xsd?rev=689713&r1=689712&r2=689713&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/framework/widget/dtd/widget-tree.xsd (original) > +++ ofbiz/trunk/framework/widget/dtd/widget-tree.xsd Wed Aug 27 > 21:17:48 2008 > @@ -504,6 +504,14 @@ > </xs:restriction> > </xs:simpleType> > </xs:attribute> > + <xs:attribute name="ignore" default="false"> > + <xs:annotation> > + <xs:documentation> > + Ignore the condition if flag is true. > + Defaults to false. > + </xs:documentation> > + </xs:annotation> > + </xs:attribute> > </xs:attributeGroup> > > <!-- ================ CONDITIONS ================ --> > > smime.p7s (3K) Download Attachment |
Hi Jacopo,
sure that would be nicer but much more involved....although using sections and conditions already somewhat allows this.... what i committed now is a simple solution for a simple problem...... Bruno, what do you think? On Thu, 2008-08-28 at 12:51 +0530, Jacopo Cappellato wrote: > Instead of this feature, I would have preferred to see implemented an > <if> element for actions. > In this way you could do: > > <if>...condition... > <then> > entity find with all the exprs > </then> > <else> > entity find without the expr you want to skip > </else> > </if> > > This is my opinion is more flexible and general purpose approach. > I am worried about the readability of the "ignore" attribute... > > Jacopo > > > On Aug 28, 2008, at 9:47 AM, [hidden email] wrote: > > > Author: hansbak > > Date: Wed Aug 27 21:17:48 2008 > > New Revision: 689713 > > > > URL: http://svn.apache.org/viewvc?rev=689713&view=rev > > Log: > > OFBIZ-1934: Ignore property for condition-expr tag, excellent > > contribution by Bruno Busco > > > > Modified: > > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > EntityFinderUtil.java > > ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > > ofbiz/trunk/framework/widget/dtd/widget-form.xsd > > ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > > ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > > > > Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > EntityFinderUtil.java > > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/EntityFinderUtil.java?rev=689713&r1=689712&r2=689713&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > EntityFinderUtil.java (original) > > +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > EntityFinderUtil.java Wed Aug 27 21:17:48 2008 > > @@ -154,6 +154,7 @@ > > protected FlexibleStringExpander operatorExdr; > > protected FlexibleMapAccessor<Object> envNameAcsr; > > protected FlexibleStringExpander valueExdr; > > + protected FlexibleStringExpander ignoreExdr; > > protected boolean ignoreIfNull; > > protected boolean ignoreIfEmpty; > > protected boolean ignoreCase; > > @@ -171,6 +172,7 @@ > > this.ignoreIfNull = > > "true".equals(conditionExprElement.getAttribute("ignore-if-null")); > > this.ignoreIfEmpty = > > "true".equals(conditionExprElement.getAttribute("ignore-if-empty")); > > this.ignoreCase = > > "true".equals(conditionExprElement.getAttribute("ignore-case")); > > + this.ignoreExdr = > > FlexibleStringExpander > > .getInstance(conditionExprElement.getAttribute("ignore")); > > } > > > > public EntityCondition createCondition(Map<String, ? extends > > Object> context, String entityName, GenericDelegator delegator) { > > @@ -225,6 +227,10 @@ > > return null; > > } > > > > + if > > ("true".equals(this.ignoreExdr.expandString(context))) { > > + return null; > > + } > > + > > if (operator == EntityOperator.NOT_EQUAL && value != null) { > > // since some databases don't consider nulls in != > > comparisons, explicitly include them > > // this makes more sense logically, but if anyone ever > > needs it to not behave this way we should add an "or-null" attribute > > that is true by default > > > > Modified: ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd?rev=689713&r1=689712&r2=689713&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd (original) > > +++ ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd Wed Aug 27 > > 21:17:48 2008 > > @@ -2643,6 +2643,14 @@ > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > + <xs:attribute name="ignore" default="false"> > > + <xs:annotation> > > + <xs:documentation> > > + Ignore the condition if flag is true. > > + Defaults to false. > > + </xs:documentation> > > + </xs:annotation> > > + </xs:attribute> > > </xs:attributeGroup> > > <xs:element name="condition-object"> > > <xs:annotation> > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd > > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=689713&r1=689712&r2=689713&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) > > +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Wed Aug 27 > > 21:17:48 2008 > > @@ -1594,6 +1594,14 @@ > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > + <xs:attribute name="ignore" default="false"> > > + <xs:annotation> > > + <xs:documentation> > > + Ignore the condition if flag is true. > > + Defaults to false. > > + </xs:documentation> > > + </xs:annotation> > > + </xs:attribute> > > </xs:attributeGroup> > > <xs:element name="condition-list"> > > <xs:complexType> > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=689713&r1=689712&r2=689713&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) > > +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Wed Aug 27 > > 21:17:48 2008 > > @@ -669,6 +669,14 @@ > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > + <xs:attribute name="ignore" default="false"> > > + <xs:annotation> > > + <xs:documentation> > > + Ignore the condition if flag is true. > > + Defaults to false. > > + </xs:documentation> > > + </xs:annotation> > > + </xs:attribute> > > </xs:attributeGroup> > > <xs:element name="condition-object"> > > <xs:complexType> > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree.xsd?rev=689713&r1=689712&r2=689713&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/framework/widget/dtd/widget-tree.xsd (original) > > +++ ofbiz/trunk/framework/widget/dtd/widget-tree.xsd Wed Aug 27 > > 21:17:48 2008 > > @@ -504,6 +504,14 @@ > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > + <xs:attribute name="ignore" default="false"> > > + <xs:annotation> > > + <xs:documentation> > > + Ignore the condition if flag is true. > > + Defaults to false. > > + </xs:documentation> > > + </xs:annotation> > > + </xs:attribute> > > </xs:attributeGroup> > > > > <!-- ================ CONDITIONS ================ --> > > > > > Antwebsystems.com: Quality OFBiz services for competitive prices |
Hi Hans,
yes, I see... but maybe some sort of "use-when" attribute in the entity-condition (and then using two separate conditions) would have been better. Maybe I am too picky, but when it comes to framework stuff (and xsd grammars) I like to think a lot about the best way of enhancing the framework. Instead of adding a lot of small attributes like the ignore one, to solve existing issues, sometimes it makes sense to try to Let's say for example that, based on a given condition we have to query a different entity, or select different fields, or sort the results in a different way (and not just ignore a search constraint like in your situation): instead of adding a lot of small attributes (that are confusing), a "use-when" attribute would work fine for all these scenarios. Just my 2 cents, Jacopo On Aug 28, 2008, at 1:13 PM, Hans Bakker wrote: > Hi Jacopo, > > sure that would be nicer but much more involved....although using > sections and conditions already somewhat allows this.... > > what i committed now is a simple solution for a simple problem...... > > Bruno, what do you think? > > > On Thu, 2008-08-28 at 12:51 +0530, Jacopo Cappellato wrote: >> Instead of this feature, I would have preferred to see implemented an >> <if> element for actions. >> In this way you could do: >> >> <if>...condition... >> <then> >> entity find with all the exprs >> </then> >> <else> >> entity find without the expr you want to skip >> </else> >> </if> >> >> This is my opinion is more flexible and general purpose approach. >> I am worried about the readability of the "ignore" attribute... >> >> Jacopo >> >> >> On Aug 28, 2008, at 9:47 AM, [hidden email] wrote: >> >>> Author: hansbak >>> Date: Wed Aug 27 21:17:48 2008 >>> New Revision: 689713 >>> >>> URL: http://svn.apache.org/viewvc?rev=689713&view=rev >>> Log: >>> OFBIZ-1934: Ignore property for condition-expr tag, excellent >>> contribution by Bruno Busco >>> >>> Modified: >>> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>> EntityFinderUtil.java >>> ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd >>> ofbiz/trunk/framework/widget/dtd/widget-form.xsd >>> ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >>> ofbiz/trunk/framework/widget/dtd/widget-tree.xsd >>> >>> Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>> EntityFinderUtil.java >>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/EntityFinderUtil.java?rev=689713&r1=689712&r2=689713&view=diff >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>> EntityFinderUtil.java (original) >>> +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>> EntityFinderUtil.java Wed Aug 27 21:17:48 2008 >>> @@ -154,6 +154,7 @@ >>> protected FlexibleStringExpander operatorExdr; >>> protected FlexibleMapAccessor<Object> envNameAcsr; >>> protected FlexibleStringExpander valueExdr; >>> + protected FlexibleStringExpander ignoreExdr; >>> protected boolean ignoreIfNull; >>> protected boolean ignoreIfEmpty; >>> protected boolean ignoreCase; >>> @@ -171,6 +172,7 @@ >>> this.ignoreIfNull = >>> "true".equals(conditionExprElement.getAttribute("ignore-if-null")); >>> this.ignoreIfEmpty = >>> "true".equals(conditionExprElement.getAttribute("ignore-if-empty")); >>> this.ignoreCase = >>> "true".equals(conditionExprElement.getAttribute("ignore-case")); >>> + this.ignoreExdr = >>> FlexibleStringExpander >>> .getInstance(conditionExprElement.getAttribute("ignore")); >>> } >>> >>> public EntityCondition createCondition(Map<String, ? extends >>> Object> context, String entityName, GenericDelegator delegator) { >>> @@ -225,6 +227,10 @@ >>> return null; >>> } >>> >>> + if >>> ("true".equals(this.ignoreExdr.expandString(context))) { >>> + return null; >>> + } >>> + >>> if (operator == EntityOperator.NOT_EQUAL && value != null) { >>> // since some databases don't consider nulls in != >>> comparisons, explicitly include them >>> // this makes more sense logically, but if anyone ever >>> needs it to not behave this way we should add an "or-null" attribute >>> that is true by default >>> >>> Modified: ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd >>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd?rev=689713&r1=689712&r2=689713&view=diff >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd (original) >>> +++ ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd Wed Aug 27 >>> 21:17:48 2008 >>> @@ -2643,6 +2643,14 @@ >>> </xs:restriction> >>> </xs:simpleType> >>> </xs:attribute> >>> + <xs:attribute name="ignore" default="false"> >>> + <xs:annotation> >>> + <xs:documentation> >>> + Ignore the condition if flag is true. >>> + Defaults to false. >>> + </xs:documentation> >>> + </xs:annotation> >>> + </xs:attribute> >>> </xs:attributeGroup> >>> <xs:element name="condition-object"> >>> <xs:annotation> >>> >>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd >>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=689713&r1=689712&r2=689713&view=diff >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) >>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Wed Aug 27 >>> 21:17:48 2008 >>> @@ -1594,6 +1594,14 @@ >>> </xs:restriction> >>> </xs:simpleType> >>> </xs:attribute> >>> + <xs:attribute name="ignore" default="false"> >>> + <xs:annotation> >>> + <xs:documentation> >>> + Ignore the condition if flag is true. >>> + Defaults to false. >>> + </xs:documentation> >>> + </xs:annotation> >>> + </xs:attribute> >>> </xs:attributeGroup> >>> <xs:element name="condition-list"> >>> <xs:complexType> >>> >>> Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=689713&r1=689712&r2=689713&view=diff >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) >>> +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Wed Aug 27 >>> 21:17:48 2008 >>> @@ -669,6 +669,14 @@ >>> </xs:restriction> >>> </xs:simpleType> >>> </xs:attribute> >>> + <xs:attribute name="ignore" default="false"> >>> + <xs:annotation> >>> + <xs:documentation> >>> + Ignore the condition if flag is true. >>> + Defaults to false. >>> + </xs:documentation> >>> + </xs:annotation> >>> + </xs:attribute> >>> </xs:attributeGroup> >>> <xs:element name="condition-object"> >>> <xs:complexType> >>> >>> Modified: ofbiz/trunk/framework/widget/dtd/widget-tree.xsd >>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree.xsd?rev=689713&r1=689712&r2=689713&view=diff >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- ofbiz/trunk/framework/widget/dtd/widget-tree.xsd (original) >>> +++ ofbiz/trunk/framework/widget/dtd/widget-tree.xsd Wed Aug 27 >>> 21:17:48 2008 >>> @@ -504,6 +504,14 @@ >>> </xs:restriction> >>> </xs:simpleType> >>> </xs:attribute> >>> + <xs:attribute name="ignore" default="false"> >>> + <xs:annotation> >>> + <xs:documentation> >>> + Ignore the condition if flag is true. >>> + Defaults to false. >>> + </xs:documentation> >>> + </xs:annotation> >>> + </xs:attribute> >>> </xs:attributeGroup> >>> >>> <!-- ================ CONDITIONS ================ --> >>> >>> >> > -- > Antwebsystems.com: Quality OFBiz services for competitive prices > smime.p7s (3K) Download Attachment |
In reply to this post by hans_bakker
I agree with Jacopo that the <if> tag would help very much but as you said
the "ignore" attribute is much simpler for that particular scope. It follows the already present ignore-if-null and ignore-if-empty pattern. -Bruno 2008/8/28 Hans Bakker <[hidden email]> > Hi Jacopo, > > sure that would be nicer but much more involved....although using > sections and conditions already somewhat allows this.... > > what i committed now is a simple solution for a simple problem...... > > Bruno, what do you think? > > > On Thu, 2008-08-28 at 12:51 +0530, Jacopo Cappellato wrote: > > Instead of this feature, I would have preferred to see implemented an > > <if> element for actions. > > In this way you could do: > > > > <if>...condition... > > <then> > > entity find with all the exprs > > </then> > > <else> > > entity find without the expr you want to skip > > </else> > > </if> > > > > This is my opinion is more flexible and general purpose approach. > > I am worried about the readability of the "ignore" attribute... > > > > Jacopo > > > > > > On Aug 28, 2008, at 9:47 AM, [hidden email] wrote: > > > > > Author: hansbak > > > Date: Wed Aug 27 21:17:48 2008 > > > New Revision: 689713 > > > > > > URL: http://svn.apache.org/viewvc?rev=689713&view=rev > > > Log: > > > OFBIZ-1934: Ignore property for condition-expr tag, excellent > > > contribution by Bruno Busco > > > > > > Modified: > > > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > > EntityFinderUtil.java > > > ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > > > ofbiz/trunk/framework/widget/dtd/widget-form.xsd > > > ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > > > ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > > > > > > Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > > EntityFinderUtil.java > > > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/EntityFinderUtil.java?rev=689713&r1=689712&r2=689713&view=diff > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > ====================================================================== > > > --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > > EntityFinderUtil.java (original) > > > +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ > > > EntityFinderUtil.java Wed Aug 27 21:17:48 2008 > > > @@ -154,6 +154,7 @@ > > > protected FlexibleStringExpander operatorExdr; > > > protected FlexibleMapAccessor<Object> envNameAcsr; > > > protected FlexibleStringExpander valueExdr; > > > + protected FlexibleStringExpander ignoreExdr; > > > protected boolean ignoreIfNull; > > > protected boolean ignoreIfEmpty; > > > protected boolean ignoreCase; > > > @@ -171,6 +172,7 @@ > > > this.ignoreIfNull = > > > "true".equals(conditionExprElement.getAttribute("ignore-if-null")); > > > this.ignoreIfEmpty = > > > "true".equals(conditionExprElement.getAttribute("ignore-if-empty")); > > > this.ignoreCase = > > > "true".equals(conditionExprElement.getAttribute("ignore-case")); > > > + this.ignoreExdr = > > > FlexibleStringExpander > > > .getInstance(conditionExprElement.getAttribute("ignore")); > > > } > > > > > > public EntityCondition createCondition(Map<String, ? extends > > > Object> context, String entityName, GenericDelegator delegator) { > > > @@ -225,6 +227,10 @@ > > > return null; > > > } > > > > > > + if > > > ("true".equals(this.ignoreExdr.expandString(context))) { > > > + return null; > > > + } > > > + > > > if (operator == EntityOperator.NOT_EQUAL && value != null) { > > > // since some databases don't consider nulls in != > > > comparisons, explicitly include them > > > // this makes more sense logically, but if anyone ever > > > needs it to not behave this way we should add an "or-null" attribute > > > that is true by default > > > > > > Modified: ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd > > > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd?rev=689713&r1=689712&r2=689713&view=diff > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > ====================================================================== > > > --- ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd (original) > > > +++ ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd Wed Aug 27 > > > 21:17:48 2008 > > > @@ -2643,6 +2643,14 @@ > > > </xs:restriction> > > > </xs:simpleType> > > > </xs:attribute> > > > + <xs:attribute name="ignore" default="false"> > > > + <xs:annotation> > > > + <xs:documentation> > > > + Ignore the condition if flag is true. > > > + Defaults to false. > > > + </xs:documentation> > > > + </xs:annotation> > > > + </xs:attribute> > > > </xs:attributeGroup> > > > <xs:element name="condition-object"> > > > <xs:annotation> > > > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd > > > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=689713&r1=689712&r2=689713&view=diff > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > ====================================================================== > > > --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) > > > +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Wed Aug 27 > > > 21:17:48 2008 > > > @@ -1594,6 +1594,14 @@ > > > </xs:restriction> > > > </xs:simpleType> > > > </xs:attribute> > > > + <xs:attribute name="ignore" default="false"> > > > + <xs:annotation> > > > + <xs:documentation> > > > + Ignore the condition if flag is true. > > > + Defaults to false. > > > + </xs:documentation> > > > + </xs:annotation> > > > + </xs:attribute> > > > </xs:attributeGroup> > > > <xs:element name="condition-list"> > > > <xs:complexType> > > > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd > > > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=689713&r1=689712&r2=689713&view=diff > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > ====================================================================== > > > --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) > > > +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Wed Aug 27 > > > 21:17:48 2008 > > > @@ -669,6 +669,14 @@ > > > </xs:restriction> > > > </xs:simpleType> > > > </xs:attribute> > > > + <xs:attribute name="ignore" default="false"> > > > + <xs:annotation> > > > + <xs:documentation> > > > + Ignore the condition if flag is true. > > > + Defaults to false. > > > + </xs:documentation> > > > + </xs:annotation> > > > + </xs:attribute> > > > </xs:attributeGroup> > > > <xs:element name="condition-object"> > > > <xs:complexType> > > > > > > Modified: ofbiz/trunk/framework/widget/dtd/widget-tree.xsd > > > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree.xsd?rev=689713&r1=689712&r2=689713&view=diff > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > = > > > ====================================================================== > > > --- ofbiz/trunk/framework/widget/dtd/widget-tree.xsd (original) > > > +++ ofbiz/trunk/framework/widget/dtd/widget-tree.xsd Wed Aug 27 > > > 21:17:48 2008 > > > @@ -504,6 +504,14 @@ > > > </xs:restriction> > > > </xs:simpleType> > > > </xs:attribute> > > > + <xs:attribute name="ignore" default="false"> > > > + <xs:annotation> > > > + <xs:documentation> > > > + Ignore the condition if flag is true. > > > + Defaults to false. > > > + </xs:documentation> > > > + </xs:annotation> > > > + </xs:attribute> > > > </xs:attributeGroup> > > > > > > <!-- ================ CONDITIONS ================ --> > > > > > > > > > -- > Antwebsystems.com: Quality OFBiz services for competitive prices > > |
Administrator
|
In reply to this post by Jacopo Cappellato-3
I think most would agree, it's more a manpower issue...
Jacques From: "Jacopo Cappellato" <[hidden email]> > Hi Hans, > > yes, I see... but maybe some sort of "use-when" attribute in the entity-condition (and then using two separate conditions) would > have been better. > Maybe I am too picky, but when it comes to framework stuff (and xsd grammars) I like to think a lot about the best way of > enhancing the framework. > Instead of adding a lot of small attributes like the ignore one, to solve existing issues, sometimes it makes sense to try to > Let's say for example that, based on a given condition we have to query a different entity, or select different fields, or sort > the results in a different way (and not just ignore a search constraint like in your situation): instead of adding a lot of > small attributes (that are confusing), a "use-when" attribute would work fine for all these scenarios. > Just my 2 cents, > > Jacopo > > On Aug 28, 2008, at 1:13 PM, Hans Bakker wrote: > >> Hi Jacopo, >> >> sure that would be nicer but much more involved....although using >> sections and conditions already somewhat allows this.... >> >> what i committed now is a simple solution for a simple problem...... >> >> Bruno, what do you think? >> >> >> On Thu, 2008-08-28 at 12:51 +0530, Jacopo Cappellato wrote: >>> Instead of this feature, I would have preferred to see implemented an >>> <if> element for actions. >>> In this way you could do: >>> >>> <if>...condition... >>> <then> >>> entity find with all the exprs >>> </then> >>> <else> >>> entity find without the expr you want to skip >>> </else> >>> </if> >>> >>> This is my opinion is more flexible and general purpose approach. >>> I am worried about the readability of the "ignore" attribute... >>> >>> Jacopo >>> >>> >>> On Aug 28, 2008, at 9:47 AM, [hidden email] wrote: >>> >>>> Author: hansbak >>>> Date: Wed Aug 27 21:17:48 2008 >>>> New Revision: 689713 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=689713&view=rev >>>> Log: >>>> OFBIZ-1934: Ignore property for condition-expr tag, excellent >>>> contribution by Bruno Busco >>>> >>>> Modified: >>>> ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>>> EntityFinderUtil.java >>>> ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd >>>> ofbiz/trunk/framework/widget/dtd/widget-form.xsd >>>> ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >>>> ofbiz/trunk/framework/widget/dtd/widget-tree.xsd >>>> >>>> Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>>> EntityFinderUtil.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/EntityFinderUtil.java?rev=689713&r1=689712&r2=689713&view=diff >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = = ==================================================================== >>>> --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>>> EntityFinderUtil.java (original) >>>> +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ >>>> EntityFinderUtil.java Wed Aug 27 21:17:48 2008 >>>> @@ -154,6 +154,7 @@ >>>> protected FlexibleStringExpander operatorExdr; >>>> protected FlexibleMapAccessor<Object> envNameAcsr; >>>> protected FlexibleStringExpander valueExdr; >>>> + protected FlexibleStringExpander ignoreExdr; >>>> protected boolean ignoreIfNull; >>>> protected boolean ignoreIfEmpty; >>>> protected boolean ignoreCase; >>>> @@ -171,6 +172,7 @@ >>>> this.ignoreIfNull = >>>> "true".equals(conditionExprElement.getAttribute("ignore-if-null")); >>>> this.ignoreIfEmpty = >>>> "true".equals(conditionExprElement.getAttribute("ignore-if-empty")); >>>> this.ignoreCase = >>>> "true".equals(conditionExprElement.getAttribute("ignore-case")); >>>> + this.ignoreExdr = >>>> FlexibleStringExpander >>>> .getInstance(conditionExprElement.getAttribute("ignore")); >>>> } >>>> >>>> public EntityCondition createCondition(Map<String, ? extends >>>> Object> context, String entityName, GenericDelegator delegator) { >>>> @@ -225,6 +227,10 @@ >>>> return null; >>>> } >>>> >>>> + if >>>> ("true".equals(this.ignoreExdr.expandString(context))) { >>>> + return null; >>>> + } >>>> + >>>> if (operator == EntityOperator.NOT_EQUAL && value != null) { >>>> // since some databases don't consider nulls in != >>>> comparisons, explicitly include them >>>> // this makes more sense logically, but if anyone ever >>>> needs it to not behave this way we should add an "or-null" attribute >>>> that is true by default >>>> >>>> Modified: ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd?rev=689713&r1=689712&r2=689713&view=diff >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = = ==================================================================== >>>> --- ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd (original) >>>> +++ ofbiz/trunk/framework/minilang/dtd/simple-methods.xsd Wed Aug 27 >>>> 21:17:48 2008 >>>> @@ -2643,6 +2643,14 @@ >>>> </xs:restriction> >>>> </xs:simpleType> >>>> </xs:attribute> >>>> + <xs:attribute name="ignore" default="false"> >>>> + <xs:annotation> >>>> + <xs:documentation> >>>> + Ignore the condition if flag is true. >>>> + Defaults to false. >>>> + </xs:documentation> >>>> + </xs:annotation> >>>> + </xs:attribute> >>>> </xs:attributeGroup> >>>> <xs:element name="condition-object"> >>>> <xs:annotation> >>>> >>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd >>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=689713&r1=689712&r2=689713&view=diff >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = = ==================================================================== >>>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) >>>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Wed Aug 27 >>>> 21:17:48 2008 >>>> @@ -1594,6 +1594,14 @@ >>>> </xs:restriction> >>>> </xs:simpleType> >>>> </xs:attribute> >>>> + <xs:attribute name="ignore" default="false"> >>>> + <xs:annotation> >>>> + <xs:documentation> >>>> + Ignore the condition if flag is true. >>>> + Defaults to false. >>>> + </xs:documentation> >>>> + </xs:annotation> >>>> + </xs:attribute> >>>> </xs:attributeGroup> >>>> <xs:element name="condition-list"> >>>> <xs:complexType> >>>> >>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=689713&r1=689712&r2=689713&view=diff >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = = ==================================================================== >>>> --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) >>>> +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Wed Aug 27 >>>> 21:17:48 2008 >>>> @@ -669,6 +669,14 @@ >>>> </xs:restriction> >>>> </xs:simpleType> >>>> </xs:attribute> >>>> + <xs:attribute name="ignore" default="false"> >>>> + <xs:annotation> >>>> + <xs:documentation> >>>> + Ignore the condition if flag is true. >>>> + Defaults to false. >>>> + </xs:documentation> >>>> + </xs:annotation> >>>> + </xs:attribute> >>>> </xs:attributeGroup> >>>> <xs:element name="condition-object"> >>>> <xs:complexType> >>>> >>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-tree.xsd >>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree.xsd?rev=689713&r1=689712&r2=689713&view=diff >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = >>>> = = ==================================================================== >>>> --- ofbiz/trunk/framework/widget/dtd/widget-tree.xsd (original) >>>> +++ ofbiz/trunk/framework/widget/dtd/widget-tree.xsd Wed Aug 27 >>>> 21:17:48 2008 >>>> @@ -504,6 +504,14 @@ >>>> </xs:restriction> >>>> </xs:simpleType> >>>> </xs:attribute> >>>> + <xs:attribute name="ignore" default="false"> >>>> + <xs:annotation> >>>> + <xs:documentation> >>>> + Ignore the condition if flag is true. >>>> + Defaults to false. >>>> + </xs:documentation> >>>> + </xs:annotation> >>>> + </xs:attribute> >>>> </xs:attributeGroup> >>>> >>>> <!-- ================ CONDITIONS ================ --> >>>> >>>> >>> >> -- >> Antwebsystems.com: Quality OFBiz services for competitive prices >> > > |
Free forum by Nabble | Edit this page |