Dúvida em interação

2 respostas
E

Pessoal, estou com um problema ao tentr acessar alguns dados de uns maps. Primeiro, tenho o
List<Map><String, Object>&gt escalas que retorna os dados de uma escala de um veiculo (horas, condutor, etc).
e no List<Map> paradas, os dados sobre suas paradas. Esses dados sao de uma consulta feita atravesde um metodo consultaPontosParada. Abaixo está atualmente o meu problema. Ele só deveria fazer a consultaPontosParada caso um novo código de veículo fosse detectado, e após isso, passar o dado para HORA_CHEGADA…

Mas recebo o aviso de que no for (Map parada : paradas) paradas não pode ser reconhecida. Alguém sabe como devo proceder?

String veiculoId = "";

        for (Map escala : escalas) {
            if (!veiculoId.equals(escala.get("VEICULOID"))) {
                param.put("veiculoId", escala.get("VEICULOID"));
                pontosParadas = consultaService.consultaPontosParada (param);
                List<Map> paradas = (List) ((Map) pontosParadas.get(0)).get("paradas");
            }
            
            for (Map parada : paradas) {
                escala.put ("HORA_CHEGADA", parada.get("HORA_INICIAL").toString());      
            }            
        }

2 Respostas

adriano.ferranti

O problema é que essa linha

List<Map> paradas = (List) ((Map) pontosParadas.get(0)).get("paradas");

que contém a declaração da variável paradas está dentro de um if, portanto dependendo da condição do IF ser verdadeira ou não, esse bloco de código contendo a declaração não vai ser executado. Para resolver apenas coloque a declaração fora do IF.

String veiculoId = "";
        List<Map> paradas = null;
 
         for (Map escala : escalas) {
             if (!veiculoId.equals(escala.get("VEICULOID"))) {
                 param.put("veiculoId", escala.get("VEICULOID"));
                 pontosParadas = consultaService.consultaPontosParada (param);
                 paradas = (List) ((Map) pontosParadas.get(0)).get("paradas");
             }
             

             //Não esqueça de testar se paradas diferente de null, senão o foreach dá erro
             if (paradas != null){ 
                for (Map parada : paradas) {
                    escala.put ("HORA_CHEGADA", parada.get("HORA_INICIAL").toString());      
                }
             }            
         }
E

kra, muit obrigado pela ajuda. vlw mesmo.

Criado 14 de maio de 2007
Ultima resposta 14 de mai. de 2007
Respostas 2
Participantes 2