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