From a998621d428d7a90485bd50c55180ef3964dbeab Mon Sep 17 00:00:00 2001 From: mguessan Date: Wed, 9 Nov 2011 23:25:19 +0000 Subject: [PATCH] Caldav: apply date filter to tasks git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1856 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/ExchangeSession.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index 98008b26..1dc4bd85 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -2519,7 +2519,7 @@ public abstract class ExchangeSession { */ public List getAllEvents(String folderPath) throws IOException { boolean caldavDisableTasks = Settings.getBooleanProperty("davmail.caldavDisableTasks"); - List results = searchEvents(folderPath, getCalendarItemCondition(caldavDisableTasks, getPastDelayCondition())); + List results = searchEvents(folderPath, getCalendarItemCondition(caldavDisableTasks, getPastDelayCondition("dtstart"))); if (isMainCalendar(folderPath)) { // retrieve tasks from main tasks folder @@ -2531,13 +2531,13 @@ public abstract class ExchangeSession { protected abstract Condition getCalendarItemCondition(boolean excludeTasks, Condition dateCondition); - protected Condition getPastDelayCondition() { + protected Condition getPastDelayCondition(String attribute) { int caldavPastDelay = Settings.getIntProperty("davmail.caldavPastDelay"); Condition dateCondition = null; if (caldavPastDelay != 0) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -caldavPastDelay); - dateCondition = gt("dtstart", formatSearchDate(cal.getTime())); + dateCondition = gt(attribute, formatSearchDate(cal.getTime())); } return dateCondition; } @@ -2597,7 +2597,8 @@ public abstract class ExchangeSession { * @throws IOException on error */ public List searchTasksOnly(String folderPath) throws IOException { - return searchEvents(folderPath, not(isEqualTo("outlookmessageclass", "IPM.Appointment"))); + return searchEvents(folderPath, and(isEqualTo("outlookmessageclass", "IPM.Task"), + or(isNull("datecompleted"), getPastDelayCondition("datecompleted")))); } /**