Boa tarde, estou fazendo um relatório onde tenho que separar por centro de custo, dentro de centro de custo por conta, dentro de conta mostrar os lançamentos.
fiz o seguinte na action (estou utilizando struts).
Map<Integer, ReportRazaoCentroCustoItem> mapPai = new LinkedHashMap<Integer, ReportRazaoCentroCustoItem>();
for (Iterator iter = list.iterator(); iter.hasNext();) {
AssociaCCusto associaCCusto = (AssociaCCusto) iter.next();
ReportRazaoCentroCustoItem reportRazaoCentroCustoItem = mapPai.get(associaCCusto.getAssociaCCustoPK().getCdCentroCusto());
if(reportRazaoCentroCustoItem==null){
reportRazaoCentroCustoItem = new ReportRazaoCentroCustoItem();
reportRazaoCentroCustoItem.setFilterLivroRazaoCCustoForm(filterForm);
reportRazaoCentroCustoItem.setAssociaCCusto(associaCCusto);
mapPai.put(associaCCusto.getAssociaCCustoPK().getCdCentroCusto(), reportRazaoCentroCustoItem);
}
ReportRazaoCentroCustoItem2 reportRazaoCentroCustoItem2 = reportRazaoCentroCustoItem.getItens().get(associaCCusto.getLancamento().getContaCreditada().getCdReduzido());
if(reportRazaoCentroCustoItem2==null){
reportRazaoCentroCustoItem2 = new ReportRazaoCentroCustoItem2();
reportRazaoCentroCustoItem2.setConta(associaCCusto.getLancamento().getContaCreditada());
reportRazaoCentroCustoItem.getItens().put(associaCCusto.getLancamento().getContaCreditada().getCdReduzido(), reportRazaoCentroCustoItem2);
}
reportRazaoCentroCustoItem2 = reportRazaoCentroCustoItem.getItens().get(associaCCusto.getLancamento().getContaDebitada().getCdReduzido());
if(reportRazaoCentroCustoItem2==null){
reportRazaoCentroCustoItem2 = new ReportRazaoCentroCustoItem2();
reportRazaoCentroCustoItem2.setConta(associaCCusto.getLancamento().getContaDebitada());
reportRazaoCentroCustoItem.getItens().put(associaCCusto.getLancamento().getContaDebitada().getCdReduzido(), reportRazaoCentroCustoItem2);
}
ReportRazaoCentroCustoSubItem razaoCentroCustoSubItem = reportRazaoCentroCustoItem2.getSubItens().get(associaCCusto.getLancamento().getLancamentoPK().getCdLancamento());
if(razaoCentroCustoSubItem==null){
razaoCentroCustoSubItem = new ReportRazaoCentroCustoSubItem();
razaoCentroCustoSubItem.setLancamento(associaCCusto.getLancamento());
reportRazaoCentroCustoItem2.getSubItens().put(associaCCusto.getLancamento().getLancamentoPK().getCdLancamento(),razaoCentroCustoSubItem);
}
}
no relatório
for (Iterator iterItem = map.values().iterator(); iterItem.hasNext();) {
ReportRazaoCentroCustoItem reportRazaoCentroCustoItem = (ReportRazaoCentroCustoItem) iterItem.next();
....
for (Iterator iterItem2 = reportRazaoCentroCustoItem.getItens().values().iterator(); iterItem2.hasNext();) {
ReportRazaoCentroCustoItem2 reportRazaoCentroCustoItem2 = (ReportRazaoCentroCustoItem2) iterItem2.next();
ReportRazaoCentroCustoSubItem subItemAnt = reportRazaoCentroCustoItem2.getSubItens().values().iterator().next();
for (Iterator iterSubItem = reportRazaoCentroCustoItem2.getSubItens().values().iterator(); iterSubItem.hasNext();) {
ReportRazaoCentroCustoSubItem subItem = (ReportRazaoCentroCustoSubItem) iterSubItem.next();
no primeiro “for” ok, mas no segundo da o seguinte erro:
java.util.NoSuchElementException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:367)
at java.util.LinkedHashMap$ValueIterator.next(LinkedHashMap.java:380)
at br.com.ctb.reports.ReportLivroRazaoGerencial.generateDetail(ReportLivroRazaoGerencial.java:128)
que eh a linha do
ReportRazaoCentroCustoSubItem subItemAnt = reportRazaoCentroCustoItem2.getSubItens().values().iterator().next();
sei la o que estou fazendo de errado.
se alguem puder me dar uma luz.