Yair Zaslavsky has uploaded a new change for review.

Change subject: aaa: Fix UserGroups list model
......................................................................

aaa: Fix UserGroups list model

The previous code populated the groups sub tab of users
by using information from the user entity (namespace and
group names), but the namespace may vary between user
and the groups it belongs to

Change-Id: I39387d68687d530008a2114057d30fc04f27f0ce
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
M packaging/dbscripts/ad_groups_sp.sql
7 files changed, 73 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/33936/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
new file mode 100644
index 0000000..87310cd
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.DbGroupDAO;
+
+public class GetDbGroupsByUserIdQuery<P extends IdQueryParameters> extends 
QueriesCommandBase<P> {
+
+    public GetDbGroupsByUserIdQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        final Guid id = getParameters().getId();
+        final DbGroupDAO dao = getDbFacade().getDbGroupDao();
+        getQueryReturnValue().setReturnValue(dao.getByUserId(id));
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index cac4b0b..0e1bd35 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -162,6 +162,7 @@
     // Groups queries:
     GetAllDbGroups(VdcQueryAuthType.User),
     GetDbGroupById,
+    GetDbGroupsByUserId,
 
     // VM pools queries
     GetVmPoolById(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
index 5292e8a..bf7ba67 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
@@ -79,4 +79,6 @@
      *            the group id
      */
     void remove(Guid id);
+
+    List<DbGroup> getByUserId(Guid id);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
index be30cf8..6efd8c9 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
@@ -85,6 +85,15 @@
     }
 
     @Override
+    public List<DbGroup> getByUserId(Guid id) {
+        return getCallsHandler().executeReadList("GetGroupsByUserId",
+                DbGroupRowMapper.instance,
+                getCustomMapSqlParameterSource()
+                        .addValue("id", id));
+
+    }
+
+    @Override
     public void save(DbGroup group) {
         if (Guid.isNullOrEmpty(group.getId())) {
             group.setId(Guid.newGuid());
@@ -131,4 +140,5 @@
         }
     }
 
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index 8a9bdae..7cb6a2c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -111,8 +111,8 @@
 import org.ovirt.engine.core.common.queries.GetTagsByUserIdParameters;
 import org.ovirt.engine.core.common.queries.GetTagsByVdsIdParameters;
 import org.ovirt.engine.core.common.queries.GetTagsByVmIdParameters;
-import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
 import 
org.ovirt.engine.core.common.queries.GetVmChangedFieldsForNextRunParameters;
+import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters;
 import 
org.ovirt.engine.core.common.queries.MultilevelAdministrationsQueriesParameters;
@@ -649,6 +649,17 @@
                 aQuery);
     }
 
+    public void getDbGroupsByUserId(AsyncQuery aQuery, Guid groupId) {
+        aQuery.converterCallback = new IAsyncConverter() {
+            @Override
+            public Object Convert(Object source, AsyncQuery _asyncQuery)
+            {
+                return source;
+            }
+        };
+        Frontend.getInstance().runQuery(VdcQueryType.GetDbGroupsByUserId, new 
IdQueryParameters(groupId), aQuery);
+    }
+
     public void getPoolById(AsyncQuery aQuery, Guid poolId) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
index 0814aa3..aec9ea7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
@@ -1,8 +1,13 @@
 package org.ovirt.engine.ui.uicommonweb.models.users;
 
 import java.util.ArrayList;
+import java.util.Collection;
 
+import org.ovirt.engine.core.common.businessentities.aaa.DbGroup;
 import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
@@ -36,13 +41,17 @@
 
         if (getEntity() != null)
         {
-            ArrayList<UserGroup> items = new ArrayList<UserGroup>();
-            for (String groupFullName : getEntity().getGroupNames())
-            {
-                items.add(createUserGroup(groupFullName, 
getEntity().getNamespace(), getEntity().getDomain()));
-            }
+            final ArrayList<UserGroup> items = new ArrayList<UserGroup>();
+            AsyncDataProvider.getInstance().getDbGroupsByUserId(new 
AsyncQuery(this, new INewAsyncCallback() {
 
-            setItems(items);
+                @Override
+                public void onSuccess(Object model, Object returnValue) {
+                    for (DbGroup grp : (Collection<DbGroup>) returnValue) {
+                        items.add(createUserGroup(grp.getName(), 
grp.getNamespace(), grp.getDomain()));
+                    }
+                    setItems(items);
+                }
+            }), getEntity().getId());
         }
         else
         {
diff --git a/packaging/dbscripts/ad_groups_sp.sql 
b/packaging/dbscripts/ad_groups_sp.sql
index 4ccca21..f04ad47 100644
--- a/packaging/dbscripts/ad_groups_sp.sql
+++ b/packaging/dbscripts/ad_groups_sp.sql
@@ -86,6 +86,19 @@
 
 
 
+Create or replace FUNCTION GetGroupsByUserId(v_id UUID) RETURNS SETOF 
ad_groups STABLE
+   AS $procedure$
+BEGIN
+      RETURN QUERY SELECT *
+      FROM ad_groups
+      WHERE id in (SELECT fnsplitteruuid(users.group_ids) from users where 
user_id = v_id);
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+
+
+
 Create or replace FUNCTION GetGroupByExternalId(v_domain VARCHAR(100), 
v_external_id TEXT) RETURNS SETOF ad_groups STABLE
    AS $procedure$
 BEGIN


-- 
To view, visit http://gerrit.ovirt.org/33936
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I39387d68687d530008a2114057d30fc04f27f0ce
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to