package jadx.gui.update;
public class VersionComparator {
private VersionComparator() {
}
public static int checkAndCompare(String str1, String str2) {
try {
return compare(clean(str1), clean(str2));
} catch (NumberFormatException e) {
return -2;
}
}
private static String clean(String str) {
String result = str.trim().toLowerCase();
if (result.charAt(0) == 'v') {
result = result.substring(1);
}
return result;
}
public static int compare(String str1, String str2) {
String[] s1 = str1.split("\\.");
int l1 = s1.length;
String[] s2 = str2.split("\\.");
int l2 = s2.length;
int i = 0;
// skip equals parts
while (i < l1 && i < l2) {
if (!s1[i].equals(s2[i])) {
break;
}
i++;
}
// compare first non-equal ordinal number
if (i < l1 && i < l2) {
return Integer.valueOf(s1[i]).compareTo(Integer.valueOf(s2[i]));
}
boolean checkFirst = l1 > l2;
boolean zeroTail = isZeroTail(checkFirst ? s1 : s2, i);
if (zeroTail) {
return 0;
}
return checkFirst ? 1 : -1;
}
private static boolean isZeroTail(String[] arr, int pos) {
for (int i = pos; i < arr.length; i++) {
String s = arr[i];
if (Integer.valueOf(s) != 0) {
return false;
}
}
return true;
}
}