analyseWriter/src/baseEvaluations/trierParDateDecroissanteLaB...

72 lines
2.8 KiB
Java

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<node> evaluations = commandes.evaluationsBase.retourneEnfantsByName("evaluation", new ArrayList<node>());
HashMap<Date, Integer> dateDictionary = new HashMap<Date, Integer>();
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<Map.Entry<Date, Integer>> list = new ArrayList<Map.Entry<Date, Integer>>(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<Date, Integer> sortedDateDictionary = new LinkedHashMap<Date, Integer>();
for (Map.Entry<Date, Integer> entry : list) {
sortedDateDictionary.put(entry.getKey(), entry.getValue());
}
//Parcourir
node nodeTemporaire = new node();
nodeTemporaire.setNomElt("temporaire");
int j=0;
for (Map.Entry<Date, Integer> 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));
}
}
}