Quebra de arquivo JasperReport em Java, usando DataSource

Galera, alguém poderia ajudar um iniciante me java?

Estou desenvolvendo um relatório no Jasper, onde utilizo um JRDataSource para armazenar os dados.

Neste relatório, eu preciso que cada linha seja gerada num arquivo PDF , porém, o relatório está acumulando o array gerado, a cada página. Abaixo, segue o código, que não está muito bonito, mas está funcionando:

package Menus.GeracaoRET;

import java.io.File;
import java.io.IOException;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JFileChooser;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.jfree.ui.ExtensionFileFilter;

/**
*

  • @author FabianoRios
    */
    public class GeraRETEmpresa {
    public static void main (String[] args) {}
    Carga.ComSQL conect = new Carga.ComSQL();

    public void GeraRET1() throws IOException, SQLException, JRException {
     {
         conect.conexao();
         
         
         conect.executaSQL("select DRT_DssEmpresa, \n"+
                             "      ((replace(substring(STR(DRT_NumCNPJ,14,0),1,2),' ',0))+'.'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),3,3),' ',0))+'.'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),6,3),' ',0))+'/'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),9,4),' ',0))+'-'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),13,2),' ',0))) as DRT_NUMCNPJ,\n"+
                             "	   DRT_DssControleEmpresa, \n"+
                             "	   DRT_NumFPAS,\n"+
                             "	   DRT_NumTerceiros,\n"+
                             "	   DRT_NumSimples,\n"+
                             "	   DRT_NumRAT,\n"+
                             "	   DRT_NumFAP,\n"+
                             "	   DRT_NumRATAjustado,\n"+
                             "	   DRT_NumCdRec,\n"+
                             "	   ((substring(STR(DRT_NumMesCompetencia,2,0),1,2))\n"+
                             "	   +'/'+\n"+
                             "	   (substring(STR(DRT_NumAnoCompetencia,4,0),1,4))) as COMPETENCIA, \n"+
                             "	   DRT_DssTomador,\n"+
                             "	  ((replace(substring(STR(DRT_NumCNPJTomador,14,0),1,2),' ',0))+'.'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),3,3),' ',0))+'.'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),6,3),' ',0))+'/'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),9,4),' ',0))+'-'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),13,2),' ',0))) as DRT_NUMCNPJTomador,\n"+
                             "	   DRT_DssControleTomador,\n"+
                             "	   DRT_DssEndereco,\n"+
                             "	   DRT_DssBairro,\n"+
                             "	   DRT_DssMunicipio,\n"+
                             "	   (substring(STR(DRT_NumCEP,8,0),1,5) +'-'+\n"+
                             "	    substring(STR(DRT_NumCEP,8,0),6,3)) as DRT_NumCEP,\n"+
                             "	   DRT_DssUF,\n"+
                             "	   DRT_DssNomeModalidade,\n"+
                             "	   DRT_VlnRemINSSNormal,\n"+
                             "	   DRT_VlnRemINSS13,\n"+
                             "	   DRT_VlnRemFGTSNormal8,\n"+
                             "	   DRT_VlnRemFGTS138,\n"+
                             "	   DRT_VlnDeposito8,\n"+
                             "	   DRT_VlnEncargos8,\n"+
                             "	   DRT_VlnContrSocial8,\n"+
                             "	   DRT_VlnRemFGTSNormal2,\n"+
                             "	   DRT_VlnRemFGTS132,\n"+
                             "	   DRT_VlnDeposito2,\n"+
                             "	   DRT_VlnEncargos2,\n"+
                             "	   DRT_VlnContrSocial2,\n"+
                             "	   (select (substring (vsf_numversaosefip,1,1)+\n"+
                             "	          +'.'++\n"+
                             "			   (substring(VSF_NumVersaoSefip,2,1))+\n"+
                             "			  +'0') from versoessefip) as NUM_Versao_SEFIP,\n"+
                             "	   (select (substring (VSF_NumTabelaPrevid,1,1)+\n"+
                             "	          +'.'++\n"+
                             "			   (substring(VSF_NumTabelaPrevid,2,1))+\n"+
                             "			  +'0') from versoessefip) as NUM_Versao_Previd,\n"+
                             "       (select VSF_DtInicioVersaoSEFIP from VersoesSEFIP) as Vigencia_SEFIP,\n"+
                             "	   (select VSF_DtInicioTabelaPrevid from VersoesSEFIP) as Vigencia_Previd,\n"+
                             "	   DRT_VlnContribEmpregados,\n"+
                             "       DRT_VlnContribDevida,\n"+
                             "       DRT_NumtrabalhadoresINSS,\n"+
                             "       DRT_NumTrabalhadoresFGTS8,\n"+
                             "       DRT_NumTrabalhadoresFGTS2,\n"+
                             "       (substring(DRT_DssCdBarras8,1,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras8,13,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras8,25,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras8,37,12)) as DRT_DssCdBarras8,  \n"+
                             "       (substring(DRT_DssCdBarras2,1,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras2,13,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras2,25,12) + ' ' +\n"+
                             "        substring(DRT_DssCdBarras2,37,12)) as DRT_DssCdBarras2,  \n"+                  
                             "        ((replace(substring(STR(DRT_NumCNPJ,14,0),1,2),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),3,3),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),6,3),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),9,4),' ',0))+'-'++\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJ,14,0),13,2),' ',0))) as CNPJ, \n"+
                             "        ((replace(substring(STR(DRT_NumCNPJTomador,14,0),1,2),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),3,3),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPjTomador,14,0),6,3),' ',0))+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),9,4),' ',0))+'-'+\n"+
                             "	   (replace(substring(STR(DRT_NumCNPJTomador,14,0),13,2),' ',0))) as CNPJTomador, \n"+
                             "          substring(DRT_DssEmpresa,1,20) as NomeEmpresa, \n"+                    
                             "          substring(DRT_DssTomador,1,20) as NomeTomador \n"+
                             "from DadosRETs\n"+
                             "order by DRT_NumCNPJ, DRT_NumCNPJTomador, DRT_NusModalidadeFGTS");
    

//Carrega o total de linhas de DadosGRFs

      try {
       
       JFileChooser salvandoArquivo = new JFileChooser();
       salvandoArquivo.setFileFilter(new ExtensionFileFilter("Arquivos PDF", "pdf"));
       String endereco = "";
       File file = null;
       int retorno = salvandoArquivo.showSaveDialog(null);
       if (retorno==JFileChooser.APPROVE_OPTION) {
           endereco = salvandoArquivo.getSelectedFile().getAbsolutePath();
                      }
       else
           if (retorno ==JFileChooser.CANCEL_OPTION) {
               return;
           }
        InputStream inputStream = getClass().getResourceAsStream( "../SGRE/src/Menus/GeracaoRET/RETEmpresa.jrxml");

    Map parametros = new HashMap();

    // criando os dados que serão passados ao datasource
    List dados = new ArrayList();
    
                      
         while (conect.rs.next()) {
          CargaRETEmpresa carga = new CargaRETEmpresa();
                carga.setDRT_DssEmpresa(conect.rs.getString("DRT_DssEmpresa"));
                carga.setDRT_NumCNPJ(conect.rs.getString("DRT_NumCNPJ"));
                carga.setDRT_DssControleEmpresa(conect.rs.getString("DRT_DssControleEmpresa"));
                carga.setDRT_NumFPAS(conect.rs.getInt("DRT_NumFPAS"));
                carga.setDRT_NumTerceiros(conect.rs.getInt("DRT_NumTerceiros"));
                carga.setDRT_NumSimples(conect.rs.getInt("DRT_NumSimples"));
                carga.setDRT_NumRAT(conect.rs.getInt("DRT_NumRAT"));
                carga.setDRT_NumFAP(conect.rs.getDouble("DRT_NumFAP"));
                carga.setDRT_NumRATAjustado(conect.rs.getDouble("DRT_NumRATAjustado"));
                carga.setDRT_NumCdRec(conect.rs.getInt("DRT_NumCdRec"));
                carga.setCompetencia(conect.rs.getString("Competencia"));
                carga.setDRT_DssTomador(conect.rs.getString("DRT_DssTomador"));
                carga.setDRT_NumCNPJTomador(conect.rs.getString("DRT_NumCNPJTomador"));
                carga.setDRT_DssControleTomador(conect.rs.getString("DRT_DssControleTomador"));
                carga.setDRT_DssEndereco(conect.rs.getString("DRT_DssEndereco"));
                carga.setDRT_DssBairro(conect.rs.getString("DRT_DssBairro"));
                carga.setDRT_DssMunicipio(conect.rs.getString("DRT_DssMunicipio"));
                carga.setDRT_NumCEP(conect.rs.getString("DRT_NumCEP"));
                carga.setDRT_DssUF(conect.rs.getString("DRT_DssUF"));    
                carga.setDRT_DssNomeModalidade(conect.rs.getString("DRT_DssNomeModalidade"));
                carga.setDRT_VlnRemINSSNormal(conect.rs.getDouble("DRT_VlnRemINSSNormal"));
                carga.setDRT_VlnRemINSS13(conect.rs.getDouble("DRT_VlnRemINSS13"));
                carga.setDRT_VlnRemFGTSNormal8(conect.rs.getDouble("DRT_VlnRemFGTSnormal8"));
                carga.setDRT_VlnRemFGTS138(conect.rs.getDouble("DRT_VlnRemFGTS138"));
                carga.setDRT_vlnDeposito8(conect.rs.getDouble("DRT_VlnDeposito8"));
                carga.setDRT_VlnEncargos8(conect.rs.getDouble("DRT_VlnEncargos8"));
                carga.setDRT_VlnContrSocial8(conect.rs.getDouble("DRT_VlnContrSocial8"));
                carga.setDRT_VlnRemFGTSNormal2(conect.rs.getDouble("DRT_VlnRemFGTSNormal2"));
                carga.setDRT_VlnRemFGTS132(conect.rs.getDouble("DRT_VlnRemFGTS132"));
                carga.setDRT_VlnDeposito2(conect.rs.getDouble("DRT_VlnDeposito2"));
                carga.setDRT_VlnEncargos2(conect.rs.getDouble("DRT_VlnEncargos2"));
                carga.setDRT_VlnContrSocial2(conect.rs.getDouble("DRT_VlnContrSocial2"));
                carga.setNUM_Versao_SEFIP(conect.rs.getString("NUM_Versao_SEFIP"));
                carga.setNum_Versao_Previd(conect.rs.getString("Num_Versao_Previd"));
                carga.setVigencia_SEFIP(conect.rs.getDate("Vigencia_SEFIP"));
                carga.setVigencia_Previd(conect.rs.getDate("Vigencia_Previd"));
                carga.setDRT_VlnContribEmpregados(conect.rs.getDouble("DRT_VlnContribEmpregados"));
                carga.setDRT_VlnContribDevida(conect.rs.getDouble("DRT_VlnContribDevida"));
                carga.setDRT_NumTrabalhadoresINSS(conect.rs.getDouble("DRT_NumTrabalhadoresINSS"));
                carga.setDRT_NumTrabalhadoresFGTS8(conect.rs.getDouble("DRT_NumTrabalhadoresFGTS8"));
                carga.setDRT_NumTrabalhadoresFGTS2(conect.rs.getDouble("DRT_NumTrabalhadoresFGTS2"));
                carga.setDRT_DssCdBarras8(conect.rs.getString("DRT_DssCdBarras8"));
                carga.setDRT_DssCdBarras2(conect.rs.getString("DRT_DssCdBarras2"));
        
        dados.add( carga );

// }

        String Empresa     = conect.rs.getString("NomeEmpresa");
        String Tomador     = conect.rs.getString("NomeTomador");
        String CNPJ        = conect.rs.getString("CNPJ");
        String CNPJTomador = conect.rs.getString("CNPJTomador");

// try {
JRDataSource ds = new JRBeanCollectionDataSource(dados);
JasperReport pathjrxml = JasperCompileManager.compileReport("…/SGRE/src/Menus/GeracaoRET/RETEmpresa.jrxml");
JasperPrint printReport = JasperFillManager.fillReport(pathjrxml, parametros, ds);
JasperExportManager.exportReportToPdfFile(printReport, endereco+" “+Empresa + “-”+CNPJ +”-"+Tomador+"-"+CNPJTomador+".pdf");

                                 JOptionPane.showMessageDialog(null,"Relatório Finalizado");          
          
           }

                     }
      catch (SQLException ex) {
          System.out.println("");
      }

   
       }

}
}