/** * 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.mvc.sessionmngr; import java.util.Set; import javax.portlet.PortletRequest; import javax.portlet.WindowState; import org.jasig.portlet.blackboardvcportlet.dao.SessionDao; import org.jasig.portlet.blackboardvcportlet.data.ConferenceUser; import org.jasig.portlet.blackboardvcportlet.data.Multimedia; import org.jasig.portlet.blackboardvcportlet.data.Session; import org.jasig.portlet.blackboardvcportlet.data.SessionRecording; import org.jasig.portlet.blackboardvcportlet.data.SessionTelephony; import org.jasig.portlet.blackboardvcportlet.security.ConferenceUserService; import org.jasig.portlet.blackboardvcportlet.service.SessionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.portlet.bind.annotation.RenderMapping; import com.google.common.collect.ImmutableSortedSet; /** * Controller for handling Portlet view mode * * @author Richard Good */ @Controller @RequestMapping("VIEW") public class ViewSessionController { protected final Logger logger = LoggerFactory.getLogger(getClass()); private ConferenceUserService conferenceUserService; private SessionService sessionService; private SessionDao sessionDao; private String telephonyEnabled; @Autowired public void setSessionService(SessionService sessionService) { this.sessionService = sessionService; } @Value("${telephonyEnabled}") public void setTelephonyEnabled(String telephonyEnabled) { this.telephonyEnabled = telephonyEnabled; } @Autowired private ViewSessionListController viewController; @Autowired public void setConferenceUserService(ConferenceUserService conferenceUserService) { this.conferenceUserService = conferenceUserService; } @Autowired public void setSessionDao(SessionDao sessionDao) { this.sessionDao = sessionDao; } @RenderMapping(params = "action=viewSession") public String viewSession(PortletRequest request, @RequestParam long sessionId, ModelMap model, @RequestParam(required = false) String presentationUploadError) { if(WindowState.NORMAL.equals(request.getWindowState())) { return viewController.view(request, model, null, null); } final Session session = this.sessionService.getSession(sessionId); final Set<ConferenceUser> sessionChairs = this.sessionService.getSessionChairs(session); model.addAttribute("sessionChairs", ImmutableSortedSet.copyOf(ConferenceUserDisplayComparator.INSTANCE, sessionChairs)); final Set<ConferenceUser> sessionNonChairs = this.sessionService.getSessionNonChairs(session); model.addAttribute("sessionNonChairs", ImmutableSortedSet.copyOf(ConferenceUserDisplayComparator.INSTANCE, sessionNonChairs)); final Set<Multimedia> sessionMultimedias = this.sessionDao.getSessionMultimedias(session); model.addAttribute("multimedias", ImmutableSortedSet.copyOf(MultimediaDisplayComparator.INSTANCE, sessionMultimedias)); final Set<SessionRecording> sessionRecordings = this.sessionDao.getSessionRecordings(session); model.addAttribute("recordings", ImmutableSortedSet.copyOf(SessionRecordingDisplayComparator.INSTANCE, sessionRecordings)); final SessionTelephony sessionTelephony = this.sessionService.getSessionTelephony(session); model.addAttribute("sessionTelephony", sessionTelephony); final ConferenceUser conferenceUser = this.conferenceUserService.getCurrentConferenceUser(); sessionService.populateLaunchUrl(conferenceUser, session); model.addAttribute("session", session); model.addAttribute("telephonyEnabled",telephonyEnabled); if (presentationUploadError != null) { model.addAttribute("presentationUploadError", presentationUploadError); } return "viewSession"; } }