RevisionInfo: Simplify comparator for sorting by number

"Spread out" each of the non-edit numbers so there is a gap in
between each, and map the edit numbers into that gap.

Change-Id: I24a0bff47c8a1107ee1f9e41b770392fb81e2d92
This commit is contained in:
Dave Borowitz
2014-09-09 14:43:11 +02:00
parent 404cc04a97
commit 3c36f5249e

View File

@@ -254,27 +254,15 @@ public class ChangeInfo extends JavaScriptObject {
public final native JsArray<WebLinkInfo> web_links() /*-{ return this.web_links; }-*/;
public static void sortRevisionInfoByNumber(JsArray<RevisionInfo> list) {
final int parent_number = findEditParent(list);
final int editParent = findEditParent(list);
Collections.sort(Natives.asList(list), new Comparator<RevisionInfo>() {
@Override
public int compare(RevisionInfo a, RevisionInfo b) {
int a_number = a._number();
int b_number = b._number();
if (a_number == 0) {
if (b_number == parent_number + 1) {
a_number = parent_number;
} else {
a_number = parent_number + 1;
}
}
if (b_number == 0) {
if (a_number == parent_number + 1) {
b_number = parent_number;
} else {
b_number = parent_number + 1;
}
}
return a_number - b_number;
return num(a) - num(b);
}
private int num(RevisionInfo r) {
return !r.is_edit() ? 2 * (r._number() - 1) + 1 : 2 * editParent;
}
});
}