Merge "Sorting and merge Emergency number better" into qt-dev
This commit is contained in:
@@ -558,6 +558,24 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
|||||||
} else if (this.getDisplayPriorityScore()
|
} else if (this.getDisplayPriorityScore()
|
||||||
< emergencyNumber.getDisplayPriorityScore()) {
|
< emergencyNumber.getDisplayPriorityScore()) {
|
||||||
return 1;
|
return 1;
|
||||||
|
} else if (this.getNumber().compareTo(emergencyNumber.getNumber()) != 0) {
|
||||||
|
return this.getNumber().compareTo(emergencyNumber.getNumber());
|
||||||
|
} else if (this.getCountryIso().compareTo(emergencyNumber.getCountryIso()) != 0) {
|
||||||
|
return this.getCountryIso().compareTo(emergencyNumber.getCountryIso());
|
||||||
|
} else if (this.getMnc().compareTo(emergencyNumber.getMnc()) != 0) {
|
||||||
|
return this.getMnc().compareTo(emergencyNumber.getMnc());
|
||||||
|
} else if (this.getEmergencyServiceCategoryBitmask()
|
||||||
|
!= emergencyNumber.getEmergencyServiceCategoryBitmask()) {
|
||||||
|
return this.getEmergencyServiceCategoryBitmask()
|
||||||
|
> emergencyNumber.getEmergencyServiceCategoryBitmask() ? -1 : 1;
|
||||||
|
} else if (this.getEmergencyUrns().toString().compareTo(
|
||||||
|
emergencyNumber.getEmergencyUrns().toString()) != 0) {
|
||||||
|
return this.getEmergencyUrns().toString().compareTo(
|
||||||
|
emergencyNumber.getEmergencyUrns().toString());
|
||||||
|
} else if (this.getEmergencyCallRouting()
|
||||||
|
!= emergencyNumber.getEmergencyCallRouting()) {
|
||||||
|
return this.getEmergencyCallRouting()
|
||||||
|
> emergencyNumber.getEmergencyCallRouting() ? -1 : 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -579,13 +597,9 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
|||||||
if (emergencyNumberList == null) {
|
if (emergencyNumberList == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Set<EmergencyNumber> mergedEmergencyNumber = new HashSet<>();
|
Set<Integer> duplicatedEmergencyNumberPosition = new HashSet<>();
|
||||||
for (int i = 0; i < emergencyNumberList.size(); i++) {
|
for (int i = 0; i < emergencyNumberList.size(); i++) {
|
||||||
// Skip the check because it was merged.
|
for (int j = 0; j < i; j++) {
|
||||||
if (mergedEmergencyNumber.contains(emergencyNumberList.get(i))) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for (int j = i + 1; j < emergencyNumberList.size(); j++) {
|
|
||||||
if (areSameEmergencyNumbers(
|
if (areSameEmergencyNumbers(
|
||||||
emergencyNumberList.get(i), emergencyNumberList.get(j))) {
|
emergencyNumberList.get(i), emergencyNumberList.get(j))) {
|
||||||
Rlog.e(LOG_TAG, "Found unexpected duplicate numbers: "
|
Rlog.e(LOG_TAG, "Found unexpected duplicate numbers: "
|
||||||
@@ -594,14 +608,15 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
|||||||
emergencyNumberList.set(i, mergeSameEmergencyNumbers(
|
emergencyNumberList.set(i, mergeSameEmergencyNumbers(
|
||||||
emergencyNumberList.get(i), emergencyNumberList.get(j)));
|
emergencyNumberList.get(i), emergencyNumberList.get(j)));
|
||||||
// Mark the emergency number has been merged
|
// Mark the emergency number has been merged
|
||||||
mergedEmergencyNumber.add(emergencyNumberList.get(j));
|
duplicatedEmergencyNumberPosition.add(j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Remove the marked emergency number in the orignal list
|
|
||||||
for (int i = 0; i < emergencyNumberList.size(); i++) {
|
// Remove the marked emergency number in the original list
|
||||||
if (mergedEmergencyNumber.contains(emergencyNumberList.get(i))) {
|
for (int i = emergencyNumberList.size() - 1; i >= 0; i--) {
|
||||||
emergencyNumberList.remove(i--);
|
if (duplicatedEmergencyNumberPosition.contains(i)) {
|
||||||
|
emergencyNumberList.remove(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Collections.sort(emergencyNumberList);
|
Collections.sort(emergencyNumberList);
|
||||||
|
|||||||
Reference in New Issue
Block a user