in src/main/java/org/jetbrains/plugins/spotbugs/gui/tree/model/Grouper.java [79:207]
public void group(final T comparable, final List<Comparator<T>> comparators) {
int depth = -1;
int index = -1;
int j = 0;
for (int i = 0; i < comparators.size(); i++) {
depth = -1;
j = i;
final List<T> groups = _callback.availableGroups(i, comparable);
final Comparator<T> tComparator = comparators.get(i);
Collections.sort(groups, tComparator);
index = Collections.binarySearch(groups, comparable, tComparator);
// FIXME make dynamic
if (i == 0 && index < 0) { // if top 1st level group does not exists break iteration
depth = i;
break;
} else if (i == 1 && index < 0) { // if 2nd level group does not exists break iteration
depth = i;
break;
} else if (i == 2 && index < 0) { // if 3rd level group does not exists break iteration
depth = i;
break;
} else if (i == 3 && index < 0) { // if 4th level group does not exists break iteration
depth = i;
break;
} else if (i == 4 && index < 0) { // if 5th level group does not exists break iteration
depth = i;
break;
} else { // addToGroup
//parentIndex = index;
depth = i;
}
}
/*System.err.println("\n===OOOPS \nindex: " + index + " level: " + level + " i: " + j);
System.err.println("Classname: " + ((Bug) comparable).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
System.err.println("Category: " + I18N.instance().getBugCategoryDescription(((Bug) comparable).getInstance().getBugPattern().getCategory()));
System.err.println("Type: " + I18N.instance().getBugTypeDescription(((Bug) comparable).getInstance().getBugPattern().getAbbrev()));
System.err.println("Short: " + ((Bug) comparable).getInstance().getBugPattern().getShortDescription());*/
int parentIndex = -1;
if (index < 0 && depth == 0) { // top level group ## && level == -1
//System.err.println("\n= StartGroup =\nindex: " + index + " depth: " + depth + " i: " + j);
//System.err.println("Classname: " + ((Bug) comparable).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
/*System.err.println("Category: " + I18N.instance().getBugCategoryDescription(((Bug) comparable).getInstance().getBugPattern().getCategory()));
System.err.println("Type: " + I18N.instance().getBugTypeDescription(((Bug) comparable).getInstance().getBugPattern().getAbbrev()));
System.err.println("Short: " + ((Bug) comparable).getInstance().getBugPattern().getShortDescription());*/
//final T parent = groups.get(index);
_callback.startGroup(comparable, depth);
} else if (index < 0 && depth > 0) { // x level group
/*
final Comparator<T> c = comparators.get(0);// depth-1
Collections.sort(groups, c);
parentIndex = Collections.binarySearch(groups, comparable, c);
// FIXME: multilevel comparator: by depth-comparators.size(); for (int y = depth; y < comparators.size(); y++) {
final T parent = groups.get(parentIndex);
System.err.println("Parnet: " + parent);
_callback.startSubGroup(depth, comparable, parent);*/
final Comparator<T> c = _callback.currentGroupComparatorChain(depth - 1);
final List<T> groups = _callback.availableGroups(depth - 1, comparable);
Collections.sort(groups, c); // FIXME: comparators.get(depth-1) ???
parentIndex = Collections.binarySearch(groups, comparable, comparators.get(depth - 1)); // FIXME: comparators.get(depth-1) ???
if (LOGGER.isDebugEnabled()) {
System.err.println("\n== StartSubGroup ==\nindex: " + index + " depth: " + depth + " i: " + j);
System.err.println("Classname: " + ((Bug) comparable).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
System.err.println("PAckage: " + ((Bug) comparable).getInstance().getPrimaryClass().getPackageName());
System.err.println("Message: " + ((Bug) comparable).getInstance().getMessage());
System.err.println("Category: " + I18N.instance().getBugCategoryDescription(((Bug) comparable).getInstance().getBugPattern().getCategory()));
System.err.println("Type: " + I18N.instance().getBugTypeDescription(((Bug) comparable).getInstance().getBugPattern().getAbbrev()));
System.err.println("Short: " + ((Bug) comparable).getInstance().getBugPattern().getShortDescription());
}
final T parent = groups.get(parentIndex);
if (LOGGER.isDebugEnabled()) {
System.err.println("ParentIndex: " + parentIndex);
System.err.println("ParentClassname: " + ((Bug) parent).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
System.err.println("ParentCategory: " + I18N.instance().getBugCategoryDescription(((Bug) parent).getInstance().getBugPattern().getCategory()));
System.err.println("ParentType: " + I18N.instance().getBugTypeDescription(((Bug) parent).getInstance().getBugPattern().getAbbrev()));
System.err.println("PArentShort: " + ((Bug) parent).getInstance().getBugPattern().getShortDescription());
}
_callback.startSubGroup(depth, comparable, parent);
} else if (index >= 0) {
if (LOGGER.isDebugEnabled()) {
System.err.println("\n#### AddToGroup");
System.err.println("=== index: " + index + " depth: " + depth + " i: " + j);
System.err.println("Classname: " + ((Bug) comparable).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
System.err.println("Classname: " + ((Bug) comparable).getInstance().getPrimaryClass().getClassName());
System.err.println("Category: " + I18N.instance().getBugCategoryDescription(((Bug) comparable).getInstance().getBugPattern().getCategory()));
System.err.println("Type: " + I18N.instance().getBugTypeDescription(((Bug) comparable).getInstance().getBugPattern().getAbbrev()));
System.err.println("Short: " + ((Bug) comparable).getInstance().getBugPattern().getShortDescription());
System.err.println("PriorityAbb: " + ((Bug) comparable).getInstance().getPriorityAbbreviation());
System.err.println("PriorityString: " + ((Bug) comparable).getInstance().getPriorityString());
System.err.println("PriorityTypeString: " + ((Bug) comparable).getInstance().getPriorityTypeString());
}
final Comparator<T> c = _callback.currentGroupComparatorChain(depth); // FIXME: -1 ???
final List<T> groups = _callback.availableGroups(depth, comparable); // FIXME: -1 ???
Collections.sort(groups, c); // FIXME: -1 ???
parentIndex = Collections.binarySearch(groups, comparable, c); // FIXME: -1 ???
final T parent = groups.get(parentIndex);
if (LOGGER.isDebugEnabled()) {
System.err.println("ParentIndex: " + parentIndex);
System.err.println("ParentClassname: " + ((Bug) parent).getInstance().getPrimaryClass().getClassName().split("\\$")[0]);
System.err.println("ParentCategory: " + I18N.instance().getBugCategoryDescription(((Bug) parent).getInstance().getBugPattern().getCategory()));
System.err.println("ParentType: " + I18N.instance().getBugTypeDescription(((Bug) parent).getInstance().getBugPattern().getAbbrev()));
System.err.println("PArentShort: " + ((Bug) parent).getInstance().getBugPattern().getShortDescription());
}
_callback.addToGroup(depth, comparable, parent);
}
}