Adrian, I really appreciate your help here. But I'm just not getting it to
work how I would expect. Here is my scenario. Given a date input by a user,
I want to find the next upcoming TE match. So, I would expect to be able to
do something like this (in pseudo-code)

Date input = UtilDateTime.toDate(parameters.inputDate);
cal.setTime(input);
return new Date(te.next(cal));

If I am using the INDEPENDENCE_DAY TE and I input the date "07/01/2011
00:00:00" I get "07/04/2012" as a result. I would expect "07/04/2011". If I
change the code to use te.first() instead of te.next() then I get unexpected
results when I input "07/10/2011". I get "07/04/2011" which in my opinion is
not the first date on or after 7/10/2011.

So, I can first run te.first() check to see if it is less than the input
date and then call te.next(). Is that the intended usage?

Furthermore, here is the XML definition of the TE I'm really trying to use.

        <TemporalExpression tempExprId="2ND_SUNDAY_IN_MONTH"
tempExprTypeId="DAY_IN_MONTH" integer1="1" integer2="2" description="Second
Sunday of the month"/>

        <TemporalExpression tempExprId="JAN_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="JAN_END"
toTempExprId="MONTH_RANGE_01"/>
        <TemporalExpressionAssoc fromTempExprId="JAN_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="FEB_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="FEB_END"
toTempExprId="MONTH_RANGE_02"/>
        <TemporalExpressionAssoc fromTempExprId="FEB_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="MAR_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="MAR_END"
toTempExprId="MONTH_RANGE_03"/>
        <TemporalExpressionAssoc fromTempExprId="MAR_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="APR_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="APR_END"
toTempExprId="MONTH_RANGE_04"/>
        <TemporalExpressionAssoc fromTempExprId="APR_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="MAY_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="MAY_END"
toTempExprId="MONTH_RANGE_05"/>
        <TemporalExpressionAssoc fromTempExprId="MAY_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="JUN_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="JUN_END"
toTempExprId="MONTH_RANGE_06"/>
        <TemporalExpressionAssoc fromTempExprId="JUN_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="JUL_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="JUL_END"
toTempExprId="MONTH_RANGE_07"/>
        <TemporalExpressionAssoc fromTempExprId="JUL_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="AUG_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="AUG_END"
toTempExprId="MONTH_RANGE_08"/>
        <TemporalExpressionAssoc fromTempExprId="AUG_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="SEP_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="SEP_END"
toTempExprId="MONTH_RANGE_09"/>
        <TemporalExpressionAssoc fromTempExprId="SEP_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="OCT_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="OCT_END"
toTempExprId="MONTH_RANGE_10"/>
        <TemporalExpressionAssoc fromTempExprId="OCT_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="NOV_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="NOV_END"
toTempExprId="MONTH_RANGE_11"/>
        <TemporalExpressionAssoc fromTempExprId="NOV_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="DEC_END" tempExprTypeId="INTERSECTION"/>
        <TemporalExpressionAssoc fromTempExprId="DEC_END"
toTempExprId="MONTH_RANGE_12"/>
        <TemporalExpressionAssoc fromTempExprId="DEC_END"
toTempExprId="2ND_SUNDAY_IN_MONTH"/>

        <TemporalExpression tempExprId="BI_MONTHLY_ONE" tempExprTypeId="UNION"
description="Second Sunday of every odd month"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="JAN_END"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="MAR_END"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="MAY_END"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="JUL_END"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="SEP_END"/>
        <TemporalExpressionAssoc fromTempExprId="BI_MONTHLY_ONE"
toTempExprId="NOV_END"/>

I'm trying to model the second Sunday in every odd month (i.e. Jan, Mar,
May, etc.). The 2ND_SUNDAY_IN_MONTH TE works great until I use it in an
INTERSECTION or UNION.

The te.first() method gives me very strange results. Perhaps I am defining
the TE incorrectly, but it seems to give me any match in the union and not
the first occurrence after the provided date. For example, using my
BI_MONTHLY_ONE TemporalExpression I call the following pseudo code

function nextOcc(te, inputDate)
{
    return te.next(inputDate);
}

And I get this

nextOcc(te, "06/01/2011") -> 11/13/2011

Where I would expect the next occurrence after 6/1/2011 would be 7/10/2011;
the second Sunday in July.

I'm sure I'm confusing something here. So, any guidance would be greatly
appreciated.

Thanks again

-craig

--
View this message in context: 
http://ofbiz.135035.n4.nabble.com/Do-Intersection-TemporalExpressions-work-tp4155989p4157599.html
Sent from the OFBiz - User mailing list archive at Nabble.com.

Reply via email to