Alexander Wels has uploaded a new change for review. Change subject: webadmin: user main tab sorting ......................................................................
webadmin: user main tab sorting - Implemented sorting on Users main tab - No sorting on email. - Implemented sorting on Users sub tabs. Change-Id: I87781ecd94ad15fb7db9209c347a57e3bd59db46 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1119873 Signed-off-by: Alexander Wels <[email protected]> --- M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/QuotaComparator.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/UserGroupComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabUserView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserEventNotifierView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserGroupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserPermissionView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserQuotaView.java 9 files changed, 161 insertions(+), 35 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/25/30125/1 diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java index 788d3e1..a517a61 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java @@ -1,6 +1,11 @@ package org.ovirt.engine.core.searchbackend; public class VdcUserConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter { + public static final String FIRST_NAME = "NAME"; + public static final String LAST_NAME = "LASTNAME"; + public static final String USER_NAME = "USRNAME"; + public static final String GROUP = "GROUP"; + public enum UserOrGroup { User, Group @@ -8,14 +13,14 @@ public VdcUserConditionFieldAutoCompleter() { super(); - // Building the basic vervs Dict - mVerbs.add("NAME"); - mVerbs.add("LASTNAME"); - mVerbs.add("USRNAME"); + // Building the basic verbs dictionary. + mVerbs.add(FIRST_NAME); + mVerbs.add(LAST_NAME); + mVerbs.add(USER_NAME); mVerbs.add("LOGIN"); mVerbs.add("DIRECTORY"); mVerbs.add("DEPARTMENT"); - mVerbs.add("GROUP"); + mVerbs.add(GROUP); mVerbs.add("TITLE"); mVerbs.add("ACTIVE"); mVerbs.add("ROLE"); @@ -23,17 +28,17 @@ mVerbs.add("POOL"); mVerbs.add("TYPE"); - // Building the autoCompletion Dict + // Building the auto completion dictionary. buildCompletions(); - // Building the types dict - getTypeDictionary().put("NAME", String.class); - getTypeDictionary().put("LASTNAME", String.class); - getTypeDictionary().put("USRNAME", String.class); + // Building the types dictionary. + getTypeDictionary().put(FIRST_NAME, String.class); + getTypeDictionary().put(LAST_NAME, String.class); + getTypeDictionary().put(USER_NAME, String.class); getTypeDictionary().put("LOGIN", String.class); getTypeDictionary().put("DIRECTORY", String.class); getTypeDictionary().put("DEPARTMENT", String.class); getTypeDictionary().put("TITLE", String.class); - getTypeDictionary().put("GROUP", String.class); + getTypeDictionary().put(GROUP, String.class); getTypeDictionary().put("ACTIVE", Boolean.class); getTypeDictionary().put("ROLE", String.class); getTypeDictionary().put("TAG", String.class); @@ -41,14 +46,14 @@ getTypeDictionary().put("TYPE", UserOrGroup.class); // building the ColumnName Dict - columnNameDict.put("NAME", "name"); - columnNameDict.put("LASTNAME", "surname"); - columnNameDict.put("USRNAME", "username"); + columnNameDict.put(FIRST_NAME, "name"); + columnNameDict.put(LAST_NAME, "surname"); + columnNameDict.put(USER_NAME, "username"); columnNameDict.put("LOGIN", "username"); columnNameDict.put("DIRECTORY", "domain"); columnNameDict.put("DEPARTMENT", "department"); columnNameDict.put("TITLE", "role"); - columnNameDict.put("GROUP", "groups"); + columnNameDict.put(GROUP, "groups"); columnNameDict.put("ACTIVE", "active"); columnNameDict.put("ROLE", "mla_role"); columnNameDict.put("TAG", "tag_name"); @@ -70,7 +75,7 @@ String customizedRelation, String tableName, boolean caseSensitive) { - if ("USRNAME".equals(fieldName) && customizedValue.contains("@")) { + if (USER_NAME.equals(fieldName) && customizedValue.contains("@")) { // When the given user name contains the at sign, we need to split it and compare it to two columns in the // database: the column containing the login name of the user and the column containg the name of the // directory. diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/QuotaComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/QuotaComparator.java new file mode 100644 index 0000000..839de28 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/QuotaComparator.java @@ -0,0 +1,40 @@ +package org.ovirt.engine.ui.uicommonweb.comparators; + +import java.util.Comparator; + +import org.ovirt.engine.core.common.businessentities.Quota; +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; + +public class QuotaComparator { + private static final LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + /** + * Comparator for the description field in {@code Quota}. + */ + public static final Comparator<Quota> DESCRIPTION = new Comparator<Quota>() { + @Override + public int compare(Quota quota1, Quota quota2) { + return lexoNumeric.compare(quota1.getDescription(), quota2.getDescription()); + } + }; + + /** + * Comparator for the quota name field in {@code Quota}. + */ + public static final Comparator<Quota> NAME = new Comparator<Quota>() { + @Override + public int compare(Quota quota1, Quota quota2) { + return lexoNumeric.compare(quota1.getQuotaName(), quota2.getQuotaName()); + } + }; + + /** + * Comparator for the description field in {@code Quota}. + */ + public static final Comparator<Quota> DATA_CENTER = new Comparator<Quota>() { + @Override + public int compare(Quota quota1, Quota quota2) { + return lexoNumeric.compare(quota1.getStoragePoolName(), quota2.getStoragePoolName()); + } + }; +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/UserGroupComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/UserGroupComparator.java new file mode 100644 index 0000000..d0f0164 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/UserGroupComparator.java @@ -0,0 +1,40 @@ +package org.ovirt.engine.ui.uicommonweb.comparators; + +import java.util.Comparator; + +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; +import org.ovirt.engine.ui.uicommonweb.models.users.UserGroup; + +public class UserGroupComparator { + private static final LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + /** + * Comparator for the group name field in {@code UserGroup}. + */ + public static final Comparator<UserGroup> NAME = new Comparator<UserGroup>() { + @Override + public int compare(UserGroup userGroup1, UserGroup userGroup2) { + return lexoNumeric.compare(userGroup1.getGroupName(), userGroup2.getGroupName()); + } + }; + + /** + * Comparator for the organizational unit field in {@code UserGroup}. + */ + public static final Comparator<UserGroup> ORG_UNIT = new Comparator<UserGroup>() { + @Override + public int compare(UserGroup userGroup1, UserGroup userGroup2) { + return lexoNumeric.compare(userGroup1.getOrganizationalUnit(), userGroup2.getOrganizationalUnit()); + } + }; + + /** + * Comparator for the group name field in {@code UserGroup}. + */ + public static final Comparator<UserGroup> DOMAIN = new Comparator<UserGroup>() { + @Override + public int compare(UserGroup userGroup1, UserGroup userGroup2) { + return lexoNumeric.compare(userGroup1.getDomain(), userGroup2.getDomain()); + } + }; +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java index ddcd1a9..40bc41e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java @@ -380,11 +380,17 @@ @Override protected void syncSearch() { - SearchParameters tempVar = new SearchParameters(getSearchString(), SearchType.DBUser, isCaseSensitiveSearch()); + SearchParameters tempVar = new SearchParameters(applySortOptions(getSearchString()), SearchType.DBUser, + isCaseSensitiveSearch()); tempVar.setMaxCount(getSearchPageSize()); super.syncSearch(VdcQueryType.Search, tempVar); } + @Override + public boolean supportsServerSideSorting() { + return true; + } + private EntityModel userGroupListModel; private EntityModel userEventNotifierListModel; diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabUserView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabUserView.java index 60431f5..2bd8e3d 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabUserView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabUserView.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.DbUser; +import org.ovirt.engine.core.searchbackend.VdcUserConditionFieldAutoCompleter; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; @@ -35,28 +36,34 @@ getTable().addColumn(new UserStatusColumn(), constants.empty(), "30px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<DbUser>() { + TextColumnWithTooltip<DbUser> firstNameColumn = new TextColumnWithTooltip<DbUser>() { @Override public String getValue(DbUser object) { return object.getFirstName(); } - }, constants.firstnameUser(), "150px"); //$NON-NLS-1$ + }; + firstNameColumn.makeSortable(VdcUserConditionFieldAutoCompleter.FIRST_NAME); + getTable().addColumn(firstNameColumn, constants.firstnameUser(), "150px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<DbUser>() { + TextColumnWithTooltip<DbUser> lastNameColumn = new TextColumnWithTooltip<DbUser>() { @Override public String getValue(DbUser object) { return object.getLastName(); } - }, constants.lastNameUser(), "150px"); //$NON-NLS-1$ + }; + lastNameColumn.makeSortable(VdcUserConditionFieldAutoCompleter.LAST_NAME); + getTable().addColumn(lastNameColumn, constants.lastNameUser(), "150px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<DbUser>() { + TextColumnWithTooltip<DbUser> userNameColumn = new TextColumnWithTooltip<DbUser>() { @Override public String getValue(DbUser object) { return FormatUtils.getFullLoginName(object); } - }, constants.userNameUser(), "150px"); //$NON-NLS-1$ + }; + userNameColumn.makeSortable(VdcUserConditionFieldAutoCompleter.USER_NAME); + getTable().addColumn(userNameColumn, constants.userNameUser(), "150px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<DbUser>() { + TextColumnWithTooltip<DbUser> groupColumn = new TextColumnWithTooltip<DbUser>() { @Override public String getValue(DbUser object) { StringBuilder builder = new StringBuilder(); @@ -68,7 +75,9 @@ } return builder.toString(); } - }, constants.groupUser(), "150px"); //$NON-NLS-1$ + }; + groupColumn.makeSortable(VdcUserConditionFieldAutoCompleter.GROUP); + getTable().addColumn(groupColumn, constants.groupUser(), "150px"); //$NON-NLS-1$ getTable().addColumn(new TextColumnWithTooltip<DbUser>() { @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserEventNotifierView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserEventNotifierView.java index d4e8aa8..8c9b426 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserEventNotifierView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserEventNotifierView.java @@ -1,10 +1,13 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab.user; +import java.util.Comparator; + import javax.inject.Inject; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.event_subscriber; +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.EnumColumn; @@ -41,6 +44,14 @@ return Enum.valueOf(AuditLogType.class, object.getevent_up_name()); } }; + eventNameColumn.makeSortable(new Comparator<event_subscriber>() { + private final LexoNumericComparator lexoNumericComparator = new LexoNumericComparator(); + + @Override + public int compare(event_subscriber o1, event_subscriber o2) { + return lexoNumericComparator.compare(o1.getevent_up_name(), o2.getevent_up_name()); + } + }); getTable().addColumn(eventNameColumn, constants.eventNameEventNotifier()); getTable().addActionButton(new WebAdminButtonDefinition<event_subscriber>(constants.manageEventsEventNotifier()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserGroupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserGroupView.java index 82165ae..ca1d911 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserGroupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserGroupView.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.comparators.UserGroupComparator; import org.ovirt.engine.ui.uicommonweb.models.users.UserGroup; import org.ovirt.engine.ui.uicommonweb.models.users.UserGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; @@ -29,15 +30,17 @@ return object.getGroupName(); } }; + nameColumn.makeSortable(UserGroupComparator.NAME); getTable().addColumn(nameColumn, constants.groupNameGroup()); - TextColumnWithTooltip<UserGroup> OrgUnitColumn = new TextColumnWithTooltip<UserGroup>() { + TextColumnWithTooltip<UserGroup> orgUnitColumn = new TextColumnWithTooltip<UserGroup>() { @Override public String getValue(UserGroup object) { return object.getOrganizationalUnit(); } }; - getTable().addColumn(OrgUnitColumn, constants.orgUnitGroup()); + orgUnitColumn.makeSortable(UserGroupComparator.ORG_UNIT); + getTable().addColumn(orgUnitColumn, constants.orgUnitGroup()); TextColumnWithTooltip<UserGroup> domainColumn = new TextColumnWithTooltip<UserGroup>() { @Override @@ -45,6 +48,7 @@ return object.getDomain(); } }; + domainColumn.makeSortable(UserGroupComparator.DOMAIN); getTable().addColumn(domainColumn, constants.domainGroup()); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserPermissionView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserPermissionView.java index 5514111..9803234 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserPermissionView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserPermissionView.java @@ -44,6 +44,7 @@ return object.getRoleName(); } }; + roleColumn.makeSortable(); getTable().addColumn(roleColumn, constants.rolePermission()); TextColumnWithTooltip<Permissions> permissionColumn = new ObjectNameColumn<Permissions>() { @@ -52,15 +53,17 @@ return new Object[] { object.getObjectType(), object.getObjectName() }; } }; + permissionColumn.makeSortable(); getTable().addColumn(permissionColumn, constants.objectPermission()); - TextColumnWithTooltip<Permissions> groupColumn = new GroupNameColumn<Permissions>() { + TextColumnWithTooltip<Permissions> inheritedColumn = new GroupNameColumn<Permissions>() { @Override protected Object[] getRawValue(Permissions object) { return new Object[] { getDetailModel().getEntity(), object.getad_element_id(), object.getOwnerName() }; } }; - getTable().addColumn(groupColumn, constants.inheritedPermission()); + inheritedColumn.makeSortable(); + getTable().addColumn(inheritedColumn, constants.inheritedPermission()); getTable().addActionButton(new WebAdminButtonDefinition<Permissions>(constants.removePermission()) { @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserQuotaView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserQuotaView.java index 2103fd6..89a5e6a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserQuotaView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserQuotaView.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.comparators.QuotaComparator; import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; import org.ovirt.engine.ui.uicommonweb.models.users.UserQuotaListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; @@ -28,25 +29,32 @@ getTable().addColumn(new QuotaDcStatusColumn(), constants.empty(), "30px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<Quota>() { + TextColumnWithTooltip<Quota> nameColumn = new TextColumnWithTooltip<Quota>() { @Override public String getValue(Quota object) { return object.getQuotaName() == null ? "" : object.getQuotaName(); //$NON-NLS-1$ } - }, constants.nameQuota(), "300px"); //$NON-NLS-1$ + }; + nameColumn.makeSortable(QuotaComparator.NAME); + getTable().addColumn(nameColumn, constants.nameQuota(), "300px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<Quota>() { + TextColumnWithTooltip<Quota> descriptionColumn = new TextColumnWithTooltip<Quota>() { @Override public String getValue(Quota object) { return object.getDescription() == null ? "" : object.getDescription(); //$NON-NLS-1$ } - }, constants.descriptionQuota(), "300px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<Quota>() { + }; + descriptionColumn.makeSortable(QuotaComparator.DESCRIPTION); + getTable().addColumn(descriptionColumn, constants.descriptionQuota(), "300px"); //$NON-NLS-1$ + + TextColumnWithTooltip<Quota> datacenterColumn = new TextColumnWithTooltip<Quota>() { @Override public String getValue(Quota object) { return object.getStoragePoolName() == null ? "" : object.getStoragePoolName(); //$NON-NLS-1$ } - }, constants.dcQuota(), "300px"); //$NON-NLS-1$ + }; + datacenterColumn.makeSortable(QuotaComparator.DATA_CENTER); + getTable().addColumn(datacenterColumn, constants.dcQuota(), "300px"); //$NON-NLS-1$ } } -- To view, visit http://gerrit.ovirt.org/30125 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I87781ecd94ad15fb7db9209c347a57e3bd59db46 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Alexander Wels <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
