From 78e0b0177d3ef8ede5bbc3b1410d0acfae285880 Mon Sep 17 00:00:00 2001 From: honchar Date: Mon, 20 Feb 2017 01:30:26 +0100 Subject: [PATCH] Assignments conflicts panel, finished for now --- .../web/page/self/PageAssignmentsList.java | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java index 202c9b23510..7047d80ed65 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java @@ -29,6 +29,7 @@ import com.evolveum.midpoint.web.session.SessionStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang.StringUtils; +import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -86,18 +87,17 @@ public void initLayout() { @Override protected List createAssignmentMenu() { List items = new ArrayList<>(); - if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_UNASSIGN_ACTION_URL)) { - InlineMenuItem item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.unassign"), - new InlineMenuItemAction() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - deleteAssignmentPerformed(target); - } - }); - items.add(item); - } + InlineMenuItem item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.unassign"), + new InlineMenuItemAction() { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + deleteAssignmentPerformed(target); +// target.add(PageAssignmentsList.this.getRequestButton()); + } + }); + items.add(item); return items; } @@ -282,17 +282,34 @@ private void handleModifyAssignmentDelta(AssignmentEditorDto assDto, } private List addAssignmentsToUser(){ + List conflicts = getSessionStorage().getRoleCatalog().getConflictsList(); + List assignmentsToRemove = new ArrayList<>(); + List assignmentsToUnselect = new ArrayList<>(); + for (AssignmentConflictDto dto : conflicts){ + if (dto.isRemovedOld()){ + assignmentsToRemove.add(dto.getExistingAssignmentTargetObj().getOid()); + } else if (dto.isUnassignedNew()){ + assignmentsToUnselect.add(dto.getAddedAssignmentTargetObj().getOid()); + } + } + List userAssignments = user.asObjectable().getAssignment(); if (userAssignments == null){ userAssignments = new ArrayList<>(); } List assignmentsList = new ArrayList<>(); for (AssignmentType assignment : userAssignments){ - assignmentsList.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, assignment, this)); + if (assignmentsToRemove.contains(assignment.getTargetRef().getOid())){ + assignmentsList.add(new AssignmentEditorDto(UserDtoStatus.DELETE, assignment, this)); + } else { + assignmentsList.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, assignment, this)); + } } for (AssignmentEditorDto assignmentsToAdd : assignmentsModel.getObject()){ - assignmentsToAdd.setStatus(UserDtoStatus.ADD); - assignmentsList.add(assignmentsToAdd); + if (!assignmentsToUnselect.contains(assignmentsToAdd.getTargetRef().getOid())) { + assignmentsToAdd.setStatus(UserDtoStatus.ADD); + assignmentsList.add(assignmentsToAdd); + } } return assignmentsList; } @@ -361,4 +378,8 @@ private PrismObject loadUser() { return loadUserSelf(PageAssignmentsList.this); } } + + private Component getRequestButton(){ + return get(ID_FORM).get(ID_REQUEST_BUTTON); + } }