/** * 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.beans.admin.usuarios; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.application.Resource; import javax.faces.application.ResourceHandler; import javax.faces.context.FacesContext; import org.apache.commons.io.input.CharSequenceInputStream; import br.gov.camara.edemocracia.portlets.chat.ChatRoomUserBean; import br.gov.camara.edemocracia.portlets.chat.model.ChatRoom; import br.gov.camara.edemocracia.portlets.chat.portlet.ChatResourceHandler; import br.gov.camara.edemocracia.portlets.chat.portlet.exporter.CSVChatRoomUsersExporter; import br.gov.camara.edemocracia.portlets.chat.service.ChatRoomServiceUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; /** * @author rpdmiranda * */ public class UsuariosResource extends Resource { /** * Identificador da Sala */ private final ChatRoom sala; /** * URL para o recurso */ private String requestPath; public UsuariosResource(ChatRoom sala) { this.sala = sala; setLibraryName(ChatResourceHandler.LIBRARY_NAME); setResourceName(ChatResourceHandler.USUARIOS_RESOURCE_PREFIX + sala.getRoomId()); setContentType("text/csv"); } /** * @see javax.faces.application.Resource#getInputStream() */ @Override public InputStream getInputStream() throws IOException { List<ChatRoomUserBean> listUsers; try { listUsers = ChatRoomServiceUtil.findAllChatRoomParticipants(sala.getRoomId()); } catch (PortalException e) { throw new IOException(e); } catch (SystemException e) { throw new IOException(e); } String csv = CSVChatRoomUsersExporter.export(listUsers); return new CharSequenceInputStream(csv, "UTF-8"); } /** * @see javax.faces.application.Resource#getResponseHeaders() */ @Override public Map<String, String> getResponseHeaders() { HashMap<String, String> retorno = new HashMap<String, String>(); retorno.put("Content-Disposition", "attachment;filename=\"export-" + sala.getNameAsFilename() + "-users.csv\""); return retorno; } /** * @see javax.faces.application.Resource#getRequestPath() */ @Override public String getRequestPath() { if (requestPath == null) { StringBuilder buf = new StringBuilder(); buf.append(ResourceHandler.RESOURCE_IDENTIFIER); buf.append("/"); buf.append(getResourceName()); buf.append("?ln="); buf.append(getLibraryName()); requestPath = buf.toString(); requestPath = FacesContext.getCurrentInstance().getExternalContext().encodeResourceURL(requestPath); } return requestPath; } /** * @see javax.faces.application.Resource#getURL() */ @Override public URL getURL() { return null; } /** * @see javax.faces.application.Resource#userAgentNeedsUpdate(javax.faces.context.FacesContext) */ @Override public boolean userAgentNeedsUpdate(FacesContext context) { return true; } }