/** * 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.lang.reflect.Constructor; import br.gov.camara.edemocracia.portlets.chat.portlet.views.AbstractView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.AnonView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.ChatView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.DetailsView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.ErrorView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.HelpVideoWmvView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.HistoryView; import br.gov.camara.edemocracia.portlets.chat.portlet.views.ListView; /** * Representa uma tela (jsp) do portlet, juntamente com o parâmetro usado na url * para mostrá-la e a classe java que processa sua requisição * * No caso de alterações do atributo "urlParamValue", verificar se o arquivo * cd-chat-friendly-url-routes.xml precisa ser alterado. * * @author Victor Bortone */ public enum ChatRoomView { LIST("list", "/html/room/listview.jsp", ListView.class), VIEW("view", "/html/room/view.jsp", ChatView.class), MODERATE("moderator", "/html/room/moderatorview.jsp", ChatView.class), HISTORY("history", "/html/room/history.jsp", HistoryView.class), ANON("anon", "/html/room/anon.jsp", AnonView.class), ERROR("error", "/html/room/error.jsp", ErrorView.class), HELP("help", "/html/room/helpvideowmv.jsp", HelpVideoWmvView.class), DETAILS("details", "/html/room/detailsroom.jsp", DetailsView.class); public static ChatRoomView fromUrlParamValue(String urlParamValue) { for (ChatRoomView view : ChatRoomView.values()) { if (view.getUrlParamValue().equalsIgnoreCase(urlParamValue)) { return view; } } return null; } public String getUrlParamValue() { return urlParamValue; } public String getJspName() { return jspName; } public AbstractView createHandler() { try { Constructor<? extends AbstractView> constructor = viewHandlerClass.getDeclaredConstructor(); return constructor.newInstance(); } catch (Exception e) { throw new RuntimeException("Erro ao instanciar handler para " + name(), e); } } private final String urlParamValue; private final String jspName; private final Class<? extends AbstractView> viewHandlerClass; private ChatRoomView(String paramUrl, String jspName, Class<? extends AbstractView> viewHandlerClass) { this.urlParamValue = paramUrl; this.jspName = jspName; this.viewHandlerClass = viewHandlerClass; } }