package baseEvaluations; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import MEPTL.commandes; import cXML.node; public class trierParDateDecroissanteLaBase { /** * Tri la base des évaluation par date décroisante */ public trierParDateDecroissanteLaBase(){ ArrayList evaluations = commandes.evaluationsBase.retourneEnfantsByName("evaluation", new ArrayList()); HashMap dateDictionary = new HashMap(); Date dateEvaluationCharger = new Date(); if(commandes.evaluationChargeEnMemoire!=null) { dateEvaluationCharger = calcul.formatDateWriter.DateLibreOffice(commandes.evaluationChargeEnMemoire.getAttributs().get("date")); System.out.println("dateEvaluationCharger="+dateEvaluationCharger); } for(int i = 0 ; i < evaluations.size();i++) { dateDictionary.put(calcul.formatDateWriter.DateLibreOffice(evaluations.get(i).getAttributs().get("date")),i); } // Convertir le HashMap en liste pour pouvoir trier les éléments List> list = new ArrayList>(dateDictionary.entrySet()); // Trier la liste par ordre décroissant des dates Collections.sort(list, Collections.reverseOrder(Map.Entry.comparingByKey())); // Créer un nouveau LinkedHashMap pour stocker les éléments triés LinkedHashMap sortedDateDictionary = new LinkedHashMap(); for (Map.Entry entry : list) { sortedDateDictionary.put(entry.getKey(), entry.getValue()); } //Parcourir node nodeTemporaire = new node(); nodeTemporaire.setNomElt("temporaire"); int j=0; for (Map.Entry entry : sortedDateDictionary.entrySet()) { System.out.println("Key : " + entry.getKey() + " | Value : " + entry.getValue()); nodeTemporaire.getNodes().add(j,commandes.evaluationsBase.getNodes().get(entry.getValue())); if(commandes.evaluationChargeEnMemoire!=null) { if( (entry.getKey().equals(dateEvaluationCharger)) ) { if(commandes.evaluationsBase.getNodes().get(entry.getValue()).getAttributs().get("name").equals(commandes.NameEvaluationCharger)) { commandes.IndexEvaluationCharger = j; } } } j++; } // ajoute à la base commandes.evaluationsBase.supprimeTousLesEnfants(); for(int i = 0 ; i < nodeTemporaire.getNodes().size();i++) { commandes.evaluationsBase.getNodes().add(nodeTemporaire.getNodes().get(i)); } } }