diff --git a/src/main/java/org/olat/commons/calendar/CalendarManager.java b/src/main/java/org/olat/commons/calendar/CalendarManager.java index e8a02e365a42d0b8037dd8eef749d4e9c8db52d7..01425badb4f4720d399727a3be648b3717c4dda5 100644 --- a/src/main/java/org/olat/commons/calendar/CalendarManager.java +++ b/src/main/java/org/olat/commons/calendar/CalendarManager.java @@ -266,6 +266,15 @@ public interface CalendarManager { * @return true if success */ public boolean addEventTo(Kalendar cal, KalendarEvent kalendarEvent); + + /** + * Add a list of events to a given calendar and save it. + * + * @param cal + * @param kalendarEvents + * @return + */ + public boolean addEventTo(Kalendar cal, List<KalendarEvent> kalendarEvents); /** * Remove an event from given calendar and save calendar. @@ -283,6 +292,15 @@ public interface CalendarManager { */ public boolean updateEventFrom(Kalendar cal, KalendarEvent kalendarEvent); + /** + * Update a list of events fron a given calendar and save it. + * + * @param cal + * @param kalendarEvent + * @return + */ + public boolean updateEventsFrom(Kalendar cal, List<KalendarEvent> kalendarEvents); + /** * Update an event of given calendar and save calendar. Use this method if the Kalendar is already in a doInSync. * @param cal diff --git a/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java b/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java index e675f7a9ab78d4f59ad37eb4e708d03eeb3296a3..c1bc899822387f506ba22c16da5621c799ae230a 100644 --- a/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java +++ b/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java @@ -38,6 +38,7 @@ import java.io.OutputStream; import java.net.URISyntaxException; import java.text.ParseException; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -900,12 +901,19 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea @Override public boolean addEventTo(final Kalendar cal, final KalendarEvent kalendarEvent) { + return addEventTo(cal, Collections.singletonList(kalendarEvent)); + } + + @Override + public boolean addEventTo(final Kalendar cal, final List<KalendarEvent> kalendarEvents) { OLATResourceable calOres = getOresHelperFor(cal); Boolean persistSuccessful = CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( calOres, new SyncerCallback<Boolean>() { @Override public Boolean execute() { Kalendar loadedCal = getCalendarFromCache(cal.getType(),cal.getCalendarID()); - loadedCal.addEvent(kalendarEvent); + for(KalendarEvent kalendarEvent:kalendarEvents) { + loadedCal.addEvent(kalendarEvent); + } boolean successfullyPersist = persistCalendar(loadedCal); return new Boolean(successfullyPersist); } @@ -913,7 +921,7 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea // inform all controller about calendar change for reload CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(new CalendarGUIModifiedEvent(cal), OresHelper.lookupType(CalendarManager.class)); return persistSuccessful.booleanValue(); - } + } /** * @see org.olat.commons.calendar.CalendarManager#removeEventFrom(org.olat.commons.calendar.model.Kalendar, org.olat.commons.calendar.model.KalendarEvent) @@ -949,8 +957,28 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea }); return updatedSuccessful.booleanValue(); } - - /** + + @Override + public boolean updateEventsFrom(Kalendar cal, List<KalendarEvent> kalendarEvents) { + final OLATResourceable calOres = getOresHelperFor(cal); + Boolean updatedSuccessful = CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( calOres, new SyncerCallback<Boolean>() { + @Override + public Boolean execute() { + Kalendar loadedCal = getCalendarFromCache(cal.getType(), cal.getCalendarID()); + for(KalendarEvent kalendarEvent:kalendarEvents) { + loadedCal.removeEvent(kalendarEvent); // remove old event + loadedCal.addEvent(kalendarEvent); // add changed event + } + boolean successfullyPersist = persistCalendar(loadedCal); + // inform all controller about calendar change for reload + CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(new CalendarGUIModifiedEvent(cal), OresHelper.lookupType(CalendarManager.class)); + return successfullyPersist; + } + }); + return updatedSuccessful.booleanValue(); + } + + /** * @see org.olat.commons.calendar.CalendarManager#updateEventFrom(org.olat.commons.calendar.model.Kalendar, org.olat.commons.calendar.model.KalendarEvent) */ @Override diff --git a/src/main/java/org/olat/commons/calendar/restapi/CalWebService.java b/src/main/java/org/olat/commons/calendar/restapi/CalWebService.java index 1cf0bddf98fc7b3c0ce257ab9d4614dc5f699764..e3256bf339cd73b56e06ffd94537ed648b908bb5 100644 --- a/src/main/java/org/olat/commons/calendar/restapi/CalWebService.java +++ b/src/main/java/org/olat/commons/calendar/restapi/CalWebService.java @@ -27,6 +27,7 @@ import static org.olat.restapi.security.RestSecurityHelper.getUserRequest; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.UUID; @@ -54,6 +55,12 @@ import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.util.StringHelper; +/** + * + * Initial date: 23.12.2015<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ public class CalWebService { private final KalendarRenderWrapper calendar; @@ -125,22 +132,48 @@ public class CalWebService { } @PUT - @Path("events") + @Path("event") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response putEventByCalendar(EventVO event, @Context HttpServletRequest httpRequest) { - return addEventByCalendar(event, httpRequest); + List<EventVO> events = Collections.singletonList(event); + return addEventsByCalendar(events, httpRequest); } - @POST + @PUT @Path("events") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + public Response putEventsByCalendar(EventVOes eventArray, @Context HttpServletRequest httpRequest) { + List<EventVO> events = new ArrayList<>(); + for(EventVO event:eventArray.getEvents()) { + events.add(event); + } + return addEventsByCalendar(events, httpRequest); + } + + @POST + @Path("event") + @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response postEventByCalendar(EventVO event, @Context HttpServletRequest httpRequest) { - return addEventByCalendar(event, httpRequest); + List<EventVO> events = Collections.singletonList(event); + return addEventsByCalendar(events, httpRequest); } - private Response addEventByCalendar(EventVO event, HttpServletRequest httpRequest) { + @POST + @Path("events") + @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) + public Response postEventsByCalendar(EventVOes eventArray, @Context HttpServletRequest httpRequest) { + List<EventVO> events = new ArrayList<>(); + for(EventVO event:eventArray.getEvents()) { + events.add(event); + } + return addEventsByCalendar(events, httpRequest); + } + + private Response addEventsByCalendar(List<EventVO> events, HttpServletRequest httpRequest) { UserRequest ureq = getUserRequest(httpRequest); if(!ureq.getUserSession().isAuthenticated()) { return Response.serverError().status(Status.UNAUTHORIZED).build(); @@ -152,28 +185,39 @@ public class CalWebService { return Response.serverError().status(Status.UNAUTHORIZED).build(); } - KalendarEvent kalEvent; + List<KalendarEvent> kalEventToAdd = new ArrayList<>(); + List<KalendarEvent> kalEventToUpdate = new ArrayList<>(); CalendarManager calendarManager = CoreSpringFactory.getImpl(CalendarManager.class); - if(!StringHelper.containsNonWhitespace(event.getId())) { - String id = UUID.randomUUID().toString(); - kalEvent = new KalendarEvent(id, event.getSubject(), event.getBegin(), event.getEnd()); - transfer(event, kalEvent); - calendarManager.addEventTo(calendar.getKalendar(), kalEvent); - } else { - kalEvent = calendar.getKalendar().getEvent(event.getId()); - if(kalEvent == null) { - kalEvent = new KalendarEvent(event.getId(), event.getSubject(), event.getBegin(), event.getEnd()); + + for(EventVO event:events) { + KalendarEvent kalEvent; + if(!StringHelper.containsNonWhitespace(event.getId())) { + String id = UUID.randomUUID().toString(); + kalEvent = new KalendarEvent(id, event.getSubject(), event.getBegin(), event.getEnd()); transfer(event, kalEvent); - calendarManager.addEventTo(calendar.getKalendar(), kalEvent); + kalEventToAdd.add(kalEvent); } else { - kalEvent.setBegin(event.getBegin()); - kalEvent.setEnd(event.getEnd()); - kalEvent.setSubject(event.getSubject()); - transfer(event, kalEvent); + kalEvent = calendar.getKalendar().getEvent(event.getId()); + if(kalEvent == null) { + kalEvent = new KalendarEvent(event.getId(), event.getSubject(), event.getBegin(), event.getEnd()); + transfer(event, kalEvent); + kalEventToAdd.add(kalEvent); + } else { + kalEvent.setBegin(event.getBegin()); + kalEvent.setEnd(event.getEnd()); + kalEvent.setSubject(event.getSubject()); + transfer(event, kalEvent); + kalEventToUpdate.add(kalEvent); + } } } - - EventVO vo = new EventVO(kalEvent); - return Response.ok(vo).build(); + + if(kalEventToAdd.size() > 0) { + calendarManager.addEventTo(calendar.getKalendar(), kalEventToAdd); + } + if(kalEventToUpdate.size() > 0) { + calendarManager.updateEventsFrom(calendar.getKalendar(), kalEventToUpdate); + } + return Response.ok().build(); } } diff --git a/src/main/java/org/olat/course/nodes/members/MembersMailController.java b/src/main/java/org/olat/course/nodes/members/MembersMailController.java index f1e261148e8c7fc2c9a3c9f916baa5d5526d8772..0e1f2eb084bca86152711cd294ae951448a97ee1 100644 --- a/src/main/java/org/olat/course/nodes/members/MembersMailController.java +++ b/src/main/java/org/olat/course/nodes/members/MembersMailController.java @@ -351,13 +351,18 @@ public class MembersMailController extends FormBasicController { if(participantEl != null && participantEl.isAtLeastSelected(1)) { participants = null; } - selectMemberCtrl = new SelectMembersController(ureq, getWindowControl(), owners, coaches, participants); - listenTo(selectMemberCtrl); - String title = translate("select.members"); - cmc = new CloseableModalController(getWindowControl(), translate("close"), selectMemberCtrl.getInitialComponent(), true, title); - listenTo(cmc); - cmc.activate(); + if(owners == null || coaches == null && participants == null) { + showWarning("already.all.selected"); + } else { + selectMemberCtrl = new SelectMembersController(ureq, getWindowControl(), selectedMembers, owners, coaches, participants); + listenTo(selectMemberCtrl); + + String title = translate("select.members"); + cmc = new CloseableModalController(getWindowControl(), translate("close"), selectMemberCtrl.getInitialComponent(), true, title); + listenTo(cmc); + cmc.activate(); + } } private void doDeleteAttachment(Attachment attachment) { diff --git a/src/main/java/org/olat/course/nodes/members/SelectMembersController.java b/src/main/java/org/olat/course/nodes/members/SelectMembersController.java index 79b89c1a2020c9a4fa08e02aa2641041cc601ce5..055d59dfe77cae1f7c8c1b9beba091094a035776 100644 --- a/src/main/java/org/olat/course/nodes/members/SelectMembersController.java +++ b/src/main/java/org/olat/course/nodes/members/SelectMembersController.java @@ -41,16 +41,17 @@ import org.olat.core.gui.control.WindowControl; public class SelectMembersController extends FormBasicController { private MultipleSelectionElement ownerEl, coachEl, participantEl; - private final List<Member> ownerList, coachList, participantList; + private final List<Member> ownerList, coachList, participantList, preSelectedMembers; private List<Member> selectedMembers = new ArrayList<>(); - public SelectMembersController(UserRequest ureq, WindowControl wControl, + public SelectMembersController(UserRequest ureq, WindowControl wControl, List<Member> preSelectedMembers, List<Member> ownerList, List<Member> coachList, List<Member> participantList) { super(ureq, wControl, LAYOUT_VERTICAL); this.ownerList = ownerList; this.coachList = coachList; this.participantList = participantList; + this.preSelectedMembers = preSelectedMembers; initForm(ureq); } @@ -81,11 +82,22 @@ public class SelectMembersController extends FormBasicController { private MultipleSelectionElement makeSelection(String name, List<Member> members, FormItemContainer formLayout) { String[] keys = new String[members.size()]; String[] values = new String[members.size()]; + + List<String> preSelectedOptions = new ArrayList<>(); for(int i=members.size(); i-->0; ) { - keys[i] = members.get(i).getKey().toString(); - values[i] = members.get(i).getFullName(); + Member member = members.get(i); + String optionKey = member.getKey().toString(); + keys[i] = optionKey; + values[i] = member.getFullName(); + if(preSelectedMembers.contains(member)) { + preSelectedOptions.add(optionKey); + } + } + MultipleSelectionElement selectionEl = uifactory.addCheckboxesVertical(name, name, formLayout, keys, values, 2); + for(String preSelectedOption:preSelectedOptions) { + selectionEl.select(preSelectedOption, true); } - return uifactory.addCheckboxesVertical(name, name, formLayout, keys, values, 2); + return selectionEl; } @Override diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties index 9ef7d7b957af111b83ecd0de2ceb25ed24bba369..7a980d60111b5d876a56434ebc2a70fbd3007697 100644 --- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties @@ -1,5 +1,6 @@ #Mon Mar 02 09:54:04 CET 2009 add.member=Hinzufügen +already.all.selected=Sie haben schon alle Benutzer ausgewählt. contact.attachment=$org.olat.modules.co\:contact.attachment contact.attachment.maxsize=$org.olat.modules.co\:contact.attachment.maxsize coaches.to=Betreuer von Kurs "{0}" diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties index b4326b6ed10d6ea5d8ef52ff2c95b616c5024bcf..9571ad0ca210c7ae324583fbeba485318ffb19eb 100644 --- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties @@ -1,5 +1,6 @@ #Mon May 16 17:20:06 CEST 2011 add.member=Add +already.all.selected=You already choose all users. contact.attachment=$org.olat.modules.co\:contact.attachment contact.attachment.maxsize=$org.olat.modules.co\:contact.attachment.maxsize coaches.to=coaches of course "{0}" diff --git a/src/test/java/org/olat/restapi/CalendarTest.java b/src/test/java/org/olat/restapi/CalendarTest.java index 7254a87acaa61f0e4a2d50992d73f7933e8ba2cf..7198f633e7e603d836c66ab8929e18171c9fbafa 100644 --- a/src/test/java/org/olat/restapi/CalendarTest.java +++ b/src/test/java/org/olat/restapi/CalendarTest.java @@ -373,7 +373,7 @@ public class CalendarTest extends OlatJerseyTestCase { } @Test - public void testPutCalendarEvents() throws IOException, URISyntaxException { + public void putCalendarEvent() throws IOException, URISyntaxException { RestConnection conn = new RestConnection(); assertTrue(conn.login(id2.getName(), "A6B7C8")); @@ -397,7 +397,7 @@ public class CalendarTest extends OlatJerseyTestCase { event.setSubject(subject); URI eventUri = UriBuilder.fromUri(getContextURI()).path("users").path(id2.getKey().toString()) - .path("calendars").path(calendar.getId()).path("events").build(); + .path("calendars").path(calendar.getId()).path("event").build(); HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); conn.addJsonEntity(putEventMethod, event); HttpResponse putEventResponse = conn.execute(putEventMethod); @@ -420,7 +420,7 @@ public class CalendarTest extends OlatJerseyTestCase { } @Test - public void testPutCalendarEvents_notAuthorized() throws IOException, URISyntaxException { + public void putCalendarEvents_notAuthorized() throws IOException, URISyntaxException { RestConnection conn = new RestConnection(); assertTrue(conn.login(id2.getName(), "A6B7C8")); @@ -443,7 +443,7 @@ public class CalendarTest extends OlatJerseyTestCase { event.setSubject(subject); URI eventUri = UriBuilder.fromUri(getContextURI()).path("users").path(id2.getKey().toString()) - .path("calendars").path(calendarCourse_1.getId()).path("events").build(); + .path("calendars").path(calendarCourse_1.getId()).path("event").build(); HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); conn.addJsonEntity(putEventMethod, event); HttpResponse putEventResponse = conn.execute(putEventMethod); @@ -477,15 +477,12 @@ public class CalendarTest extends OlatJerseyTestCase { event.setSubject(subject); URI eventUri = UriBuilder.fromUri(getContextURI()).path("users").path(id2.getKey().toString()) - .path("calendars").path(calendar.getId()).path("events").build(); + .path("calendars").path(calendar.getId()).path("event").build(); HttpPost postEventMethod = conn.createPost(eventUri, MediaType.APPLICATION_JSON); conn.addJsonEntity(postEventMethod, event); HttpResponse postEventResponse = conn.execute(postEventMethod); assertEquals(200, postEventResponse.getStatusLine().getStatusCode()); - - EventVO newEvent = conn.parse(postEventResponse, EventVO.class); - Assert.assertNotNull(newEvent); - + //check if the event is saved KalendarRenderWrapper calendarWrapper = calendarManager.getCourseCalendar(course2); Collection<KalendarEvent> savedEvents = calendarWrapper.getKalendar().getEvents(); @@ -525,7 +522,7 @@ public class CalendarTest extends OlatJerseyTestCase { event.setSubject(subject); URI eventUri = UriBuilder.fromUri(getContextURI()).path("users").path(id2.getKey().toString()) - .path("calendars").path(calendar.getId()).path("events").build(); + .path("calendars").path(calendar.getId()).path("event").build(); HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); conn.addJsonEntity(putEventMethod, event); HttpResponse putEventResponse = conn.execute(putEventMethod); diff --git a/src/test/java/org/olat/restapi/CourseCalendarTest.java b/src/test/java/org/olat/restapi/CourseCalendarTest.java index 9b821e52c7d2d6b0ab987f5adfe398ed0c7b444a..2d940912cd71b9e953652532e6b59c8f8ae74863 100644 --- a/src/test/java/org/olat/restapi/CourseCalendarTest.java +++ b/src/test/java/org/olat/restapi/CourseCalendarTest.java @@ -54,9 +54,11 @@ import org.codehaus.jackson.type.TypeReference; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.olat.basesecurity.BaseSecurityManager; import org.olat.commons.calendar.CalendarManager; import org.olat.commons.calendar.model.KalendarEvent; import org.olat.commons.calendar.restapi.EventVO; +import org.olat.commons.calendar.restapi.EventVOes; import org.olat.commons.calendar.ui.components.KalendarRenderWrapper; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DB; @@ -125,7 +127,7 @@ public class CourseCalendarTest extends OlatJerseyTestCase { } @Test - public void testGetCalendarEvents() + public void getCalendarEvents() throws IOException, URISyntaxException { RestConnection conn = new RestConnection(); assertTrue(conn.login(auth1.getName(), "A6B7C8")); @@ -143,7 +145,7 @@ public class CourseCalendarTest extends OlatJerseyTestCase { } @Test - public void testPutCalendarEvent() throws IOException, URISyntaxException { + public void putCalendarEvent() throws IOException, URISyntaxException { RestConnection conn = new RestConnection(); assertTrue(conn.login(auth1.getName(), "A6B7C8")); @@ -157,7 +159,7 @@ public class CourseCalendarTest extends OlatJerseyTestCase { event.setSubject(subject); URI eventUri = UriBuilder.fromUri(getContextURI()).path("repo").path("courses") - .path(course1.getResourceableId().toString()).path("calendar").path("events").build(); + .path(course1.getResourceableId().toString()).path("calendar").path("event").build(); HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); conn.addJsonEntity(putEventMethod, event); HttpResponse putEventResponse = conn.execute(putEventMethod); @@ -180,7 +182,67 @@ public class CourseCalendarTest extends OlatJerseyTestCase { } @Test - public void testDeleteCalendarEvent() throws IOException, URISyntaxException { + public void putCalendarEvents() throws IOException, URISyntaxException { + RestConnection conn = new RestConnection(); + Identity admin = BaseSecurityManager.getInstance().findIdentityByName("administrator"); + + Assert.assertTrue(conn.login("administrator", "openolat")); + CourseConfigVO config = new CourseConfigVO(); + config.setCalendar(Boolean.TRUE); + ICourse course = CoursesWebService.createEmptyCourse(admin, "Course with calendar", "Course with calendar", config); + dbInstance.commitAndCloseSession(); + + //create an event + EventVO event1 = new EventVO(); + Calendar cal = Calendar.getInstance(); + event1.setBegin(cal.getTime()); + cal.add(Calendar.HOUR_OF_DAY, 1); + event1.setEnd(cal.getTime()); + String subject1 = UUID.randomUUID().toString(); + event1.setSubject(subject1); + + EventVO event2 = new EventVO(); + event2.setBegin(cal.getTime()); + cal.add(Calendar.HOUR_OF_DAY, 1); + event2.setEnd(cal.getTime()); + String subject2 = UUID.randomUUID().toString(); + event2.setSubject(subject2); + + EventVO[] newEvents = new EventVO[2]; + newEvents[0] = event1; + newEvents[1] = event2; + EventVOes newEventVOes = new EventVOes(); + newEventVOes.setEvents(newEvents); + + URI eventUri = UriBuilder.fromUri(getContextURI()).path("repo").path("courses") + .path(course.getResourceableId().toString()).path("calendar").path("events").build(); + HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); + conn.addJsonEntity(putEventMethod, newEventVOes); + HttpResponse putEventResponse = conn.execute(putEventMethod); + assertEquals(200, putEventResponse.getStatusLine().getStatusCode()); + EntityUtils.consume(putEventResponse.getEntity()); + + //check if the event is saved + KalendarRenderWrapper calendarWrapper = calendarManager.getCourseCalendar(course); + Collection<KalendarEvent> savedEvents = calendarWrapper.getKalendar().getEvents(); + + boolean found1 = false; + boolean found2 = false; + for(KalendarEvent savedEvent:savedEvents) { + if(subject1.equals(savedEvent.getSubject())) { + found1 = true; + } else if(subject2.equals(savedEvent.getSubject())) { + found2 = true; + } + } + Assert.assertTrue(found1); + Assert.assertTrue(found2); + + conn.shutdown(); + } + + @Test + public void deleteCalendarEvent() throws IOException, URISyntaxException { RestConnection conn = new RestConnection(); assertTrue(conn.login(auth1.getName(), "A6B7C8"));