public MaillesParEspece(Map<String, String> info) throws ParseException { Espece espece = Espece.find.byId(Integer.parseInt(info.get("espece"))); Groupe sous_groupe = Groupe.find.byId(Integer.parseInt(info.get("sous_groupe"))); Groupe groupe = Groupe.find.byId(Integer.parseInt(info.get("groupe"))); StadeSexe stade_sexe = StadeSexe.find.byId(Integer.parseInt(info.get("stade"))); List<StadeSexe> stades_sexes; if (stade_sexe != null) { stades_sexes = new ArrayList<StadeSexe>(); stades_sexes.add(stade_sexe); stades_sexes.addAll(stade_sexe.getStadeSexeFilsPourTelGroupe(groupe)); } else { stades_sexes = StadeSexe.findAll(); } Calendar date1 = Calculs.getDataDate1(info); Calendar date2 = Calculs.getDataDate2(info); List<Espece> especesATraiter; if (espece != null) { especesATraiter = new ArrayList<Espece>(); especesATraiter.add(espece); } else if (sous_groupe != null) { especesATraiter = sous_groupe.getEspecesInThis(); } else if (groupe != null) { especesATraiter = groupe.getAllEspecesInThis(); } else { especesATraiter = Espece.findAll(); } mailles_par_espece = new HashMap<Espece, HashMap<UTMS, Integer>>(); for (Espece especeATraiter : especesATraiter) { HashMap<UTMS, Integer> nbObservation = new HashMap<UTMS, Integer>(); for (UTMS utm : UTMS.findAll()) { Integer complements = InformationsComplementaires.find .where() .eq( "informations_complementaires_observation.observation_validee", Observation.VALIDEE) .between( "informations_complementaires_observation.observation_fiche.fiche_date", date1.getTime(), date2.getTime()) .eq("informations_complementaires_observation.observation_fiche.fiche_utm", utm) .in("informations_complementaires_stade_sexe", stades_sexes) .eq("informations_complementaires_observation.observation_espece", especeATraiter) .findRowCount(); nbObservation.put(utm, complements); } mailles_par_espece.put(especeATraiter, nbObservation); } }