/** * Licensed to Apereo under one or more contributor license * agreements. See the NOTICE file distributed with this work * for additional information regarding copyright ownership. * Apereo licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a * copy of the License at the following location: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jasig.portlet.blackboardvcportlet.service; import org.jasig.portlet.blackboardvcportlet.data.RecordingMode; import org.jasig.portlet.blackboardvcportlet.data.ServerConfiguration; import org.jasig.portlet.blackboardvcportlet.data.Session; import org.jasig.portlet.blackboardvcportlet.validations.annotations.*; import org.joda.time.DateMidnight; import org.joda.time.DateTime; import org.joda.time.LocalTime; import javax.validation.constraints.Future; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.io.Serializable; /** * form backing object for creating/editing sessions */ @SessionStartIsBeforeEndTimeCheck @SessionEndTimeRangeCheck public class SessionForm implements Serializable { private static final long serialVersionUID = 1L; private boolean newSession; private boolean needToSendInitialEmail; private long sessionId; @SessionNameCheck() private String sessionName; @NotNull private int boundaryTime; private int maxTalkers; private int maxCameras; private boolean mustBeSupervised; private boolean permissionsOn; private boolean raiseHandOnEnter; private RecordingMode recordingMode; private boolean hideParticipantNames; private boolean allowInSessionInvites; private DateMidnight startDate; private LocalTime startHourMinute; private LocalTime endHourMinute; @Min(0) @Max(23) private int startHour; @QuarterHourCheck private int startMinute; private DateMidnight endDate; @Min(0) @Max(23) private int endHour; @QuarterHourCheck private int endMinute; public SessionForm() { } public SessionForm(ServerConfiguration serverConfiguration) { this.newSession = true; this.needToSendInitialEmail = true; final DateTime startTime = DateTime.now().plusHours(1).hourOfDay().roundFloorCopy(); this.setStartTime(startTime); this.setEndTime(startTime.plusHours(1)); this.boundaryTime = serverConfiguration.getBoundaryTime(); this.maxCameras = serverConfiguration.getMaxAvailableCameras(); this.maxTalkers = serverConfiguration.getMaxAvailableTalkers(); this.raiseHandOnEnter = serverConfiguration.isRaiseHandOnEnter(); } public SessionForm(Session session) { this.newSession = false; this.needToSendInitialEmail = false; this.sessionId = session.getSessionId(); this.sessionName = session.getSessionName(); this.setStartTime(session.getStartTime()); this.setEndTime(session.getEndTime()); this.boundaryTime = session.getBoundaryTime(); this.maxTalkers = session.getMaxTalkers(); this.maxCameras = session.getMaxCameras(); this.mustBeSupervised = session.isMustBeSupervised(); this.permissionsOn = session.isPermissionsOn(); this.raiseHandOnEnter = session.isRaiseHandOnEnter(); this.recordingMode = session.getRecordingMode(); this.hideParticipantNames = session.isHideParticipantNames(); this.allowInSessionInvites = session.isAllowInSessionInvites(); } public boolean isNeedToSendInitialEmail() { return needToSendInitialEmail; } public void setNeedToSendInitialEmail(boolean needToSendInitialEmail) { this.needToSendInitialEmail = needToSendInitialEmail; } public boolean isNewSession() { return newSession; } public void setNewSession(boolean newSession) { this.newSession = newSession; } public long getSessionId() { return sessionId; } public void setSessionId(long sessionId) { this.sessionId = sessionId; } public String getSessionName() { return sessionName; } public void setSessionName(String sessionName) { this.sessionName = sessionName; } @Future @FutureWithYearLimit() public DateTime getStartTime() { return startDate.toDateTime().withHourOfDay(startHourMinute.getHourOfDay()).withMinuteOfHour(startHourMinute.getMinuteOfHour()); } public void setStartTime(DateTime startTime) { startDate = startTime.toDateMidnight(); startHour = startTime.getHourOfDay(); startMinute = startTime.getMinuteOfHour(); startHourMinute = new LocalTime(startTime); } @Future public DateTime getEndTime() { return endDate.toDateTime().withHourOfDay(endHourMinute.getHourOfDay()).withMinuteOfHour(endHourMinute.getMinuteOfHour()); } public void setEndTime(DateTime endTime) { endDate = endTime.toDateMidnight(); endHour = endTime.getHourOfDay(); endMinute = endTime.getMinuteOfHour(); endHourMinute = new LocalTime(endTime); } public int getBoundaryTime() { return boundaryTime; } public void setBoundaryTime(int boundaryTime) { this.boundaryTime = boundaryTime; } public int getMaxTalkers() { return maxTalkers; } public void setMaxTalkers(int maxTalkers) { this.maxTalkers = maxTalkers; } public int getMaxCameras() { return maxCameras; } public void setMaxCameras(int maxCameras) { this.maxCameras = maxCameras; } public boolean isMustBeSupervised() { return mustBeSupervised; } public void setMustBeSupervised(boolean mustBeSupervised) { this.mustBeSupervised = mustBeSupervised; } public boolean isPermissionsOn() { return permissionsOn; } public void setPermissionsOn(boolean permissionsOn) { this.permissionsOn = permissionsOn; } public boolean isRaiseHandOnEnter() { return raiseHandOnEnter; } public void setRaiseHandOnEnter(boolean raiseHandOnEnter) { this.raiseHandOnEnter = raiseHandOnEnter; } public RecordingMode getRecordingMode() { return recordingMode; } public void setRecordingMode(RecordingMode recordingMode) { this.recordingMode = recordingMode; } public boolean isHideParticipantNames() { return hideParticipantNames; } public void setHideParticipantNames(boolean hideParticipantNames) { this.hideParticipantNames = hideParticipantNames; } public boolean isAllowInSessionInvites() { return allowInSessionInvites; } public void setAllowInSessionInvites(boolean allowInSessionInvites) { this.allowInSessionInvites = allowInSessionInvites; } public DateMidnight getStartDate() { return startDate; } public void setStartDate(DateMidnight startDate) { this.startDate = startDate; } public int getStartHour() { return startHour; } public void setStartHour(int startHour) { this.startHour = startHour; } public int getStartMinute() { return startMinute; } public void setStartMinute(int startMinute) { this.startMinute = startMinute; } public DateMidnight getEndDate() { return endDate; } public void setEndDate(DateMidnight endDate) { this.endDate = endDate; } public int getEndHour() { return endHour; } public void setEndHour(int endHour) { this.endHour = endHour; } public int getEndMinute() { return endMinute; } public void setEndMinute(int endMinute) { this.endMinute = endMinute; } public void setStartHourMinute(LocalTime startHourMinute) { this.startHourMinute = startHourMinute; } public LocalTime getStartHourMinute() { return startHourMinute; } public void setEndHourMinute(LocalTime endHourMinute) { this.endHourMinute = endHourMinute; } public LocalTime getEndHourMinute() { return endHourMinute; } @Override public String toString() { return "FullSessionForm [newSession=" + newSession + ", sessionId=" + sessionId + ", sessionName=" + sessionName + ", startTime=" + this.getStartTime() + ", endTime=" + this.getEndTime() + ", boundaryTime=" + boundaryTime + ", maxTalkers=" + maxTalkers + ", maxCameras=" + maxCameras + ", mustBeSupervised=" + mustBeSupervised + ", permissionsOn=" + permissionsOn + ", raiseHandOnEnter=" + raiseHandOnEnter + ", recordingMode=" + recordingMode + ", hideParticipantNames=" + hideParticipantNames + ", allowInSessionInvites=" + allowInSessionInvites + "]"; } }