java/code/src/com/redhat/rhn/common/db/datasource/xml/User_queries.xml | 27
+++++++---
java/code/src/com/redhat/rhn/common/util/DynamicComparator.java | 8 +-
java/code/src/com/redhat/rhn/frontend/dto/UserOverview.java | 18 ++++++
java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp | 1
java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp | 3 -
java/code/webapp/WEB-INF/pages/common/fragments/user/userlist_columns.jspf | 1
6 files changed, 45 insertions(+), 13 deletions(-)
New commits:
commit b813e7d5ebf4118fb5742108db0c9f2c17f67aa7
Author: Partha Aji <paji(a)redhat.com>
Date: Wed Mar 31 17:58:50 2010 -0400
574594 - Fixed date based sorting issues on 4 User List pages.
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/User_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/User_queries.xml
index 26f10ad..f088ac3 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/User_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/User_queries.xml
@@ -33,11 +33,13 @@ SELECT ugm.user_id
<mode name="in_set"
class="com.redhat.rhn.frontend.dto.UserOverview">
<query params="user_id, set_label">
- SELECT DISTINCT WC.id, WC.login_uc
- FROM web_contact WC, rhnSet ST
+ SELECT DISTINCT WC.id, WC.login_uc,UI.last_logged_in
+
+ FROM web_contact WC
+ inner join rhnSet ST on ST.element = WC.id
+ inner join rhnUserInfo UI on UI.user_id = wc.id
WHERE ST.user_id = :user_id
AND ST.label = :set_label
- AND ST.element = WC.id
ORDER BY WC.login_uc
</query>
<elaborator name="users_in_org_overview" />
@@ -48,8 +50,10 @@ ORDER BY WC.login_uc
SELECT wc.id AS ID,
wc.login,
wc.login_uc,
- wc.org_id
+ wc.org_id,
+ UI.last_logged_in
FROM web_contact wc
+ inner join rhnUserInfo UI on UI.user_id = wc.id
WHERE wc.org_id = :org_id
ORDER BY wc.login_uc
</query>
@@ -107,8 +111,10 @@ ORDER BY UPPER(user_login), UIOO.user_id
<query params="org_id">
SELECT wce.id AS ID,
wce.login,
- wce.login_uc
- FROM rhnWebContactEnabled wce
+ wce.login_uc,
+ UI.last_logged_in
+ FROM rhnWebContactEnabled wce
+ inner join rhnUserInfo UI on UI.user_id = wce.id
WHERE wce.org_id = :org_id
ORDER BY wce.login_uc
</query>
@@ -119,9 +125,14 @@ ORDER BY wce.login_uc
<query params="org_id">
SELECT wcd.id AS ID,
wcd.login,
- wcd.login_uc
+ wcd.login_uc,
+ (select max(wccl_exists.date_completed)
+ from rhnWebContactChangeLog wccl_exists
+ where wcd.id= wccl_exists.web_contact_id) as change_date,
+ UI.last_logged_in
FROM rhnWebContactDisabled wcd
- WHERE wcd.org_id = :org_id
+ inner join rhnUserInfo UI on UI.user_id = wcd.id
+ WHERE wcd.org_id = :org_id
ORDER BY wcd.login_uc
</query>
<elaborator params="">
diff --git a/java/code/src/com/redhat/rhn/common/util/DynamicComparator.java
b/java/code/src/com/redhat/rhn/common/util/DynamicComparator.java
index 0e350c6..c207acc 100644
--- a/java/code/src/com/redhat/rhn/common/util/DynamicComparator.java
+++ b/java/code/src/com/redhat/rhn/common/util/DynamicComparator.java
@@ -83,11 +83,13 @@ public class DynamicComparator implements Comparator {
if (val1 instanceof String && val2 instanceof String) {
return order * getCollator().compare(val1, val2);
}
+ // a < b = -1, a > b = 1 , a== b =0
+
if (val1 == null && val2 != null) {
- return -1;
+ return order * -1;
}
- else if (val2 == null && val1 != null) {
- return 1;
+ else if (val1 != null && val2 == null) {
+ return order * 1;
}
else if (val1 == val2) {
return 0;
diff --git a/java/code/src/com/redhat/rhn/frontend/dto/UserOverview.java
b/java/code/src/com/redhat/rhn/frontend/dto/UserOverview.java
index 39e7a45..1934c1f 100644
--- a/java/code/src/com/redhat/rhn/frontend/dto/UserOverview.java
+++ b/java/code/src/com/redhat/rhn/frontend/dto/UserOverview.java
@@ -45,12 +45,20 @@ public class UserOverview extends BaseDto {
/**
* @return Returns the changeDate.
*/
- public String getChangeDate() {
+ public String getChangeDateString() {
if (changeDate == null) {
return "";
}
return LocalizationService.getInstance().formatDate(changeDate);
}
+
+ /**
+ * @return Returns the changeDate.
+ */
+ public Date getChangeDate() {
+ return changeDate;
+ }
+
/**
* @return Returns the changedByFirstName.
*/
@@ -176,6 +184,14 @@ public class UserOverview extends BaseDto {
}
/**
+ * get the last logged in time
+ * @return the last logged in time
+ */
+ public Date getLastLoggedInDate() {
+ return lastLoggedIn;
+ }
+
+ /**
* Set the id
* @param i the id to set.
*/
diff --git a/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
b/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
index c581b81..c3c8313 100644
--- a/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
@@ -56,6 +56,7 @@
<!-- Last logged in column -->
<rl:column attr="lastLoggedIn"
+ sortattr="lastLoggedInDate"
bound="true"
sortable="true"
headerkey="userdetails.jsp.lastsign"
diff --git a/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
b/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
index 8753ee4..6755723 100644
--- a/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
@@ -53,7 +53,8 @@
<rl:column headerkey="disabledlist.jsp.disabledOn"
bound="true"
- attr="changeDate"
+ attr="changeDateString"
+ sortattr="changeDate"
styleclass="last-column"/>
</rl:list>
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/user/userlist_columns.jspf
b/java/code/webapp/WEB-INF/pages/common/fragments/user/userlist_columns.jspf
index 7496eba..773f3a6 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/user/userlist_columns.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/user/userlist_columns.jspf
@@ -17,4 +17,5 @@
<rl:column bound="true"
headerkey="userdetails.jsp.lastsign"
sortable="true"
+ sortattr="lastLoggedInDate"
attr="lastLoggedIn"/>
Show replies by date