Duvida em Encapsulamento e Relatório no ireport

Ola pessoal,

estou com uma dúvida no meu programa que é o seguinte, eu tenho 2 classes, a classe jifRelAlunos e a classe relAlunos, na classe jifRelAlunos, eu tenho uma tabela que mostra as informações que estão armazenadas no banco de dados. Tenho opção de filtrar determinados resultados, e tenho 1 botão que gera Relatório. Quando clico neste botão, ele chama a classe relAlunos e faz todo o procedimento. Entretanto, gostaria de deixar o meu relatório personalizado, e imaginei que poderia fazer isto através de Encapsulamento (métodos set e get), só que a instrução sql não chega na classe relAlunos, exceto se for a instrução sql que criou na 1° vez a Tabela que está na classe jifRelAlunos.
Detalhe interessante, é que na classe jifRelAlunos eu insiro as informações que estão no Banco de Dados em uma tabela, entretanto, se eu tirar esta inicialização, também não consigo fazer com que a instrução sql vá para a classe relAlunos. Se eu estou setando as informações nos metodos set and get, porque justamente esta informação não é recebida pelos métodos?
Vou postar os meus códigos para melhor compreensão:

Classe jifRelAlunos:

package clocktime;   
  
import java.sql.ResultSet;   
  
public class jifRelAlunos extends javax.swing.JInternalFrame {   
  
    String sql;   
  
    /** Creates new form jifRelAlunos */   
    public jifRelAlunos() {   
  
        initComponents();   
        S = new selectDados();   
        U = new updateDados();   
        //MEU PROBLEMA TA AQUI Ó!   
        initTabela();   
    }   
  
    private void initTabela(){   
        try {   
        //MEU PROBLEMA TA AQUI Ó!   
            sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod";   
            rs = S.preencheDataSet(sql);   
            setSql(sql);   
            jTable1.setModel(new ResultSetTableModel(rs));   
            resizeColumns();   
  
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
           
    }   
  
private void jbPesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                               
      String nome = jtfNome.getText().trim();   
  
//    String ordenacao = "order by";   
        try {   
            if (jchbNome.isSelected()) {   
                sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod and r.nome like '" + nome + "%' order by r.nome asc";   
                rs = S.preencheDataSet(sql);   
                setSql(sql);   
                jTable1.setModel(new ResultSetTableModel(rs));   
                jTable1.updateUI();   
                resizeColumns();   
            }   
            if (jchbCurso.isSelected()) {   
                if (jchbCursoXP.isSelected()) {   
                    sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_xp desc, r.cod asc";   
                    rs = S.preencheDataSet(sql);   
                    setSql(sql);   
                    jTable1.setModel(new ResultSetTableModel(rs));   
                    jTable1.updateUI();   
                    resizeColumns();   
                }   
                if (jchbWord.isSelected()) {   
                    sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_word desc, r.cod asc";   
                    rs = S.preencheDataSet(sql);   
                    setSql(sql);   
                    jTable1.setModel(new ResultSetTableModel(rs));   
                    jTable1.updateUI();   
                    resizeColumns();   
                }   
                if (jchbExcel.isSelected()) {   
                    sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_excel desc, r.cod asc";   
                    rs = S.preencheDataSet(sql);   
                    setSql(sql);   
                    jTable1.setModel(new ResultSetTableModel(rs));   
                    jTable1.updateUI();   
                    resizeColumns();   
                }   
                if (jchbPoint.isSelected()) {   
                    sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade  as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_point desc, r.cod asc";   
                    rs = S.preencheDataSet(sql);   
                    setSql(sql);   
                    jTable1.setModel(new ResultSetTableModel(rs));   
                    jTable1.updateUI();   
                    resizeColumns();   
                }   
            }   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }           
  
//Seta informação do sql   
    public void setSql(String sql) {   
        this.sql = sql;   
        System.out.println(sql);   
    }   
    //Retorna informação do sql   
    public String getSql() {   
        return sql;   
    }   
  
private void jbGerarRelatorioActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        relAlunos rel = new relAlunos();   
        String query = getSql();   
        //System.out.println(query);   
        try {   
            rel.geraRelatorio(query);   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
  
    }   

Classe relAlunos:

package clocktime;

import java.sql.*;
import java.util.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;

public class relAlunos {

    private static final String diretorio = "C:\\Sistema\\reports\\";
    private static final String relatorio = diretorio + "rel_alunos.jasper";
    private static final String print = diretorio + "rel_alunos.jprint";
    private static final String pdf = diretorio + "rel_alunos.pdf";


    private static Connection getConnection() throws ClassNotFoundException, SQLException {
        retornaIP ip = new retornaIP();
        ip.run();
        String local = ip.getIP();
        String Driver = "com.mysql.jdbc.Driver";
        String MySqlConnectString = "jdbc:mysql://" + local + ":3306/clocktime";
        String username = "******";
        String password = "******";
        Class.forName(Driver);
        Connection con = DriverManager.getConnection(MySqlConnectString, username, password);
        return con;
    }

    /* Gera Relatorio e visualiza-o */
    public void geraRelatorio(String query) throws JRException, Exception {
        jifRelAlunos RA = new jifRelAlunos();
        query = RA.getSql();

        Connection con = getConnection();
        Statement stm = con.createStatement();
        System.out.println(query);
        //String query = "select * from reg_alunos";
        //String query
//        String query = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno,     r.numero as numero_aluno,     r.complemento as complemento_aluno,     r.bairro as bairro_aluno,     r.cidade as cidade_aluno,     r.uf as uf_aluno,     r.rg as rg_aluno,     r.cpf as cpf_aluno,     r.sexo as sexo_aluno,     r.telefone as telefone_aluno,     r.celular as celular_aluno,     r.periodo as periodo_aluno,     r.curso_xp as curso_xp_aluno,     r.curso_word as curso_word_aluno,     r.curso_excel as curso_excel_aluno,     r.curso_point as curso_point_aluno,     r.idade  as idade_aluno,     u.cod as cod_uf,     u.uf as nome_uf FROM     reg_alunos r inner join reg_uf u on r.uf = u.cod";
        ResultSet rs = stm.executeQuery(RA.getSql());
        /* implementação da interface JRDataSource para DataSource ResultSet */
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        /* HashMap de parametros utilizados no relatório. Sempre instanciados */
        Map parameters = new HashMap();

        //		//compila o relatório
        JasperPrint impressao = JasperFillManager.fillReport(relatorio, parameters, jrRS);
        JasperExportManager.exportReportToPdfFile(impressao, pdf);

        /* Visualiza o relatório em formato PDF */
        JasperViewer.viewReport(impressao, false);
    }

    public static void main(String[] args) throws JRException, Exception {
        new relUtil().geraRelatorio();
    }
}

Muito obrigado a todos!

Opa, resolvi meu problema. Vou deixar a solução.

Na classe RelAlunos estava o meu erro na verdade.
Aqui que ta o meu erro:

public void geraRelatorio(String query) throws JRException, Exception {   
        jifRelAlunos RA = new jifRelAlunos();   
        query = RA.getSql();   

Se na classe jifRelAlunos dentro do método jbGerarRelatorioActionPerformed eu estou gerando o relatório com um parâmetro, de onde eu tirei da cabeça que deveria chamar o método dentro da classe RelAlunos???
Ta errado. Por isto que tava retornando nulo.
De início, dentro da classe jifRelAlunos a instrução sql estava sendo preenchida sim, entretanto quando ela estava sendo chamada dentro da classe RelAlunos eu estava instanciando a SQL novamente, mas aparentemente sem parâmetro.

Agora, como eu gero o relatório com o parâmetro (String query), o relatório está sendo gerado sem problemas.
Fica aí a dica (se bem que acho que somente eu - o oreia seca - deve ter feito isto no mundo hehehehhehe).

Obrigado pela atenção!