public static List<Mensalidade> getListaMensalidade(String nome, Date data){
        List<Mensalidade> lista = new ArrayList();

        Connection conn = Conexao.getConexao();
        
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Mensalidade mens = null;
       
        try {
                String sql = "Select M.Codigo, M.Cliente, M.Descricao, M.DataPagto, M.ValorPago, M.DataRef from MensalidadesPagas M, Clientes C" +
                             " where C.Codigo = M.Cliente";
                
                if (nome != null) {
                    sql += " and C.Nome like '%" + nome + "%'";
                }

                if (data != null) {
                    sql += " and M.DataRef = ?"; 
                }
                
                sql += " Order by C.Nome";
                
                stmt = conn.prepareStatement(sql);
                
                if (data != null) {
                    stmt.setDate(1, new java.sql.Date(data.getTime()));
                }
                
                rs = stmt.executeQuery();
                
                while (rs.next()) {
                    mens = new Mensalidade(); 
                    mens.setCodigo(rs.getInt("Codigo"));                    
                    mens.setCliente(ClienteDAO.getCliente(rs.getInt("Cliente")));
                    mens.setDescricao(rs.getString("Descricao"));
                    mens.setDatapagto(rs.getDate("DataPagto"));
                    mens.setValorpago(rs.getDouble("ValorPago")); 
                    mens.setDataRef(rs.getDate("DataRef"));

                    lista.add(mens);
                }
        } catch (SQLException e) {
                System.out.println("ERRO: " + e.getMessage());
        } finally {
                if(stmt != null) {
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        System.out.println("ERRO: " + e.getMessage());
                    }
                }
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        System.out.println("ERRO: " + e.getMessage());
                    }
                }	
        } 
               
        return lista;
    }