package org.bndtools.utils.eclipse;
import java.util.Comparator;
import org.eclipse.core.runtime.IConfigurationElement;
public class CategorisedConfigurationElementComparator implements Comparator<IConfigurationElement> {
private final boolean descending;
public CategorisedConfigurationElementComparator(boolean descending) {
this.descending = descending;
}
@Override
public int compare(IConfigurationElement e1, IConfigurationElement e2) {
ConfigurationElementCategory c1 = ConfigurationElementCategory.parse(e1.getAttribute("category"));
ConfigurationElementCategory c2 = ConfigurationElementCategory.parse(e2.getAttribute("category"));
int diff = c1.compareTo(c2);
if (diff == 0) {
int p1 = getPriority(e1);
int p2 = getPriority(e2);
diff = p1 - p2;
if (descending)
diff *= -1;
}
return diff;
}
private static int getPriority(IConfigurationElement elem) {
String string = elem.getAttribute("priority");
if (string == null)
string = "0";
int number;
try {
number = Integer.parseInt(string);
} catch (NumberFormatException e) {
number = 0;
}
return number;
}
}