Enviar informações para o Jasper

Eu não trabalho com java mas sim com TCL, porém os relatórios eu gero no IReport e do TCL chamo uma classe que mostra o Report
eu mando por parametro pra classe uma lista com as informações do relatorio
porém agora não posso mandar como parametro, pois a quantidade de linhas da lista é dinamica, oque posso fazer?

dei uma olhada em JRBeanCollectionDataSource, mas como fazer sem criar uma classe só para adicionar os valores nele?

Quantidade de linhas ou de colunas?
Vc quer um objeto dinâmico, onde vc insere propriedades nele?
Se for isso, já falei para vc em outro tópico sobre os DynaBeans do pacote commons-beanutils.

[]´s

quantidade de linhas muda, a quantidade de colunas é igual, pense nos produtos (a lista em questão) como o resultado de um select

mandei meu código (lembrando que System.getenv(“TCTCL_LIBRARY_PATH”) é uma variável de ambiente que retornará o diretório do meu projeto
eu recebo os valores por parametro em uma string gigante, separados por "|"
no java eu separo tudo, coloco os parametros “do relatorio” no hashmap e os produtos, em uma lista, e mando pro jasper, porém ele retorna o erro:
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : qtdeReg

qtdeReg é o primeiro field que o jasper busca ( $F{qtdeReg} )

[code]import java.sql.*;

import java.util.HashMap;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.view.JasperViewer;

import java.io.;
import java.util.
;
import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.beans.
;
import java.util.Random;

public class chamaJasper extends JFrame {
private JLabel label;
private static String nomprograma;
private static String nomParam;
private static String valParam;

private static String qtdeReg;
public chamaJasper(String nomPrograma) {
super(“Gerando Relatório…”);

  label = new JLabel("Aguarde, Processando...",JLabel.CENTER);
  label.setIcon(new javax.swing.ImageIcon(System.getenv("TCTCL_LIBRARY_PATH")+"/img006.isi"));
  label.setHorizontalTextPosition(JLabel.RIGHT);

  JButton botao = new JButton("Cancelar");
  botao.addActionListener(
     new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           System.exit(0);
        }
     }
  );

  JPanel panel = new JPanel();

  panel.setSize(265,140);
  panel.add(label);
  panel.add(botao);

  add(panel);

}
public static void main(String arg[]) {
HashMap parametros = new HashMap();
StringTokenizer param = new StringTokenizer(arg[0], “|”);
java.util.List listaProdutos = new ArrayList();
while (param.hasMoreTokens()) {
nomParam = param.nextToken();
if (nomParam.equals(“produtos”)) {break;} else {
if (nomParam.equals("")) break;
valParam = param.nextToken();
if (nomParam.equals(“nomprograma”)) {nomprograma = valParam;}
parametros.put(nomParam, valParam);
}
}
//buscando os produtos
java.util.List ls = new ArrayList();
qtdeReg = param.nextToken();
ls.add(qtdeReg);
while (param.hasMoreTokens()) {
nomParam = param.nextToken();
ls.add(nomParam);
}
Toolkit tk = Toolkit.getDefaultToolkit();

  Dimension dim = tk.getScreenSize();
  int sw = dim.width;
  int sh = dim.height;

  chamaJasper janela = new chamaJasper(nomprograma);
  janela.setLocation((sw / 4) + 125, (sh / 4) + 85);
  janela.setSize(265,140);
  janela.setVisible(true);
  janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  try {
     Class.forName("org.postgresql.Driver");

     parametros.put("SUBREPORT_DIR", System.getenv("TCTCL_LIBRARY_PATH") + "/Jasper/");

     JRDataSource jrds = new JRBeanCollectionDataSource(ls);    
     JasperPrint jasperPrint = JasperFillManager.fillReport(System.getenv("TCTCL_LIBRARY_PATH") + "/Jasper/" + nomprograma + "report.jasper", parametros, jrds);

     JasperViewer.viewReport(jasperPrint);
     janela.dispose();
  }
  catch (JRException e) {
     e.printStackTrace();
     System.exit(0);
  }
  catch (ClassNotFoundException ex) {
     ex.printStackTrace();
     System.exit(0);
  }

}
}
[/code]

como sou iniciante em java, qualquer ajuda para melhorar o código também é bem vinda

ninguem?