package mekhq.gui.sorter; import java.text.DecimalFormat; import java.util.Comparator; /** * A comparator for numbers that have been formatted with DecimalFormat * @author Jay Lawson * */ public class FormattedNumberSorter implements Comparator<String> { private static final String PLUS_SIGN = "+"; //$NON-NLS-1$ private static final DecimalFormat FORMAT = new DecimalFormat(); @Override public int compare(String s0, String s1) { // Cut off leading "+" sign if there if(s0.startsWith(PLUS_SIGN)) { s0 = s0.substring(1); } if(s1.startsWith(PLUS_SIGN)) { s1 = s1.substring(1); } // Empty cells are smaller than all numbers if((s0.length() == 0) && (s1.length() == 0)) { return 0; } if(s0.length() == 0) { return -1; } if(s1.length() == 0) { return 1; } //lets find the weight class integer for each name long l0 = 0; try { l0 = FORMAT.parse(s0).longValue(); } catch (java.text.ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } long l1 = 0; try { l1 = FORMAT.parse(s1).longValue(); } catch (java.text.ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Long.compare(l0, l1); } }