Noam Slomianko has uploaded a new change for review. Change subject: webadmin: sort roles in permissions popup ......................................................................
webadmin: sort roles in permissions popup Added sorting of the roles in add permissions popup for easier use. Cleaned the code abit on the way, removing undeeded nested async call and encapsulated logic in methods Change-Id: Ifb5fcbebbe39f32193767d0ba6c928e7db4fc6c1 Bug-Url: https://bugzilla.redhat.com/909897 Signed-off-by: Noam Slomianko <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java 1 file changed, 60 insertions(+), 45 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/86/12586/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java index 377c28a..8f8b486 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java @@ -1,6 +1,8 @@ package org.ovirt.engine.ui.uicommonweb.models.users; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import org.ovirt.engine.core.common.businessentities.DbUser; @@ -169,56 +171,69 @@ setIsTimerDisabled(true); - AsyncQuery _asyncQuery = new AsyncQuery(); - _asyncQuery.setModel(this); - _asyncQuery.asyncCallback = new INewAsyncCallback() { + //get domains + AsyncQuery _getDomainsAsyncQuery = new AsyncQuery(); + _getDomainsAsyncQuery.setModel(this); + _getDomainsAsyncQuery.asyncCallback = new INewAsyncCallback() { @Override public void OnSuccess(Object model, Object result) { - AdElementListModel adElementListModel = (AdElementListModel) model; - ArrayList<String> domains = (ArrayList<String>) result; - adElementListModel.getDomain().setItems(domains); - adElementListModel.getDomain().setSelectedItem(Linq.FirstOrDefault(domains)); - AsyncQuery _asyncQuery1 = new AsyncQuery(); - _asyncQuery1.setModel(adElementListModel); - _asyncQuery1.asyncCallback = new INewAsyncCallback() { - @Override - public void OnSuccess(Object model1, Object result1) - { - AdElementListModel adElementListModel1 = (AdElementListModel) model1; - Role roleValue = null; - boolean first = true; - ArrayList<Role> roles = (ArrayList<Role>) result1; - ArrayList<Role> newRoles = new ArrayList<Role>(); - for (Role r : roles) { - // ignore CONSUME_QUOTA_ROLE in UI - if (!r.getId().equals(ApplicationGuids.quotaConsumer.asGuid())) { - newRoles.add(r); - } - } - for (Role r : roles) - { - if (first) - { - roleValue = r; - first = false; - } - if (r.getId() != null && r.getId().equals(ApplicationGuids.engineUser.asGuid())) //$NON-NLS-1$ - { - roleValue = r; - break; - } - } - - adElementListModel1.getRole().setItems(newRoles); - adElementListModel1.getRole().setSelectedItem(roleValue); - - } - }; - AsyncDataProvider.GetRoleList(_asyncQuery1); + AdElementListModel modelAfterCast = ((AdElementListModel) model); + modelAfterCast.populateDomains((ArrayList<String>) result); } }; - AsyncDataProvider.GetDomainList(_asyncQuery, false); + AsyncDataProvider.GetDomainList(_getDomainsAsyncQuery, false); + + //get roles + AsyncQuery _getRolesAsyncQuery = new AsyncQuery(); + _getRolesAsyncQuery.setModel(this); + _getRolesAsyncQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object model, Object result) + { + AdElementListModel modelAfterCast = ((AdElementListModel) model); + modelAfterCast.populateRoles((ArrayList<Role>) result); + } + }; + AsyncDataProvider.GetRoleList(_getRolesAsyncQuery); + } + + protected void populateDomains(ArrayList<String> domains){ + getDomain().setItems(domains); + getDomain().setSelectedItem(Linq.FirstOrDefault(domains)); + } + + protected void populateRoles(ArrayList<Role> roles){ + Role engineUserRole = null; + ArrayList<Role> newRoles = new ArrayList<Role>(roles.size()); + for (Role r : roles) { + // ignore CONSUME_QUOTA_ROLE in UI + if (r.getId().equals(ApplicationGuids.quotaConsumer.asGuid())) { + continue; + } + + newRoles.add(r); + + //engine user will be selected as default + if (r.getId().equals(ApplicationGuids.engineUser.asGuid())){ + engineUserRole = r; + } + } + + //Sort by name for easier use + Collections.sort(newRoles, new Comparator<Role>() { + @Override + public int compare(Role o1, Role o2) { + return o1.getname().compareTo(o2.getname()); + } + }); + + this.getRole().setItems(newRoles); + if(engineUserRole != null){ + getRole().setSelectedItem(engineUserRole); + } else if(newRoles.size() > 0) { + getRole().setSelectedItem(newRoles.get(0)); + } } @Override -- To view, visit http://gerrit.ovirt.org/12586 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifb5fcbebbe39f32193767d0ba6c928e7db4fc6c1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Noam Slomianko <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
