summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuo Qian <shuoq@google.com>2019-05-07 18:02:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-05-07 18:02:54 +0000
commit70ed8dba68c513ea5e2c60f1b784bc481a81ef82 (patch)
treeea088ca05284788e63c2db8a010043f79c970576
parent5c47b52b93bc84521b8caa9e115ab415ed9f86ac (diff)
parenta686f723a89eddc02f5c5a19626231b43df5d5d2 (diff)
downloadbase-oreo-mr1-iot-release.tar.gz
Merge "Sorting and merge Emergency number better"android-o-mr1-iot-release-1.0.12oreo-mr1-iot-release
-rw-r--r--telephony/java/android/telephony/emergency/EmergencyNumber.java37
1 files changed, 26 insertions, 11 deletions
diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java
index 2d6402d545ae..b144ff761874 100644
--- a/telephony/java/android/telephony/emergency/EmergencyNumber.java
+++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java
@@ -558,6 +558,24 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
} else if (this.getDisplayPriorityScore()
< emergencyNumber.getDisplayPriorityScore()) {
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 {
return 0;
}
@@ -579,13 +597,9 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
if (emergencyNumberList == null) {
return;
}
- Set<EmergencyNumber> mergedEmergencyNumber = new HashSet<>();
+ Set<Integer> duplicatedEmergencyNumberPosition = new HashSet<>();
for (int i = 0; i < emergencyNumberList.size(); i++) {
- // Skip the check because it was merged.
- if (mergedEmergencyNumber.contains(emergencyNumberList.get(i))) {
- continue;
- }
- for (int j = i + 1; j < emergencyNumberList.size(); j++) {
+ for (int j = 0; j < i; j++) {
if (areSameEmergencyNumbers(
emergencyNumberList.get(i), emergencyNumberList.get(j))) {
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.get(i), emergencyNumberList.get(j)));
// 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++) {
- if (mergedEmergencyNumber.contains(emergencyNumberList.get(i))) {
- emergencyNumberList.remove(i--);
+
+ // Remove the marked emergency number in the original list
+ for (int i = emergencyNumberList.size() - 1; i >= 0; i--) {
+ if (duplicatedEmergencyNumberPosition.contains(i)) {
+ emergencyNumberList.remove(i);
}
}
Collections.sort(emergencyNumberList);