From eb3dcf334a72a750c11dea7ce6141dd0f6a5ecf3 Mon Sep 17 00:00:00 2001 From: Raphael Moll Date: Thu, 22 Apr 2010 11:34:36 -0700 Subject: Reorder packages in SDK Updater SDK Bug http://b.android.com/7920 Change-Id: I94946beda47067ff93ce288b36d525f8fb1840f2 --- .../sdklib/internal/repository/Package.java | 32 +++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java index d03c9a9..1608887 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java @@ -486,10 +486,11 @@ public abstract class Package implements IDescription, Comparable { * - Tools. * - Docs. * - Platform n preview - * - Add-on based on n preview * - Platform n - * - Add-on based on n * - Platform n-1 + * - Samples packages. + * - Add-on based on n preview + * - Add-on based on n * - Add-on based on n-1 * - Extra packages. */ @@ -503,26 +504,31 @@ public abstract class Package implements IDescription, Comparable { * Computes the score for each package used by {@link #compareTo(Package)}. */ private int sortingScore() { - int type = 0; - int rev = getRevision(); - int offset = 0; + // up to 31 bits (for signed stuff) + int type = 0; // max type=5 => 3 bits + int rev = getRevision(); // 12 bits... 4095 + int offset = 0; // 16 bits... if (this instanceof ToolPackage) { - type = 3; + type = 5; } else if (this instanceof DocPackage) { + type = 4; + } else if (this instanceof PlatformPackage) { + type = 3; + } else if (this instanceof SamplePackage) { type = 2; - } else if (this instanceof PlatformPackage || this instanceof AddonPackage || - this instanceof SamplePackage) { + } else if (this instanceof AddonPackage) { type = 1; - AndroidVersion v = ((IPackageVersion) this).getVersion(); - offset = v.getApiLevel(); - offset = offset * 2 + (v.isPreview() ? 1 : 0); - offset = offset * 2 + ((this instanceof AddonPackage) ? 0 : - ((this instanceof SamplePackage) ? 1 : 2)); } else { // extras and everything else type = 0; } + if (this instanceof IPackageVersion) { + AndroidVersion v = ((IPackageVersion) this).getVersion(); + offset = v.getApiLevel(); + offset = offset * 2 + (v.isPreview() ? 1 : 0); + } + int n = (type << 28) + (offset << 12) + rev; return 0 - n; } -- cgit v1.1