private static class GroupedParameterComparator implements Comparator
{
public int compare(final Object o1, final Object o2)
{
final DrillDownParameter parameter1 = (DrillDownParameter) o1;
final DrillDownParameter parameter2 = (DrillDownParameter) o2;
if (parameter1 == null && parameter2 == null)
{
return 0;
}
if (parameter1 == null)
{
return -1;
}
if (parameter2 == null)
{
return 1;
}
final DrillDownParameter.Type type1 = parameter1.getType();
final DrillDownParameter.Type type2 = parameter2.getType();
final int compareType = type1.compareTo(type2);
if (compareType != 0)
{
return compareType;
}
if (parameter1.getPosition() < parameter2.getPosition())
{
return -1;
}
if (parameter1.getPosition() > parameter2.getPosition())
{
return 1;
}
return parameter1.getName().compareTo(parameter2.getName());
}