Skip to content
Snippets Groups Projects
Commit 7e61ce8f authored by srosse's avatar srosse
Browse files

OO-1944: check overlop of trainings for organizers, add organizer in the list...

OO-1944: check overlop of trainings for organizers, add organizer in the list of meetings, split between upcoming and past trainings for users...
parent eff8b303
No related branches found
No related tags found
No related merge requests found
Showing
with 230 additions and 17 deletions
...@@ -77,6 +77,16 @@ public interface GoToMeetingManager { ...@@ -77,6 +77,16 @@ public interface GoToMeetingManager {
*/ */
public boolean removeOrganizer(GoToOrganizer organizer); public boolean removeOrganizer(GoToOrganizer organizer);
/**
* Check if the organizer is available between the 2 specified dates.
*
* @param organizer
* @param start
* @param end
* @return
*/
public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end);
public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end, public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end,
RepositoryEntry resourceOwner, String subIdentifier, BusinessGroup businessGroup, GoToError error); RepositoryEntry resourceOwner, String subIdentifier, BusinessGroup businessGroup, GoToError error);
......
...@@ -22,6 +22,7 @@ package org.olat.modules.gotomeeting.manager; ...@@ -22,6 +22,7 @@ package org.olat.modules.gotomeeting.manager;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.persistence.TemporalType;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DB;
...@@ -143,6 +144,25 @@ public class GoToMeetingDAO { ...@@ -143,6 +144,25 @@ public class GoToMeetingDAO {
return query.getResultList(); return query.getResultList();
} }
public List<GoToMeeting> getMeetingsOverlapp(GoToType type, GoToOrganizer organizer, Date start, Date end) {
StringBuilder sb = new StringBuilder();
sb.append("select meeting from gotomeeting meeting")
.append(" inner join meeting.organizer organizer on organizer.key=:organizerKey")
.append(" where meeting.type=:type")
.append(" and ((meeting.startDate<:start and meeting.endDate>:start)")
.append(" or (meeting.startDate<:end and meeting.endDate>:end)")
.append(" or (meeting.startDate>:start and meeting.endDate<:end))");
List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), GoToMeeting.class)
.setParameter("organizerKey", organizer.getKey())
.setParameter("type", type.name())
.setParameter("start", start, TemporalType.TIMESTAMP)
.setParameter("end", end, TemporalType.TIMESTAMP)
.getResultList();
return meetings;
}
public GoToMeeting update(GoToMeeting meeting) { public GoToMeeting update(GoToMeeting meeting) {
((GoToMeetingImpl)meeting).setLastModified(new Date()); ((GoToMeetingImpl)meeting).setLastModified(new Date());
return dbInstance.getCurrentEntityManager().merge(meeting); return dbInstance.getCurrentEntityManager().merge(meeting);
......
...@@ -123,6 +123,11 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager { ...@@ -123,6 +123,11 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager {
} }
return false; return false;
} }
public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end) {
List<GoToMeeting> meetings = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
return meetings.isEmpty();
}
@Override @Override
public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end, public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end,
......
...@@ -28,6 +28,7 @@ package org.olat.modules.gotomeeting.model; ...@@ -28,6 +28,7 @@ package org.olat.modules.gotomeeting.model;
public enum GoToErrors { public enum GoToErrors {
Unkown(""), Unkown(""),
DuplicateRegistrant(""), DuplicateRegistrant(""),
OrganizerOverlap("error.organizer.overbooked"),
TrainingOver("error.code.TrainingOver"), TrainingOver("error.code.TrainingOver"),
InvalidRequest(""), InvalidRequest(""),
NoSuchTraining("error.code.NoSuchTraining"); NoSuchTraining("error.code.NoSuchTraining");
......
...@@ -134,14 +134,25 @@ public class GoToTrainingWebService { ...@@ -134,14 +134,25 @@ public class GoToTrainingWebService {
GoToMeeting meeting = null; GoToMeeting meeting = null;
GoToError error = new GoToError(); GoToError error = new GoToError();
if(training.getKey() == null) { if(training.getKey() == null) {
boolean organizerFound = false;
List<GoToOrganizer> organizers = meetingManager.getSystemOrganizers(); List<GoToOrganizer> organizers = meetingManager.getSystemOrganizers();
for(GoToOrganizer organizer:organizers) { for(GoToOrganizer organizer:organizers) {
meeting = meetingManager.scheduleTraining(organizer, training.getName(), training.getExternalId(), "-", boolean available = meetingManager.checkOrganizerAvailability(organizer, training.getStart(), training.getEnd());
training.getStart(), training.getEnd(), entry, subIdentifier, null, error); if(available) {
if(!error.hasError()) { meeting = meetingManager.scheduleTraining(organizer, training.getName(), training.getExternalId(), "-",
break; training.getStart(), training.getEnd(), entry, subIdentifier, null, error);
organizerFound = true;
if(!error.hasError()) {
break;
}
} else {
System.out.println("");
} }
} }
if(!organizerFound) {
error.setError(GoToErrors.OrganizerOverlap);
}
} else { } else {
meeting = meetingManager.getMeetingByExternalId(training.getExternalId()); meeting = meetingManager.getMeetingByExternalId(training.getExternalId());
if(meeting == null) { if(meeting == null) {
......
...@@ -160,6 +160,19 @@ public class EditTrainingController extends FormBasicController { ...@@ -160,6 +160,19 @@ public class EditTrainingController extends FormBasicController {
if(!organizersEl.isOneSelected()) { if(!organizersEl.isOneSelected()) {
organizersEl.setErrorKey("form.mandatory.hover", null); organizersEl.setErrorKey("form.mandatory.hover", null);
allOk &= false; allOk &= false;
} else {
Date start = startDateEl.getDate();
Date end = endDateEl.getDate();
String selectedKeyStr = organizersEl.getSelectedKey();
int selectedIndex = Integer.parseInt(selectedKeyStr);
GoToOrganizer organizer = availablesOrganizers.get(selectedIndex);
if(start != null && end != null && organizer != null) {
if(!meetingManager.checkOrganizerAvailability(organizer, start, end)) {
organizersEl.setErrorKey("error.organizer.overbooked", null);
allOk &= false;
}
}
} }
} }
......
...@@ -27,8 +27,10 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle ...@@ -27,8 +27,10 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate; import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate;
import org.olat.core.util.StringHelper;
import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroup;
import org.olat.modules.gotomeeting.GoToMeeting; import org.olat.modules.gotomeeting.GoToMeeting;
import org.olat.modules.gotomeeting.GoToOrganizer;
import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntry;
/** /**
...@@ -63,6 +65,23 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin ...@@ -63,6 +65,23 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin
case name: return meeting.getName(); case name: return meeting.getName();
case start: return meeting.getStartDate(); case start: return meeting.getStartDate();
case end: return meeting.getEndDate(); case end: return meeting.getEndDate();
case organizer: {
GoToOrganizer organizer = meeting.getOrganizer();
String name = "";
if(organizer != null) {
if(StringHelper.containsNonWhitespace(organizer.getName())) {
name = organizer.getName();
} else if(StringHelper.containsNonWhitespace(organizer.getLastName())) {
if(StringHelper.containsNonWhitespace(organizer.getFirstName())) {
name += organizer.getFirstName() + " ";
}
name += organizer.getLastName();
} else if(StringHelper.containsNonWhitespace(organizer.getUsername())) {
name = organizer.getUsername();
}
}
return name;
}
case resource: { case resource: {
RepositoryEntry entry = meeting.getEntry(); RepositoryEntry entry = meeting.getEntry();
if(entry != null) { if(entry != null) {
...@@ -89,6 +108,7 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin ...@@ -89,6 +108,7 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin
name("meeting.name"), name("meeting.name"),
start("meeting.start"), start("meeting.start"),
end("meeting.end"), end("meeting.end"),
organizer("meeting.organizer"),
resource("meeting.resource"); resource("meeting.resource");
private final String i18nHeaderKey; private final String i18nHeaderKey;
......
...@@ -80,6 +80,7 @@ public class GoToMeetingsAdminController extends FormBasicController { ...@@ -80,6 +80,7 @@ public class GoToMeetingsAdminController extends FormBasicController {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.organizer.i18nHeaderKey(), MeetingsCols.organizer.ordinal(), true, MeetingsCols.organizer.name()));
FlexiCellRenderer renderer = new StaticFlexiCellRenderer("resource", new TextFlexiCellRenderer()); FlexiCellRenderer renderer = new StaticFlexiCellRenderer("resource", new TextFlexiCellRenderer());
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(MeetingsCols.resource.i18nHeaderKey(), MeetingsCols.resource.ordinal(), "resource", columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(MeetingsCols.resource.i18nHeaderKey(), MeetingsCols.resource.ordinal(), "resource",
true, MeetingsCols.resource.name(), renderer)); true, MeetingsCols.resource.name(), renderer));
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
*/ */
package org.olat.modules.gotomeeting.ui; package org.olat.modules.gotomeeting.ui;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import org.olat.core.commons.persistence.SortKey; import org.olat.core.commons.persistence.SortKey;
...@@ -56,8 +58,8 @@ public class GoToMeetingsController extends FormBasicController { ...@@ -56,8 +58,8 @@ public class GoToMeetingsController extends FormBasicController {
private final RepositoryEntry entry; private final RepositoryEntry entry;
private final BusinessGroup businessGroup; private final BusinessGroup businessGroup;
private FlexiTableElement tableEl; private FlexiTableElement upcomingTableEl, pastTableEl;
private GoToMeetingTableModel tableModel; private GoToMeetingTableModel upcomingTableModel, pastTableModel;
@Autowired @Autowired
private GoToMeetingManager meetingMgr; private GoToMeetingManager meetingMgr;
...@@ -82,21 +84,48 @@ public class GoToMeetingsController extends FormBasicController { ...@@ -82,21 +84,48 @@ public class GoToMeetingsController extends FormBasicController {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("select", translate("select"), "select")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("select", translate("select"), "select"));
tableModel = new GoToMeetingTableModel(columnsModel); upcomingTableModel = new GoToMeetingTableModel(columnsModel);
tableEl = uifactory.addTableElement(getWindowControl(), "meetings", tableModel, getTranslator(), formLayout); upcomingTableEl = uifactory.addTableElement(getWindowControl(), "upcomingmeetings", upcomingTableModel, getTranslator(), formLayout);
tableEl.setEmtpyTableMessageKey("table.empty"); upcomingTableEl.setEmtpyTableMessageKey("table.empty");
FlexiTableSortOptions sortOptions = new FlexiTableSortOptions(); FlexiTableSortOptions sortOptions = new FlexiTableSortOptions();
sortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), false)); sortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), true));
tableEl.setSortSettings(sortOptions); upcomingTableEl.setSortSettings(sortOptions);
pastTableModel = new GoToMeetingTableModel(columnsModel);
pastTableEl = uifactory.addTableElement(getWindowControl(), "pastmeetings", pastTableModel, getTranslator(), formLayout);
FlexiTableSortOptions pastSortOptions = new FlexiTableSortOptions();
pastSortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), false));
pastTableEl.setSortSettings(sortOptions);
updateModel(); updateModel();
} }
protected void updateModel() { protected void updateModel() {
List<GoToMeeting> meetings = meetingMgr.getMeetings(GoToType.training, entry, subIdent, businessGroup); List<GoToMeeting> meetings = meetingMgr.getMeetings(GoToType.training, entry, subIdent, businessGroup);
tableModel.setObjects(meetings);
tableEl.reloadData(); List<GoToMeeting> upcomingMeetings = new ArrayList<>();
tableEl.reset(); List<GoToMeeting> pastMeetings = new ArrayList<>();
Date now = new Date();
for(GoToMeeting meeting:meetings) {
Date endDate = meeting.getEndDate();
if(now.after(endDate)) {
pastMeetings.add(meeting);
} else {
upcomingMeetings.add(meeting);
}
}
upcomingTableModel.setObjects(upcomingMeetings);
upcomingTableEl.reloadData();
upcomingTableEl.reset();
pastTableModel.setObjects(pastMeetings);
pastTableEl.reloadData();
pastTableEl.reset();
pastTableEl.setVisible(pastMeetings.size() > 0);
} }
@Override @Override
...@@ -106,11 +135,19 @@ public class GoToMeetingsController extends FormBasicController { ...@@ -106,11 +135,19 @@ public class GoToMeetingsController extends FormBasicController {
@Override @Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if(tableEl == source) { if(upcomingTableEl == source) {
if(event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent)event;
if("select".equals(se.getCommand())) {
GoToMeeting meeting = upcomingTableModel.getObject(se.getIndex());
fireEvent(ureq, new SelectGoToMeetingEvent(meeting));
}
}
} else if(pastTableEl == source) {
if(event instanceof SelectionEvent) { if(event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent)event; SelectionEvent se = (SelectionEvent)event;
if("select".equals(se.getCommand())) { if("select".equals(se.getCommand())) {
GoToMeeting meeting = tableModel.getObject(se.getIndex()); GoToMeeting meeting = pastTableModel.getObject(se.getIndex());
fireEvent(ureq, new SelectGoToMeetingEvent(meeting)); fireEvent(ureq, new SelectGoToMeetingEvent(meeting));
} }
} }
......
...@@ -95,6 +95,7 @@ public class GoToMeetingsEditController extends FormBasicController { ...@@ -95,6 +95,7 @@ public class GoToMeetingsEditController extends FormBasicController {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.organizer.i18nHeaderKey(), MeetingsCols.organizer.ordinal(), true, MeetingsCols.organizer.name()));
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit"));
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", translate("delete"), "delete")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", translate("delete"), "delete"));
......
$r.render("meetings") <h3>$r.translate("meetings.upcoming")</h3>
\ No newline at end of file $r.render("upcomingmeetings")
#if($r.visible("pastmeetings"))
<h3>$r.translate("meetings.past")</h3>
$r.render("pastmeetings")
#end
\ No newline at end of file
...@@ -11,6 +11,7 @@ enabled= ...@@ -11,6 +11,7 @@ enabled=
error.code.NoSuchTraining=Die Schulung konnte nicht gefunden werden. error.code.NoSuchTraining=Die Schulung konnte nicht gefunden werden.
error.code.TrainingOver=Schulung is abgeschlossen error.code.TrainingOver=Schulung is abgeschlossen
error.code.unkown=Eine unerwartete Fehler ist auf dem GoToTraining server passiert. error.code.unkown=Eine unerwartete Fehler ist auf dem GoToTraining server passiert.
error.organizer.overbooked=Der Organizer hat schon ein Termin in diesem Zeitraum.
error.start.after.end=Das Datum f\u00FCr das Ende der Schulung darf nicht vor dem Beginn Datum sein. error.start.after.end=Das Datum f\u00FCr das Ende der Schulung darf nicht vor dem Beginn Datum sein.
error.training.schedule.failed=Die Schulung konnte nicht geplant werden. error.training.schedule.failed=Die Schulung konnte nicht geplant werden.
goto.configuration=Konfiguration goto.configuration=Konfiguration
...@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training" ...@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training"
join=Join join=Join
meeting.end=End meeting.end=End
meeting.name=Name meeting.name=Name
meeting.organizer=Organizer
meeting.resource=Kurs meeting.resource=Kurs
meeting.start=Beginn meeting.start=Beginn
meetings.admin.title=Konfiguration meetings.admin.title=Konfiguration
meetings.title=Schulungen meetings.title=Schulungen
meetings.upcoming=Zukünftige Schulungen
meetings.past=Alte Schulungen
organizer.email=E-Mail organizer.email=E-Mail
organizer.firsName=Vorname organizer.firsName=Vorname
organizer.key=Organizer Key organizer.key=Organizer Key
......
...@@ -11,6 +11,7 @@ enabled= ...@@ -11,6 +11,7 @@ enabled=
error.code.NoSuchTraining=The training cannot be found. error.code.NoSuchTraining=The training cannot be found.
error.code.TrainingOver=Training is closed. error.code.TrainingOver=Training is closed.
error.code.unkown=An unexpected error happens on the GoToTraining server. error.code.unkown=An unexpected error happens on the GoToTraining server.
error.organizer.overbooked=The organizer has already a training planned in this period.
error.start.after.end=The end date of the meeting must not be before the start date. error.start.after.end=The end date of the meeting must not be before the start date.
error.training.schedule.failed=The training cannot be planned. error.training.schedule.failed=The training cannot be planned.
goto.configuration=Configuration goto.configuration=Configuration
...@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training" ...@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training"
join=Join join=Join
meeting.end=End meeting.end=End
meeting.name=Name meeting.name=Name
meeting.organizer=Organizer
meeting.resource=Ressource meeting.resource=Ressource
meeting.start=Start meeting.start=Start
meetings.admin.title=Configuration meetings.admin.title=Configuration
meetings.title=Trainings meetings.title=Trainings
meetings.upcoming=Upcoming meetings
meetings.past=Past meetings
organizer.email=E-Mail organizer.email=E-Mail
organizer.firsName=First name organizer.firsName=First name
organizer.key=Organizer key organizer.key=Organizer key
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
*/ */
package org.olat.modules.gotomeeting.manager; package org.olat.modules.gotomeeting.manager;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
...@@ -101,4 +102,84 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -101,4 +102,84 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Assert.assertEquals(1, meetings.size()); Assert.assertEquals(1, meetings.size());
Assert.assertTrue(meetings.contains(training)); Assert.assertTrue(meetings.contains(training));
} }
@Test
public void getMeetingsOverlapp() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
String username = UUID.randomUUID().toString();
String accessToken = UUID.randomUUID().toString();
String organizerKey = UUID.randomUUID().toString();
GoToOrganizer organizer = organizerDao
.createOrganizer(null, username, accessToken, organizerKey, "Michael", "Wolgemut", null, null, 10l, null);
Assert.assertNotNull(organizer);
Calendar cal = Calendar.getInstance();
cal.set(2016, 8, 12, 12, 0, 0);
Date start = cal.getTime();
cal.set(2016, 8, 12, 18, 0, 0);
Date end = cal.getTime();
String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
GoToMeeting training = meetingDao.createTraining("New training", null, "Very interessant", trainingKey, start, end,
organizer, entry, "d9914", null);
dbInstance.commit();
Assert.assertNotNull(training);
//check organizer availability (same date)
List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
Assert.assertNotNull(overlaps);
Assert.assertEquals(1, overlaps.size());
//check organizer availability (end overlap)
cal.set(2016, 8, 12, 10, 0, 0);
Date start_1 = cal.getTime();
cal.set(2016, 8, 12, 14, 0, 0);
Date end_1 = cal.getTime();
List<GoToMeeting> overlaps_1 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_1, end_1);
Assert.assertEquals(1, overlaps_1.size());
//check organizer availability (start overlap)
cal.set(2016, 8, 12, 14, 0, 0);
Date start_2 = cal.getTime();
cal.set(2016, 8, 12, 20, 0, 0);
Date end_2 = cal.getTime();
List<GoToMeeting> overlaps_2 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_2, end_2);
Assert.assertEquals(1, overlaps_2.size());
//check organizer availability (within)
cal.set(2016, 8, 12, 14, 0, 0);
Date start_3 = cal.getTime();
cal.set(2016, 8, 12, 15, 0, 0);
Date end_3 = cal.getTime();
List<GoToMeeting> overlaps_3 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_3, end_3);
Assert.assertNotNull(overlaps_3);
Assert.assertEquals(1, overlaps_3.size());
//check organizer availability (start before, end after)
cal.set(2016, 8, 12, 10, 0, 0);
Date start_4 = cal.getTime();
cal.set(2016, 8, 12, 22, 0, 0);
Date end_4 = cal.getTime();
List<GoToMeeting> overlaps_4 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_4, end_4);
Assert.assertNotNull(overlaps_4);
Assert.assertEquals(1, overlaps_4.size());
//check organizer availability (in past)
cal.set(2016, 8, 12, 9, 0, 0);
Date start_5 = cal.getTime();
cal.set(2016, 8, 12, 11, 0, 0);
Date end_5 = cal.getTime();
List<GoToMeeting> overlaps_5 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_5, end_5);
Assert.assertEquals(0, overlaps_5.size());
//check organizer availability (in future)
cal.set(2016, 8, 12, 20, 0, 0);
Date start_6= cal.getTime();
cal.set(2016, 8, 12, 21, 0, 0);
Date end_6 = cal.getTime();
List<GoToMeeting> overlaps_6 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_6, end_6);
Assert.assertEquals(0, overlaps_6.size());
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment