/**
* 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.participacao;
import java.util.Date;
import java.util.List;
import javax.faces.application.Resource;
import javax.faces.application.ResourceHandler;
import javax.faces.application.ResourceHandlerWrapper;
import br.gov.camara.edemocracia.portlets.graficos.DadosComunidadeDTO;
import br.gov.camara.edemocracia.portlets.graficos.service.ParticipacaoLocalServiceUtil;
import br.gov.camara.edemocracia.portlets.participacao.resource.ParticipacaoResource;
import com.liferay.faces.portal.context.LiferayFacesContext;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
public class ParticipacaoResourceHandler extends ResourceHandlerWrapper{
private final ResourceHandler wrapped;
public static final String LIBRARY_NAME = "participacao";
public static final String PARTICIPACAO_RESOURCE_PREFIX = "comunidades_";
public ParticipacaoResourceHandler(ResourceHandler wrapped) {
this.wrapped = wrapped;
}
/**
* @see javax.faces.application.ResourceHandlerWrapper#getWrapped()
*/
@Override
public ResourceHandler getWrapped() {
return wrapped;
}
/**
* @see javax.faces.application.ResourceHandlerWrapper#createResource(java.lang.String)
*/
@Override
public Resource createResource(String resourceName) {
return createResource(resourceName, null);
}
/* (non-Javadoc)
* @see javax.faces.application.ResourceHandlerWrapper#createResource(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public Resource createResource(String resourceName, String libraryName,
String contentType) {
return createResource(resourceName, libraryName);
}
/**
* @see javax.faces.application.ResourceHandlerWrapper#createResource(java.lang.String, java.lang.String)
*/
@Override
public Resource createResource(String resourceName, String libraryName) {
if (!LIBRARY_NAME.equals(libraryName))
return super.createResource(resourceName, libraryName);
if (resourceName == null || !resourceName.startsWith(PARTICIPACAO_RESOURCE_PREFIX))
return super.createResource(resourceName, libraryName);
// Cria o recurso para retornar os dados das comunidades especificadas
try {
String keyComunidades = resourceName.substring(PARTICIPACAO_RESOURCE_PREFIX.length());
if (true/* TODO: canExport? */) {
try {
List<Long> comunidadesSelecionadas = (List<Long>) LiferayFacesContext.getInstance().getSessionAttribute(keyComunidades);
Date dataInicio = (Date) LiferayFacesContext.getInstance().getSessionAttribute("dataInicio");
List<DadosComunidadeDTO> dadosComunidade;
if(dataInicio != null){
Date dataFim = (Date) LiferayFacesContext.getInstance().getSessionAttribute("dataFim");
dadosComunidade = ParticipacaoLocalServiceUtil.getDadosComunidade(comunidadesSelecionadas, dataInicio, dataFim);
return new ParticipacaoResource(dadosComunidade, keyComunidades, dataInicio, dataFim);
}else {
dadosComunidade = ParticipacaoLocalServiceUtil.getDadosComunidade(comunidadesSelecionadas);
return new ParticipacaoResource(dadosComunidade, keyComunidades);
}
} catch (PortalException e) {
return super.createResource(resourceName, libraryName);
} catch (SystemException e) {
throw new RuntimeException(e);
}
} else {
return super.createResource(resourceName, libraryName);
}
} catch (NumberFormatException e) {
return super.createResource(resourceName, libraryName);
}
}
/**
* @see javax.faces.application.ResourceHandlerWrapper#libraryExists(java.lang.String)
*/
@Override
public boolean libraryExists(String libraryName) {
if (LIBRARY_NAME.equals(libraryName))
return true;
else
return super.libraryExists(libraryName);
}
}