From 368a8e0eb36bdb26d4392fcdfcc2ad8844009fc4 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 19 Jul 2012 15:20:18 +0200 Subject: [PATCH] OMA-78: add method to delete calendar events --- .../calendar/restapi/CalendarWebService.java | 38 +++++++++++++++++++ .../java/org/olat/restapi/CalendarTest.java | 29 ++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/src/main/java/org/olat/commons/calendar/restapi/CalendarWebService.java b/src/main/java/org/olat/commons/calendar/restapi/CalendarWebService.java index fc831c44fa6..6d0d8fb3f92 100644 --- a/src/main/java/org/olat/commons/calendar/restapi/CalendarWebService.java +++ b/src/main/java/org/olat/commons/calendar/restapi/CalendarWebService.java @@ -29,6 +29,7 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; @@ -137,6 +138,43 @@ public class CalendarWebService { return Response.ok(voes).build(); } + @DELETE + @Path("{calendarId}/events/{eventId}") + @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + @Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + public Response deleteEventByCalendar(@PathParam("calendarId") String calendarId, + @PathParam("eventId") String eventId, @PathParam("identityKey") Long identityKey, + @Context HttpServletRequest httpRequest) { + + UserRequest ureq = getUserRequest(httpRequest); + if(!ureq.getUserSession().isAuthenticated()) { + return Response.serverError().status(Status.UNAUTHORIZED).build(); + } else if (ureq.getIdentity() == null || !ureq.getIdentity().getKey().equals(identityKey)) { + return Response.serverError().status(Status.UNAUTHORIZED).build(); + } + + KalendarRenderWrapper calendar = getCalendar(ureq, calendarId); + if(calendar == null) { + return Response.serverError().status(Status.NOT_FOUND).build(); + } else if(!hasWriteAccess(calendar)) { + return Response.serverError().status(Status.UNAUTHORIZED).build(); + } + + CalendarManager calendarManager = CalendarManagerFactory.getInstance().getCalendarManager(); + if(eventId == null) { + return Response.ok().status(Status.NOT_FOUND).build(); + } else { + KalendarEvent kalEvent = calendar.getKalendar().getEvent(eventId); + if(kalEvent == null) { + return Response.ok().status(Status.NOT_FOUND).build(); + } else { + calendarManager.removeEventFrom(calendar.getKalendar(), kalEvent); + } + } + + return Response.ok().build(); + } + @PUT @Path("{calendarId}/events") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) diff --git a/src/test/java/org/olat/restapi/CalendarTest.java b/src/test/java/org/olat/restapi/CalendarTest.java index 6e35401aaee..3f565378a34 100644 --- a/src/test/java/org/olat/restapi/CalendarTest.java +++ b/src/test/java/org/olat/restapi/CalendarTest.java @@ -37,6 +37,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; @@ -395,6 +396,34 @@ public class CalendarTest extends OlatJerseyTestCase { conn.shutdown(); } + @Test + public void testDeletePersonalCalendarEvents() throws IOException, URISyntaxException { + RestConnection conn = new RestConnection(); + assertTrue(conn.login(id2.getName(), "A6B7C8")); + + //check if the event is saved + CalendarManager calendarManager = CalendarManagerFactory.getInstance().getCalendarManager(); + KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(id2); + KalendarEvent kalEvent = new KalendarEvent(UUID.randomUUID().toString(), "Rendez-vous", new Date(), new Date()); + calendarManager.addEventTo(calendarWrapper.getKalendar(), kalEvent); + + URI eventUri = UriBuilder.fromUri(getContextURI()).path("users").path(id2.getKey().toString()) + .path("calendars").path("user_" + calendarWrapper.getKalendar().getCalendarID()) + .path("events").path(kalEvent.getID()).build(); + HttpDelete delEventMethod = conn.createDelete(eventUri, MediaType.APPLICATION_JSON, true); + HttpResponse delEventResponse = conn.execute(delEventMethod); + assertEquals(200, delEventResponse.getStatusLine().getStatusCode()); + EntityUtils.consume(delEventResponse.getEntity()); + + conn.shutdown(); + + //check if the event is saved + Collection<KalendarEvent> savedEvents = calendarWrapper.getKalendar().getEvents(); + for(KalendarEvent savedEvent:savedEvents) { + Assert.assertFalse(savedEvent.getID().equals(kalEvent.getID())); + } + } + protected CalendarVO getCourseCalendar(List<CalendarVO> vos) { for(CalendarVO vo:vos) { if(vo.getId().startsWith("course")) { -- GitLab