13
13
*/
14
14
package org .openmrs .util ;
15
15
16
- import java .util .Comparator ;
17
-
18
16
import org .openmrs .Person ;
19
17
import org .openmrs .PersonName ;
20
18
19
+ import java .util .Comparator ;
20
+
21
21
/**
22
22
* A simple person comparator for sorting persons by name. Sorts names based on the following
23
23
* precedence: FamilyName, FamilyName2, GivenName, MiddleName, FamilyNamePrefix, FamilyNameSuffix
@@ -40,6 +40,7 @@ public int compare(Person person1, Person person2) {
40
40
* @should return negative if personName for person1 comes before that of person2
41
41
* @should return positive if personName for person1 comes after that of person2
42
42
* @should return zero if the givenName middleName and familyName match
43
+ * @should be case insensitive
43
44
* @since 1.8
44
45
*/
45
46
public static int comparePersonsByName (Person person1 , Person person2 ) {
@@ -55,26 +56,34 @@ public static int comparePersonsByName(Person person1, Person person2) {
55
56
PersonName name1 = person1 .getPersonName ();
56
57
PersonName name2 = person2 .getPersonName ();
57
58
58
- int ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyName (), name2 .getFamilyName ());
59
+ int ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyName () != null ? name1 .getFamilyName ().toLowerCase ()
60
+ : null , name2 .getFamilyName () != null ? name2 .getFamilyName ().toLowerCase () : null );
59
61
60
62
if (ret == 0 ) {
61
- ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyName2 (), name2 .getFamilyName2 ());
63
+ ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyName2 () != null ? name1 .getFamilyName ().toLowerCase ()
64
+ : null , name2 .getFamilyName2 () != null ? name2 .getFamilyName2 ().toLowerCase () : null );
62
65
}
63
66
64
67
if (ret == 0 ) {
65
- ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getGivenName (), name2 .getGivenName ());
68
+ ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getGivenName () != null ? name1 .getGivenName ().toLowerCase ()
69
+ : null , name2 .getGivenName () != null ? name2 .getGivenName ().toLowerCase () : null );
66
70
}
67
71
68
72
if (ret == 0 ) {
69
- ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getMiddleName (), name2 .getMiddleName ());
73
+ ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getMiddleName () != null ? name1 .getMiddleName ().toLowerCase ()
74
+ : null , name2 .getMiddleName () != null ? name2 .getMiddleName ().toLowerCase () : null );
70
75
}
71
76
72
77
if (ret == 0 ) {
73
- ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyNamePrefix (), name2 .getFamilyNamePrefix ());
78
+ ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyNamePrefix () != null ? name1 .getFamilyNamePrefix ()
79
+ .toLowerCase () : null , name2 .getFamilyNamePrefix () != null ? name2 .getFamilyNamePrefix ().toLowerCase ()
80
+ : null );
74
81
}
75
82
76
83
if (ret == 0 ) {
77
- ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyNameSuffix (), name2 .getFamilyNameSuffix ());
84
+ ret = OpenmrsUtil .compareWithNullAsGreatest (name1 .getFamilyNameSuffix () != null ? name1 .getFamilyNameSuffix ()
85
+ .toLowerCase () : null , name2 .getFamilyNameSuffix () != null ? name2 .getFamilyNameSuffix ().toLowerCase ()
86
+ : null );
78
87
}
79
88
80
89
return ret ;
0 commit comments