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