/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import java.util.Comparator; public class StringComparator implements Comparator<String> { private boolean caseSensitive; private boolean descending; public StringComparator() { this(true); } public StringComparator(boolean caseSensitive) { this(caseSensitive, false); } public StringComparator(boolean caseSensitive, boolean descending) { this.caseSensitive = caseSensitive; this.descending = descending; } @Override public int compare(String o1, String o2) { int result = compareString(o1, o2); return descending ? -result : result; } protected int compareString(String o1, String o2) { if (o1 != null && o2 != null) { if (caseSensitive) { return o1.compareTo(o2); } else { return o1.compareToIgnoreCase(o2); } } else if (o1 != null) { return 1; } else if (o2 != null) { return -1; } else { return 0; } } }