/**
* 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;
import java.net.MalformedURLException;
import java.net.URL;
import javax.portlet.PortletRequest;
import br.gov.camara.edemocracia.portlets.chat.NoSuchChatRoomException;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoom;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomUser;
import br.gov.camara.edemocracia.portlets.chat.service.ChatRoomServiceUtil;
import br.gov.camara.edemocracia.portlets.chat.service.ChatRoomUserLocalServiceUtil;
import br.gov.camara.edemocracia.portlets.chat.service.UserActivityId;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;
/**
* @author P_7339
*
*/
public class ChatPortletRequestUtil {
public static long getScopeGroupIdFromRequest(PortletRequest request) {
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
return themeDisplay.getScopeGroupId();
}
public static User getUserFromRequest(PortletRequest request) {
ThemeDisplay td = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
return td.getUser();
}
public static ChatRoom getChatRoomFromRequest(PortletRequest req) throws PortalException, SystemException {
long roomId = ParamUtil.get(req, ChatPortletConstants.ROOM_ID_PARAM, -1);
if (roomId == -1)
return null;
try {
ChatRoom room = ChatRoomServiceUtil.getRoom(roomId);
if (room.getGroupId() != getScopeGroupIdFromRequest(req))
return null;
return room;
} catch (NoSuchChatRoomException e) {
return null;
}
}
/**
* Obtém o usuário da sala atual
* Retorna null se não encontrar ou se o usuário atual estiver espiando
*
* @param req
* @param chatRoomId
* @return
* @throws PortalException
* @throws SystemException
*/
public static ChatRoomUser getChatRoomUser(PortletRequest req, Long chatRoomId) throws PortalException, SystemException {
ChatRoomUser chatRoomUser = null;
UserActivityId userActivityId = ChatPortletSessionUtil.getUserActivityIdInRoom(req, chatRoomId);
if (userActivityId != null && userActivityId.isPersistentUser()) {
chatRoomUser = ChatRoomUserLocalServiceUtil.fetchChatRoomUser(userActivityId.getChatUserId());
}
return chatRoomUser;
}
public static boolean isUrlToSameHost(PortletRequest request, String pageLink) {
URL url;
try {
url = new URL(pageLink);
} catch (MalformedURLException e) {
return false;
}
String host = url.getHost();
String serverName = request.getServerName();
if (serverName.equalsIgnoreCase(host)) {
return true;
}
return false;
}
}