compareToVersionName method
int
compareToVersionName(
- String newVersionName
)
Implementation
int compareToVersionName(String newVersionName) {
String oldVersionName = mxText;
int res = 0;
List<String> oldNumbers = oldVersionName.split('.');
List<String> newNumbers = newVersionName.split('.');
// To avoid IndexOutOfBounds
int maxIndex = (oldNumbers.length < newNumbers.length)
? oldNumbers.length
: newNumbers.length;
for (int i = 0; i < maxIndex; i++) {
int oldVersionPart = int.parse(oldNumbers[i]);
int newVersionPart = int.parse(newNumbers[i]);
if (oldVersionPart < newVersionPart) {
res = -1;
break;
} else if (oldVersionPart > newVersionPart) {
res = 1;
break;
}
}
// If versions are the same so far, but they have different length...
if (res == 0 && oldNumbers.length != newNumbers.length) {
res = (oldNumbers.length > newNumbers.length) ? 1 : -1;
//check if remaining parts are all zeros.
if (oldNumbers.length > newNumbers.length) {
for (int i = maxIndex; i < oldNumbers.length; i++) {
if (int.parse(oldNumbers[i]) != 0) {
return 1; //old version is greater
}
}
return 0; // All remaining parts of oldVersion are 0
} else {
for (int i = maxIndex; i < newNumbers.length; i++) {
if (int.parse(newNumbers[i]) != 0) {
return -1; //newVersion is greater
}
}
return 0; // All remaining parts of newVersion are 0
}
}
return res;
}