/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.gui.settings;
import java.util.Comparator;
import java.util.StringTokenizer;
/**
* Classe utuilitaire permettant de trier les �l�ment de l'arbre selon leur seelveCode.
*/
public class SleeveCodeComparator implements Comparator {
public int compare(Object o1, Object o2) {
String sleeveCode1 = (String)o1;
String sleeveCode2 = (String)o2;
int caret1 = sleeveCode1.indexOf("-");
int caret2 = sleeveCode2.indexOf("-");
int level1 = Integer.parseInt(sleeveCode1.substring(0, caret1));
int level2 = Integer.parseInt(sleeveCode2.substring(0, caret2));
if (level1 == level2) {
String path1 = sleeveCode1.substring(caret1 + 1);
String path2 = sleeveCode2.substring(caret2 + 1);
StringTokenizer stknzr1 = new StringTokenizer(path1, ".");
StringTokenizer stknzr2 = new StringTokenizer(path2, ".");
while (stknzr1.hasMoreTokens()) {
int pos1 = Integer.parseInt(stknzr1.nextToken());
int pos2 = Integer.parseInt(stknzr2.nextToken());
if (pos1 != pos2) {
return pos1 - pos2;
}
}
return 0;
}
else {
return level1 - level2;
}
}
}