package dev.ukanth.ufirewall.util; import java.util.Comparator; import dev.ukanth.ufirewall.Api; /** * Created by ukanth on 11/8/15. */ public class PackageComparator implements Comparator<Api.PackageInfoData> { @Override public int compare(Api.PackageInfoData o1, Api.PackageInfoData o2) { if (o1.firstseen != o2.firstseen) { return (o1.firstseen ? -1 : 1); } boolean o1_selected = o1.selected_3g || o1.selected_wifi || o1.selected_roam || o1.selected_vpn || o1.selected_lan; boolean o2_selected = o2.selected_3g || o2.selected_wifi || o2.selected_roam || o2.selected_vpn || o2.selected_lan; if (o1_selected == o2_selected) { switch (G.sortBy()) { case "s0": return String.CASE_INSENSITIVE_ORDER.compare(o1.names.get(0).toString(),o2.names.get(0).toString()); case "s1": return (o1.installTime > o2.installTime) ? -1: (o1.installTime < o2.installTime) ? 1 : 0; case "s2": return (o2.uid > o1.uid) ? -1: (o2.uid < o1.uid) ? 0 : 1; } } if (o1_selected) return -1; return 1; } }