Hello,

I seem to be having problems getting TemporalExpressions to work. They seem to 
work fine for some expressions. But not for INTERSECTION types. I am using the 
TE definition from the sample data in ServiceDemoData.xml for INDEPENDENCE_DAY, 
specifically this:

    <TemporalExpression tempExprId="INDEPENDENCE_DAY" 
tempExprTypeId="INTERSECTION"/>
    <TemporalExpressionAssoc fromTempExprId="INDEPENDENCE_DAY" 
toTempExprId="MONTH_RANGE_07"/>
    <TemporalExpressionAssoc fromTempExprId="INDEPENDENCE_DAY" 
toTempExprId="DAYOFMONTH_04"/>

And I'm using the following code to iterate over a number of days to see when 
the next Independence Day will occur:

com.ibm.icu.util.Calendar cal = new com.ibm.icu.util.GregorianCalendar();
java.util.Date start = UtilDateTime.toDate("06/01/2011 00:00:00");
cal.setTime(start);

GenericValue temporalExpression = delegator.findOne("TemporalExpression", 
UtilMisc.toMap("tempExprId", "INDEPENDENCE_DAY"), true);
TemporalExpression selectionDeadline = 
TemporalExpressionWorker.makeTemporalExpression(delegator, temporalExpression);

for (int index = 0; index < 60; index++)
{
        Date nextDate = new Date(selectionDeadline.next(cal).getTimeInMillis());
        Debug.logInfo(String.format("%s -> %s", new 
Date(cal.getTimeInMillis()), nextDate), "Groovy");

        cal.add(com.ibm.icu.util.Calendar.DATE, 1);
}

It doesn't do the right thing for the first 4 days of July. It says for 
7/1/2011 that the next occurrence is 7/4/2012. Here is the output:

2011-12-03 19:14:52,254 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jun 
01 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,256 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jun 
02 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,256 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jun 
03 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,256 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jun 
04 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,257 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jun 
05 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,257 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jun 
06 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,257 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jun 
07 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,258 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jun 
08 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,258 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jun 
09 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,259 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jun 
10 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,260 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jun 
11 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,260 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jun 
12 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,260 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jun 
13 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,260 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jun 
14 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,261 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jun 
15 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,261 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jun 
16 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,261 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jun 
17 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,262 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jun 
18 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,262 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jun 
19 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,262 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jun 
20 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,263 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jun 
21 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,263 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jun 
22 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,263 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jun 
23 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,264 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jun 
24 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,264 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jun 
25 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,264 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jun 
26 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,265 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jun 
27 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,265 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jun 
28 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,266 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jun 
29 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,275 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jun 
30 00:00:00 PDT 2011 -> Mon Jul 04 00:00:00 PDT 2011
2011-12-03 19:14:52,276 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jul 
01 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,277 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jul 
02 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,277 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jul 
03 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,278 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jul 
04 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,279 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jul 
05 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,280 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jul 
06 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,281 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jul 
07 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,282 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jul 
08 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,283 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jul 
09 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,284 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jul 
10 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,289 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jul 
11 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,290 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jul 
12 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,291 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jul 
13 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,292 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jul 
14 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,292 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jul 
15 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,295 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jul 
16 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,313 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jul 
17 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,314 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jul 
18 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,322 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jul 
19 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,323 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jul 
20 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,324 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jul 
21 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,325 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jul 
22 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,326 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jul 
23 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,327 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sun Jul 
24 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,327 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Mon Jul 
25 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,328 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Tue Jul 
26 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,329 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Wed Jul 
27 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,336 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Thu Jul 
28 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,337 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Fri Jul 
29 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012
2011-12-03 19:14:52,338 (http-0.0.0.0-8080-1) [Test.groovy:23 :INFO ] Sat Jul 
30 00:00:00 PDT 2011 -> Wed Jul 04 00:00:00 PDT 2012

I also tried the TE.first() method and it gave different results that were also 
wrong. I think it must be a bug. I haven't found a fix yet and I'm hesitant to 
change this code as I know at least the job scheduler relies on 
TemporalExpressions.

Thanks for any guidance.

-craig

Reply via email to