Fala pessoal, queria uma ajuda num método onde manipulo alguns objetos Date.
A questão é a seguinte, minha aplicação envolve dados climatológicos, chuva, humidade do solo e etc. Na minha base de dados tenho todos esses dados referentes aos dias em que estes dados foram medidos.
Pois bem, quando o usuário quer coletar dados de chuva, por exemplo, do período de 18/12/2000 a 18/01/2001, o mesmo deve escolher o passo de tempo (horário, minuto, diário, mensal, anual). Se eu escolher horário, e em algum dia que esteja dentro do período que eu especifiquei não existir dados (o que não implica que não choveu, pode ter dado algum outro problema), a aplicação tem que informar -99 ao usuário pra mostrar que não tem aquele dado.
No método abaixo tenta fazer isso, porém no primeiro while, ele nunca entra no if que faz o laço parar.
Eu simplesmente passo para esse método toda a série de dados contidos no banco e a partir daí crio uma nova série de dados com os "-99", nesse while eu crio um novo arrayList com todas as datas referentes ao período passado (indepentente de ter ou não dados no banco) e no segundo while eu armazeno essas datas com seus valores em um TreeMap.
Segue o código:
public static TreeMap formatTimeSerieToHourlyExport(TreeMap<Date, String> timeSerie, Date initialDate, Date finalDate) {
TreeMap<Date, String> result = new TreeMap<Date, String>();
Set<Date> dates = timeSerie.keySet();
// Date initialDate = (Date) dates.toArray()[0];
// Date finalDate = (Date) dates.toArray()[dates.size()-1];
ArrayList<Date> newDates = new ArrayList<Date>();
Date date1 = initialDate;
// Date date1 = new Date();
// date1.setTime(initialDate.getTime());
newDates.add(date1);
Calendar cal = Calendar.getInstance();
while(true){
cal.setTime(date1);
Date date2 = new Date(cal.getTimeInMillis());
cal.add(Calendar.HOUR_OF_DAY,1);
date2.setTime(cal.getTimeInMillis());
newDates.add(date2);
date1.setTime(date2.getTime());
if(date2.compareTo(finalDate)==0) break;
}
Iterator it = newDates.iterator();
while(it.hasNext()){
Date date = (Date) it.next();
if(!dates.contains(date))
result.put(date,"-99");
else
result.put(date, timeSerie.get(date));
}
return result;
}
Abraços