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