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

Reply via email to