/** * 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.dashboard.customquery.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.liferay.portal.kernel.dao.jdbc.DataAccess; import br.gov.camara.edemocracia.portlets.dashboard.cache.util.CacheKey; import br.gov.camara.edemocracia.portlets.dashboard.customquery.QueryExecutor; import br.gov.camara.edemocracia.portlets.dashboard.customquery.sql.SQLBuilder; import br.gov.camara.edemocracia.portlets.dashboard.dto.Configuracao; import br.gov.camara.edemocracia.portlets.dashboard.dto.RecursoDTO; public class TopicosComMaiorParticipacao extends QueryExecutor { @Override protected List<RecursoDTO> listar (Connection conn, Configuracao config, long companyId) throws SQLException { boolean possuiComunidade = config.getComunidadeSelecionada() > 0; PreparedStatement pstmt = null; ResultSet rs = null; List<RecursoDTO> retorno = new ArrayList<RecursoDTO>(); String sql = SQLBuilder.buildSQLTopicosComMaiorParticipacao(config); try { pstmt = conn.prepareStatement(sql); pstmt.setLong(1, companyId); pstmt.setTimestamp(2, new Timestamp(config.getDataInicioPeriodoEmMillis())); pstmt.setTimestamp(3, new Timestamp(config.getDataFimPeriodoEmMillis())); if (possuiComunidade) { pstmt.setLong(4, config.getComunidadeSelecionada()); } pstmt.setMaxRows(getQuantidadeMaximaDeResultados(config)); rs = pstmt.executeQuery(); BeanListHandler<RecursoDTO> handler = new BeanListHandler<RecursoDTO>(RecursoDTO.class); retorno = handler.handle(rs); return retorno; } finally { DataAccess.cleanUp(rs); DataAccess.cleanUp(pstmt); } } @Override public CacheKey getChaveCache() { return CacheKey.TOPICO; } }