|
6 | 6 | import java.util.Calendar; |
7 | 7 | import java.util.Date; |
8 | 8 | import java.util.Set; |
| 9 | + |
| 10 | +import org.apache.commons.lang3.StringUtils; |
| 11 | + |
9 | 12 | import javax.persistence.Basic; |
10 | 13 | import javax.persistence.Column; |
11 | | - |
12 | 14 | import javax.persistence.ElementCollection; |
13 | 15 | import javax.persistence.Entity; |
14 | 16 | import javax.persistence.GeneratedValue; |
|
26 | 28 | @Entity |
27 | 29 | @Table(name="users", uniqueConstraints=@UniqueConstraint(columnNames={"email","apiKey"})) |
28 | 30 | @NamedQueries ({ |
29 | | - @NamedQuery (name = "User.findAllUsers", query = "SELECT u FROM User u ORDER BY u.lastName"), |
| 31 | + @NamedQuery (name = "User.findAllUsers", query = "SELECT u FROM User u ORDER BY lower(u.lastName), lower(u.firstName)"), |
30 | 32 | @NamedQuery (name = "User.findUser", query = "SELECT u FROM User u WHERE u.email=lower(:email)") |
31 | 33 | }) |
32 | 34 | public class User implements Serializable { |
@@ -95,6 +97,9 @@ public User(String email, String password, String apiKey, String confirmationCod |
95 | 97 | @ElementCollection |
96 | 98 | private Set<String> pendingRoles = null; |
97 | 99 |
|
| 100 | + private transient String displayName; |
| 101 | + private transient String displayNameLastnameFirst; |
| 102 | + |
98 | 103 | /** |
99 | 104 | * Do NOT output this on JSON Object requests. |
100 | 105 | * @return the Password |
@@ -397,4 +402,63 @@ public boolean hasRole(String role) { |
397 | 402 | public boolean hasRoles() { |
398 | 403 | return (null!=roles); |
399 | 404 | } |
| 405 | + |
| 406 | + /** |
| 407 | + * Get a User's full display name in "First Last" format. |
| 408 | + */ |
| 409 | + public String getDisplayName() { |
| 410 | + this.displayName = getFullName(false); |
| 411 | + return this.displayName; |
| 412 | + } |
| 413 | + |
| 414 | + /** |
| 415 | + * Get a User's full display name in "Last, First" format. |
| 416 | + */ |
| 417 | + public String getDisplayNameLastnameFirst() { |
| 418 | + this.displayNameLastnameFirst = getFullName(true); |
| 419 | + return this.displayNameLastnameFirst; |
| 420 | + } |
| 421 | + |
| 422 | + /** |
| 423 | + * Get a User's full display name from First/Last values. |
| 424 | + * |
| 425 | + * @param lastnameFirst the boolean that controls if Last Name should be listed |
| 426 | + * first |
| 427 | + */ |
| 428 | + private String getFullName(boolean lastnameFirst) { |
| 429 | + String fullName = ""; |
| 430 | + |
| 431 | + boolean hasFirstName = StringUtils.isNotBlank(getFirstName()); |
| 432 | + boolean hasLastName = StringUtils.isNotBlank(getLastName()); |
| 433 | + |
| 434 | + String part1 = ""; |
| 435 | + String part2 = ""; |
| 436 | + |
| 437 | + if (lastnameFirst) { |
| 438 | + if (hasLastName) |
| 439 | + part1 = getLastName().trim(); |
| 440 | + if (hasFirstName) |
| 441 | + part2 = getFirstName().trim(); |
| 442 | + } else { |
| 443 | + if (hasLastName) |
| 444 | + part2 = getLastName().trim(); |
| 445 | + if (hasFirstName) |
| 446 | + part1 = getFirstName().trim(); |
| 447 | + } |
| 448 | + |
| 449 | + boolean hasPart1 = StringUtils.isNotBlank(part1); |
| 450 | + boolean hasPart2 = StringUtils.isNotBlank(part2); |
| 451 | + |
| 452 | + fullName += part1; |
| 453 | + |
| 454 | + if (lastnameFirst && hasPart1 && hasPart2) |
| 455 | + fullName += ","; |
| 456 | + |
| 457 | + if (hasPart1 && hasPart2) |
| 458 | + fullName += " "; |
| 459 | + |
| 460 | + fullName += part2; |
| 461 | + |
| 462 | + return fullName; |
| 463 | + } |
400 | 464 | } |
0 commit comments