Caldav: return reoccuring events on time-range request

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1355 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2010-08-17 15:10:19 +00:00
parent 57a379c67b
commit 9353e2bc63
2 changed files with 21 additions and 24 deletions

View File

@ -2239,8 +2239,7 @@ public abstract class ExchangeSession {
if (timeRangeEnd != null) { if (timeRangeEnd != null) {
andCondition.add(lte("dtend", formatSearchDate(parser.parse(timeRangeEnd)))); andCondition.add(lte("dtend", formatSearchDate(parser.parse(timeRangeEnd))));
} }
andCondition.add(isEqualTo("instancetype", 0)); return searchEvents(folderPath, andCondition);
return searchEvents(folderPath, ITEM_PROPERTIES, andCondition);
} catch (ParseException e) { } catch (ParseException e) {
throw new IOException(e); throw new IOException(e);
} }

View File

@ -137,12 +137,13 @@ public class TestCaldav extends AbstractDavMailTestCase {
buffer.append("<C:comp-filter name=\"VCALENDAR\">"); buffer.append("<C:comp-filter name=\"VCALENDAR\">");
buffer.append("<C:comp-filter name=\"VEVENT\">"); buffer.append("<C:comp-filter name=\"VEVENT\">");
buffer.append("<C:time-range start=\"").append(formatter.format(start)).append("\" end=\"").append(formatter.format(end)).append("\"/>"); buffer.append("<C:time-range start=\"").append(formatter.format(start)).append("\" end=\"").append(formatter.format(end)).append("\"/>");
//buffer.append("<C:time-range start=\"").append(formatter.format(start)).append("\"/>");
buffer.append("</C:comp-filter>"); buffer.append("</C:comp-filter>");
buffer.append("</C:comp-filter>"); buffer.append("</C:comp-filter>");
buffer.append("<C:filter>"); buffer.append("<C:filter>");
buffer.append("</C:filter>"); buffer.append("</C:filter>");
buffer.append("</C:calendar-query>"); buffer.append("</C:calendar-query>");
SearchReportMethod method = new SearchReportMethod("/users/" + session.getEmail() + "/calendar/",buffer.toString()); SearchReportMethod method = new SearchReportMethod("/users/" + session.getEmail() + "/calendar/", buffer.toString());
httpClient.executeMethod(method); httpClient.executeMethod(method);
assertEquals(HttpStatus.SC_MULTI_STATUS, method.getStatusCode()); assertEquals(HttpStatus.SC_MULTI_STATUS, method.getStatusCode());
MultiStatus multiStatus = method.getResponseBodyAsMultiStatus(); MultiStatus multiStatus = method.getResponseBodyAsMultiStatus();
@ -150,14 +151,11 @@ public class TestCaldav extends AbstractDavMailTestCase {
Set<String> ITEM_PROPERTIES = new HashSet<String>(); Set<String> ITEM_PROPERTIES = new HashSet<String>();
ITEM_PROPERTIES.add("instancetype"); ITEM_PROPERTIES.add("instancetype");
List<ExchangeSession.Event> events = session.searchEvents("/users/" + session.getEmail() + "/calendar/", ITEM_PROPERTIES, List<ExchangeSession.Event> events = session.searchEvents("/users/" + session.getEmail() + "/calendar/",
session.and( session.and(
session.and( session.gt("dtstart", session.formatSearchDate(start)),
session.gt("dtstart", session.formatSearchDate(start)), session.lt("dtend", session.formatSearchDate(end))
session.lt("dtend", session.formatSearchDate(end)) )
)
, session.or(session.isEqualTo("instancetype", 1), session.isEqualTo("instancetype", 0))
)
); );
assertEquals(events.size(), responses.length); assertEquals(events.size(), responses.length);
@ -165,23 +163,23 @@ public class TestCaldav extends AbstractDavMailTestCase {
public void testCreateCalendar() throws IOException { public void testCreateCalendar() throws IOException {
String folderName = "test & accentué"; String folderName = "test & accentué";
String encodedFolderpath = URIUtil.encodePath("/users/" + session.getEmail() + "/calendar/"+folderName+ '/'); String encodedFolderpath = URIUtil.encodePath("/users/" + session.getEmail() + "/calendar/" + folderName + '/');
// first delete calendar // first delete calendar
session.deleteFolder("calendar/"+folderName); session.deleteFolder("calendar/" + folderName);
String body = String body =
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" + "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
" <C:mkcalendar xmlns:D=\"DAV:\"\n" + " <C:mkcalendar xmlns:D=\"DAV:\"\n" +
" xmlns:C=\"urn:ietf:params:xml:ns:caldav\">\n" + " xmlns:C=\"urn:ietf:params:xml:ns:caldav\">\n" +
" <D:set>\n" + " <D:set>\n" +
" <D:prop>\n" + " <D:prop>\n" +
" <D:displayname>"+ StringUtil.xmlEncode(folderName)+"</D:displayname>\n" + " <D:displayname>" + StringUtil.xmlEncode(folderName) + "</D:displayname>\n" +
" <C:calendar-description xml:lang=\"en\">Calendar description</C:calendar-description>\n" + " <C:calendar-description xml:lang=\"en\">Calendar description</C:calendar-description>\n" +
" <C:supported-calendar-component-set>\n" + " <C:supported-calendar-component-set>\n" +
" <C:comp name=\"VEVENT\"/>\n" + " <C:comp name=\"VEVENT\"/>\n" +
" </C:supported-calendar-component-set>\n" + " </C:supported-calendar-component-set>\n" +
" </D:prop>\n" + " </D:prop>\n" +
" </D:set>\n" + " </D:set>\n" +
" </C:mkcalendar>"; " </C:mkcalendar>";
SearchReportMethod method = new SearchReportMethod(encodedFolderpath, body) { SearchReportMethod method = new SearchReportMethod(encodedFolderpath, body) {
@Override @Override