Le 02/02/2010 11:24, Sigrid LEHUTA a écrit :
Hello, Salut, on a rencontré un probleme récement à propos de l'odre des métiers et des stratégies dans différentes bases. Du coup j airais quelques questions. Voila la situation : En fait l une de nos regles de gestion necessite de charger des coefficients pour chaque métier et strategie à partir de fichiers csv. On avait donc préalablement fait afficher une liste des métiers de la base dans les logs pour savoir dans quel ordre ils étaient rangés, dans quel ordre ils apparaiseent quand on boucle dessus et ranger nos coefficients dans le même ordre dans le csv. - du coup premiere question : d'où vient cet ordre ? par quoi est il déterminé ? Ensuite en voulant utiliser la règle de gestion sur une autre base on s est aperçus que l ordre avait changé. Pourtant cette base avait ete créée a partir de la précédente (par une copie). - du coup on se demande comment ca se fait que l ordre des métiers ait été modifié ?
Finalement pour éviter les problèmes il faudrait que nous chargions nos tableaux de coefficients en s affranchissant de cet ordre. Auiriez vous une idee d un moyen rapide et efficace pour le faire (j ai peur de faire 1000 lignes de code moche, quand 5 jolies suffiraient ;-) ) ? (j ai mis la regle en pj et je suis dispo pour en discuter quand vous voulez) En effet, 1000 lignes, c'est un peux dur, mais j'ai peut être trouvé quelque chose.
mesStrategies = new HashMap<String, Strategy>(); for(Strategy str : allStrategies) { mesStrategies.put(str.getName(), str); } mesStrategies.remove("Espagnols"); Ensuite, tu l'utilise de cette façon : for(Strategy str : mesStrategies.values()){ Si le soucis, se trouve là, c'est qu'une HashMap ne te garanties aucun ordre. http://download.java.net/jdk7/docs/api/java/util/HashMap.html : This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time. Le mieux dans ce cas, est d'utiliser une SortedMap(interface) et son implémentation(TreeMap) du package java.util qui te garantie un ordre,
Au début, tu déclares une map de stratégies de cette façon : par défaut trié suivant l'ordre des clés, les noms de stratégie (alphabétiquement et dépendant de la casse).
Merci d'avance de vos réponses. N'hésites pas si ce n'est pas ça. Sigrid -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com