Ajuda para preencher consulta com agrupamento

0 respostas
F

Senhores,

Como estou começando a mexer com web agora , estou precisando de uma ajuda para apresentar o Layout a seguir em uma pagina JSP.

Hoje o Layout está assim:

Metrica | Periodo | Resultado
I1 | 01/02 | 1%
I1 | 02/02 | 8%
I11| 01/02 | 0%
I11| 02/02 | 10%

o que eu preciso é isso:

01/02 02/02
I1 | 1% | 8%
I11| 0% | 10%

Segue os codigos que estou utlizando:

No JSP:

<table border="1">
 	<tr>
 		<td>Métrica</td>
 		<td>Periodo</td>
 		<td>Valor</td>
 	</tr>
 	<logic:iterate id="metricaVo" name="metricaConData">
 	 <tr bgcolor="#CCCCCC">
       <td align="right"><bean:write name="metricaVo" property="metrica"/></td>
       <td align="right"><bean:write name="metricaVo" property="periodo"/></td>
       <td align="right">
       <font color= <%((MetricaVo)metricaVo).getLimiteCor(); %> /&gt
          	&lt;bean:write name="metricaVo" property="metricaValue" format="#,##0.00%"/&gt;
        	</font>
       &lt;/td&gt;
     &lt;/tr&gt;
     &lt;/logic:iterate&gt;
 &lt;/table&gt;
 &lt;/center&gt;

No Bean:

ArrayList retorno = new ArrayList();
 		MetricaVo[] metricaRetorno = null;
 		TreeMap metricaMap = new TreeMap();
 		SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
 		
 		Date tempDate = dataIni;
 		GregorianCalendar cal = new GregorianCalendar();
 
 		for (int i=0; i&lt;metricaList.length;i++)
 		{
 
 		
 			DaoFactory df = DaoFactory.getDaoFactory(DaoFactory.DATASOURCE);
 		
 			try{
 				//criando daos de acesso
 				IdDadosDao idDadosdao = df.getIdDadosDao(new String[]{});
 				IdMetricasDao idMetricasDao = df.getIdMetricasDao(new String[]{});
 			
 				String[] ids = null;
 				//pesquisa os IDs da métrica
 				 ids = idMetricasDao.getMetricaIds(metricaList[i]);
 				 
 				 System.out.println(metricaList[i]);//retirar essa linha
 			
 			
 				 //pesquisa os valores dos IDs em um período
 				 IndicadorVo[] idLista = 
 					 idDadosdao.getIdMetricaData(dataIni, dataFin, ids);
 			
 				 for (int y = 0; y &gt;&lt idLista.length; y++) {
 					 String strDate = idLista[y].getPeriodo();
 					 cal.set(Integer.parseInt(strDate.substring(0, 4)), 
 							 	Integer.parseInt(strDate.substring(4, 6)) - 1, 
 								Integer.parseInt(strDate.substring(6, 8)));
 					MetricaVo vo = (MetricaVo)metricaMap.get(cal.getTime());
 					if (vo == null){
 						 vo = idMetricasDao.getMetrica(metricaList[i]);
 					}
 
 					 double tempValor = 0;
 					 if (Double.isNaN(vo.getIdValor(idLista[y].getId()))){
 						 tempValor = idLista[y].getValor();
 					 } else {
 						 tempValor = idLista[y].getValor() + vo.getIdValor(idLista[y].getId());
 					 }
 					 vo.setPeriodo(formatter.format(cal.getTime()));
 					 vo.putIdValor(idLista[y].getId(), tempValor);
 					 metricaMap.put(cal.getTime(), vo);
 					 
 				 }
 				 
 				 Iterator it = metricaMap.entrySet().iterator();
 				 while (it.hasNext()){
 					 Entry entry = (Entry)it.next();
 					 retorno.add((MetricaVo)entry.getValue());
 				 }
 				 
 				 metricaMap = new TreeMap();
 			
 			} catch (DaoException daoEx){
 				throw new TechnicalException("Ocorreu uma exceção ao acessar o banco de dados: ", daoEx);
 			}
 			
 		}	
 
 		return (retorno);

Já recebi algumas orientações que devo fazer 3 iterações para fazer esse Layout.

Agora minha duvida é a seguinte, essas iterações vou fazer no JSP?
Se sim, como farei isso?

Obrigado,

Fabiano

Criado 14 de novembro de 2006
Respostas 0
Participantes 1