Percorrer Collection no Ireport

Criei o seguinte:

package com.systempro.sapiweb.util;

import com.systempro.sapiweb.dominio.Grade;
import java.util.Comparator;

/**
 *
 * @author prog16
 */
public class ComparatorUtil implements Comparator<Grade> {

    @Override
    public int compare(Grade o1, Grade o2) {
        if (o1 != null && o2 != null) {
            Grade g1 = (Grade) o1;
            Grade g2 = (Grade) o2;
            if (g1.getDisciplina() != null && g2.getDisciplina() != null) {
                return g1.getDisciplina().getDescricao().compareToIgnoreCase(g2.getDisciplina().getDescricao());
            }
        }
        return 0;
    }
}

No pacote com.systempro.sapiweb.util mas dá erro no relatório…Abaixo a imagem:


Não é no order by exp., é no Comparator exp.

Infelizmente tá dando o mesmo erro cara. Sério, to chegando a conclusão que não vou conseguir fazer :frowning:

E você colocou o caminho da classe do comparador no classpath do iReport?

Infelizmente não… Nunca mexi nisso exatamente…Ao menos acredito que não;.

Cara, não sei mais oke fazer…Abaixo a imagem do classpath…Poderia dar mais alguma ideia aí? Se puder continuar a fazer esse trem funcionar, agradeço mtoo cara…Pq já to nas últimas tentativas aki…Vlw


Acrescente aí no classpath a pasta onde está o arquivo .class correspondente ao seu comparator.

Cara, acabei de add a pasta e tals, mas nao tem jeito…


Cara, tá errado. Você deve adicionar a pasta onde fica o arquivo .class - no caso, você adicionou o arquivo .java - reveja isso aí.

Desculpe pela ignorância…To meio perdido aki…Seguinte: então esse arquivo que criei deve ser .class e não .java??

Cara, n to conseguindo pelo jeito…Poderia dar uma mão aí…??? Tá dando o mesmo erro. Se puder ajudar a fazer isso funcionar fico mto agradecido…Vlw cara…Abc!!

O arquivo .class você não cria - ele é gerado quando você compila seu projeto. Localize a pasta dele e acerte o classpath, colocando o caminho da pasta e não do arquivo.

Bom dia Roselito, tdo certo ? Cara, fiquei pensando no seguinte essa noite:
1º Não sei se dá pra se encaixar nesse tópico mas fiquei com dúvida no seguinte:
Quando crio um subreport dentro do “relatório pai” geralmente passo um field do tipo List no relatório pai e no Data Source Expression do SuBREPORT passo o seguinte, por exemplo:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lista})

Sendo que a lista nda mais é do que ( no caso a description): aluno.matriculaCollection. Então a dúvida é a seguinte: Não teria como eu declarar uma list em um relatório qualquer e não criar um subrelatorio, mas sim, passar num field qualquer new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lista}) para pegar algo de dentro da Matrícula nesse caso??? Se puder dar uma ideia aí, fico mto agradecido cara…Vlw

Ricardo,

Acredito que isso não seja possível. Você não teria como percorrer a lista sem ser por meio de um subreport. As alternativas para isto são justamente os componentes, como a crossTable.

[quote=Roselito Fávero da Silva]Ricardo,

Acredito que isso não seja possível. Você não teria como percorrer a lista sem ser por meio de um subreport. As alternativas para isto são justamente os componentes, como a crossTable.[/quote]
É que preciso colocar um campo dentro de um relatório que está também dentro da collection…Porém, eu teria que colocar ele dentro do crosstab… É que vi esse tópico, ( http://www.guj.com.br/java/210247-duvidas-para-gerar-relatorio-no-ireport-resolvido#1628774 )daí achei que seria possível, poderia dar mais uma mão aí?? Pq o ordenar aí por enquanto deixei de lado…Vlww

Olha, a única maneira que vejo pra você fazer algo do tipo é passar uma coleção HashMap pra dentro do seu relatório, aí você poderia usar o get do HashMap para obter um valor dele a partir de uma chave. Mas é bem complicado fazer isso.

Pela madrugada!!! Tipo, no método que chamo o relatório vc diz ou fazer dentro do jasper msm???

Dentro do jasper. Você pode colocar um hashmap transient na sua entidade e acessá-lo como se fosse um campo, dentro do jasper.

Pelo jeito não é tãoo facil…hehehe…Pode dar uma mão aí? Em anexo o relatorio…

Ricardo, instalei um iReport mais recente aqui e agora consigo abrir seus relatórios (boletim e presencaDisciplina). Me explique novamente o que você precisa pra ver se eu consigo alguma solução aqui.