iReport no eclipse.. SOCORRO!

0 respostas
Nelson_Rodrigo_Furla

Boa Noite pessoal…
estudando um exemplo retirado aqui do guj, estou tentando rodar um ireport com array, para utilizar essa metodologia no meu sistema… porem meu relário não carrega o sub e eu não sei mais o que fazer…
abaixo segue tudo que fiz, se alguem puder me ajudar…

rel_1.jasper
rel_2.jasper
NomeDataSource.java
GerarDadosFicticios.java
GerarRel.java
Nome.java
Cargo.java

rel_1.jasper

<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="re_1"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="0" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />

	<parameter name="pathSubRel" isForPrompting="false" class="java.lang.String"/>

	<field name="nome" class="java.lang.String"/>
	<field name="sobrenome" class="java.lang.String"/>
	<field name="Listaemprego" class="java.lang.Object"/>

		<background>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</background>
		<title>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</title>
		<pageHeader>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageHeader>
		<columnHeader>
			<band height="20"  isSplitAllowed="true" >
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="0"
						y="0"
						width="100"
						height="18"
						key="textField"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$F{nome}]]></textFieldExpression>
				</textField>
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="100"
						y="0"
						width="100"
						height="18"
						key="textField"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$F{sobrenome}]]></textFieldExpression>
				</textField>
			</band>
		</columnHeader>
		<detail>
			<band height="257"  isSplitAllowed="true" >
				<subreport  isUsingCache="true">
					<reportElement
						x="0"
						y="0"
						width="535"
						height="42"
						key="subreport-1"/>
					<subreportParameter  name="Listaemprego">
						<subreportParameterExpression><![CDATA[$F{Listaemprego}]]></subreportParameterExpression>
					</subreportParameter>
					<dataSourceExpression><![CDATA[$F{Listaemprego}]]></dataSourceExpression>
					<subreportExpression  class="java.lang.String"><![CDATA[$P{pathSubRel}]]></subreportExpression>
				</subreport>
			</band>
		</detail>
		<columnFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageFooter>
		<summary>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</summary>
</jasperReport>

rel_2.jasper

<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="re_2"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="0" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />


	<field name="emprego" class="java.lang.String"/>
	<field name="salario" class="java.lang.Integer"/>

		<background>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</background>
		<title>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</title>
		<pageHeader>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageHeader>
		<columnHeader>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</columnHeader>
		<detail>
			<band height="43"  isSplitAllowed="true" >
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="0"
						y="22"
						width="100"
						height="18"
						key="textField"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$F{emprego}]]></textFieldExpression>
				</textField>
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="100"
						y="22"
						width="100"
						height="18"
						key="textField"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.Integer"><![CDATA[$F{salario}]]></textFieldExpression>
				</textField>
				<staticText>
					<reportElement
						x="0"
						y="2"
						width="101"
						height="18"
						key="staticText-1"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<text><![CDATA[Emprego]]></text>
				</staticText>
				<staticText>
					<reportElement
						x="100"
						y="2"
						width="101"
						height="18"
						key="staticText-2"/>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<text><![CDATA[Salario]]></text>
				</staticText>
			</band>
		</detail>
		<columnFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageFooter>
		<summary>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</summary>
</jasperReport>

NomeDataSource.java

package jasper;

import java.util.Iterator;
import java.util.List;

import vo.Nome;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class NomeDataSource implements JRDataSource {

    private Iterator<?> itrNome;

    private Object valorAtual;

    private boolean irParaProximoAluno = true;

    public NomeDataSource(List<?> lista) {
        super();
        this.itrNome = lista.iterator();
    }

    public boolean next() throws JRException {
        valorAtual = itrNome.hasNext() ? itrNome.next() : null;
        irParaProximoAluno = (valorAtual != null);
        return irParaProximoAluno;
    }

    public Object getFieldValue(JRField campo) throws JRException {
    	
        Object valor = null;
        Nome nome = (Nome) valorAtual;

        if ("nome".equals(campo.getName())) {
            valor = nome.getNome();
        } else if ("sobrenome".equals(campo.getName())) {
            valor = nome.getSobrenome();
        } else if ("ListaCargo".equals(campo.getName())){
        	valor = new JRBeanCollectionDataSource(nome.getListaCargo());       
        }
        return valor;
    }
}

GerarDadosFicticios.java

package jasper;

import java.util.ArrayList;

import vo.Cargo;
import vo.Nome;

public class GerarDadosFicticios {
	
	public static ArrayList<Nome> getListaNomes() {

		ArrayList<Nome> listaNome = new ArrayList<Nome>();
		ArrayList<Cargo> cargo = null;

		Cargo em1 = null;
		Cargo em2 = null;
		Cargo em3 = null;
		
		em1 = new Cargo("desenvolvedor", "7000");
		em2 = new Cargo("desenvolvedor", "5000");
		em3 = new Cargo("desenvolvedor", "3000");
		cargo = new ArrayList<Cargo>();
		cargo.add(em1);
		cargo.add(em2);
		cargo.add(em3);
		Nome rodrigo = new Nome("Rodrigo", "Furlan", cargo);
		listaNome.add(rodrigo);

		return listaNome;
	}

}

GerarRel.java

package jasper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class GerarRel {

    private static final String rel1 = "re_1.jasper";
    private static final String rel2 = "jasper/re_2.jasper";

    @SuppressWarnings({ "unchecked", "deprecation" })
	public GerarRel() throws Exception {

        ArrayList listaNomes = GerarDadosFicticios.getListaNomes();

        NomeDataSource ds = new NomeDataSource(listaNomes);

        Map parametros = new HashMap();
        parametros.put("pathSubRel",rel2);
        
        JasperPrint impressao = JasperFillManager.fillReport(getClass()
                .getResourceAsStream(rel1), parametros, ds);

        JasperViewer viewer = new JasperViewer(impressao, true);
        viewer.show();
    }

    public static void main(String[] args) throws Exception {
        new GerarRel();
    }
}

Nome.java

package vo;

import java.io.Serializable;
import java.util.ArrayList;

public class Nome implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private String nome;
	private String sobrenome;
	private ArrayList<String> ListaCargo;
	
	public Nome(String nome, String sobrenome, ArrayList<Cargo> cargo) {
		super();
		this.nome = nome;
		this.sobrenome = sobrenome;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSobrenome() {
		return sobrenome;
	}

	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}

	public ArrayList<String> getListaCargo() {
		return ListaCargo;
	}

	public void setListaCargo(ArrayList<String> listaCargo) {
		ListaCargo = listaCargo;
	}

}

Cargo.java

package vo;

import java.io.Serializable;

public class Cargo implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private String cargo;
	private String cargo1;

	public Cargo(String cargo, String cargo1){
		super();
		this.cargo = cargo;
		this.cargo1 = cargo1;
	}

	public String getCargo() {
		return cargo;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public String getCargo1() {
		return cargo1;
	}

	public void setCargo1(String cargo1) {
		this.cargo1 = cargo1;
	}
	
}
Criado 8 de fevereiro de 2009
Respostas 0
Participantes 1