Thanks Adrian,
I will try, I have some time ahead...
Jacques
From: "Adrian Crum" <adri...@hlmksw.com>
Jacques,
I was planning on creating a wiki page for the UEL and the OFBiz
extensions, but it will be a while before I have the time to do it.
If anyone would like to get one started, there was another thread where
I posted a link to a JSR-245 PDF file that has the UEL syntax specification.
OFBiz adds the following extensions to the UEL:
1. ${someList[]} - appends a list element. It is converted internally to
${someList['add']} - so that syntax could be used as well.
2. ${someList[+0]} - inserts a list element at the specified index. It
is converted internally to ${someList['ins...@0']} - so that syntax
could be used as well.
3. OFBiz supports variable creation (auto-vivify). In the expression
${someMap.anotherMap.mapElement} if someMap or anotherMap don't exist,
they are created.
4. OFBiz has a number of built-in UEL functions -
http://api.ofbiz.org/org/ofbiz/base/util/string/UelFunctions.html
-Adrian
Jacques Le Roux wrote:
Adiran,
Could we have a page somewhere in the Wiki ? With links to official UEL
expressions maybe, and our specificities if any. My apologies if it
aready exists :o)
Jacques
From: "Adrian Crum" <adrian.c...@yahoo.com>
Brett,
In the past, the OFBiz scripting languages (screen widgets and
minilang) used a home-grown expression parser that only recognized and
manipulated strings. We have converted the home-grown expression
parser over to the Unified Expression Language so that more powerful
expressions can be used. So, you have to look at it from an expression
standpoint, not a Map or database or String standpoint.
Identifiers in UEL expressions must follow Java naming conventions.
Your example:
<set field="passedVal"
from-field="someMap.${surveyResponseOptionAnswer.surveyOptionSeqId}"/>
which evaluates to:
<set field="passedVal" from-field="someMap.000"/>
would be similar to:
String passedVal = someObject.000;
in Java. Try creating a class property in Java named "000" - it won't
let you.
The benefit of using the UEL is we can create expressions like:
<set field="extendedCost" value="${orderItem.cost *
orderItem.quantity}"/>
which is something we couldn't do before.
-Adrian
--- On Tue, 1/20/09, Brett Palmer <brettgpal...@gmail.com> wrote:
From: Brett Palmer <brettgpal...@gmail.com>
Subject: Re: New Syntax to preserve String for 000 value using
FlexibleString expander
To: dev@ofbiz.apache.org
Date: Tuesday, January 20, 2009, 9:47 PM
Adrian,
Thanks for the reply.
Is there a reason we default to converting from a String to
a Long? The
example I gave is reading records from a VARCHAR field in a
database. It
seems like that should be a String be default. I'm
probably not
understanding the benefit for the automatic cast.
Brett
On Tue, Jan 20, 2009 at 12:06 PM, Adrian Crum
<adri...@hlmksw.com> wrote:
> Try
>
> <Set field="passedVal">
>
from-field="someMap._${surveyResponseOptionAnswer.surveyOptionSeqId}"/>
>
> or
>
> <Set field="passedVal">
from-field="someMap["_" +
>
surveyResponseOptionAnswer.surveyOptionSeqId]"/>
>
> The idea is to make the key something other than
numeric.
>
> If keys like "_000" cause a problem
elsewhere in the code, then try
>
> <Set field="passedVal">
>
from-field="someMap[str:toString(surveyResponseOptionAnswer.surveyOptionSeqId)]"/>
>
> -Adrian
>
>
>
> Brett Palmer wrote:
>
>> Here is an example:
>>
>> <Set field="passedVal"
>>
from-field="someMap.${surveyResponseOptionAnswer.surveyOptionSeqId}"
>> />
>>
>>
>> Where surveyOptionSeqId is 000 but translates to
0. Then doesn't
>> match the key value in the map.
>>
>> Brett
>>
>>
>> On 1/20/09, Adrian Crum <adri...@hlmksw.com>
wrote:
>>
>>> Brett,
>>>
>>> Could you provide a code snippet?
>>>
>>> -Adrian
>>>
>>> Brett Palmer wrote:
>>>
>>>> I saw some posts on this earlier but not
sure of the exact syntax. We
>>>> have
>>>> some SimpleMethod that use index keys like
"000", "001", etc. This are
>>>> being converted to longs and no longer
work in our Maps. What is the
>>>> SimpleMethod syntax to preserve the String
value "000" instead of
>>>> changes
>>>> to
>>>> a long.
>>>>
>>>>
>>>> Brett
>>>>
>>>>
>>