/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.chat.portlet.views;
import javax.portlet.PortletRequest;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.commons.lang.StringUtils;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoom;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomTwitter;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomVideo;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletConstants;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletRequestUtil;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatRoomView;
import br.gov.camara.edemocracia.portlets.chat.service.ChatRoomTwitterLocalServiceUtil;
import br.gov.camara.edemocracia.portlets.chat.service.ChatRoomVideoLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.model.User;
/**
* @author P_7339
*
*/
public abstract class AbstractView {
/**
* Processa uma visão
*
* @param request
* @param response
* @return A visão que deve ser renderizada. Caso não seja a mesma que levou
* à esta visão, deve-se chamar o método processView da classe
* correspondente à nova visão. Nunca retornar null!
*
* @throws PortalException
* @throws SystemException
*/
public final ChatRoomView process(RenderRequest request, RenderResponse response) throws PortalException, SystemException {
setPreviousPageLinkAtribute(request);
return processView(request, response);
}
protected abstract ChatRoomView processView(RenderRequest request, RenderResponse response) throws PortalException, SystemException;
/**
* Obtém a sala a partir do atributo da requsição
*
* @param request
* @return
*/
protected ChatRoom getRoom(RenderRequest request) {
return (ChatRoom) request.getAttribute(ChatPortletConstants.ROOM_ATTRIBUTE);
}
/**
* Adiciona mensagem de sala não encontrada e retorna a visão correta
*
* @param request
* @param user
* @return
*/
protected ChatRoomView addRoomNotFoundMessage(PortletRequest request, User user) {
SessionErrors.add(request, "room-cant-find");
if (user.isDefaultUser())
return ChatRoomView.ERROR;
else
return ChatRoomView.LIST;
}
protected ChatRoomTwitter getChatRoomTwitter(RenderRequest request) throws PortalException, SystemException {
ChatRoom room = (ChatRoom) request.getAttribute(ChatPortletConstants.ROOM_ATTRIBUTE);
ChatRoomTwitter chatRoomTwitter = ChatRoomTwitterLocalServiceUtil.getTwitter(room.getRoomId());
return chatRoomTwitter;
}
protected ChatRoomVideo getChatRoomVideoLive(RenderRequest request) throws PortalException, SystemException {
ChatRoom room = (ChatRoom) request.getAttribute(ChatPortletConstants.ROOM_ATTRIBUTE);
ChatRoomVideo chatRoomVideoLive = ChatRoomVideoLocalServiceUtil.getVideo(room.getVideoLiveId());
return chatRoomVideoLive;
}
protected ChatRoomVideo getChatRoomVideoRecorded(RenderRequest request) throws PortalException, SystemException {
ChatRoom room = (ChatRoom) request.getAttribute(ChatPortletConstants.ROOM_ATTRIBUTE);
ChatRoomVideo chatRoomVideoRecorded = ChatRoomVideoLocalServiceUtil.getVideo(room.getVideoRecordedId());
return chatRoomVideoRecorded;
}
private void setPreviousPageLinkAtribute(RenderRequest request) {
String previousPageLink = request.getParameter(ChatPortletConstants.PREVIOUS_PAGE_LINK);
if (StringUtils.isEmpty(previousPageLink)) {
return;
}
if (ChatPortletRequestUtil.isUrlToSameHost(request, previousPageLink)) {
request.setAttribute(ChatPortletConstants.PREVIOUS_PAGE_LINK, previousPageLink);
}
}
}