Skip to content

Commit

Permalink
implemented deletion of delegations
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Nov 18, 2016
1 parent b45fc4b commit 3d098a3
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 10 deletions.
Expand Up @@ -275,7 +275,7 @@ private List<AssignmentEditorDto> getSelectedAssignments() {
return selected;
}

private void deleteAssignmentPerformed(AjaxRequestTarget target) {
protected void deleteAssignmentPerformed(AjaxRequestTarget target) {
List<AssignmentEditorDto> selected = getSelectedAssignments();

if (selected.isEmpty()) {
Expand Down Expand Up @@ -324,9 +324,6 @@ private void deleteAssignmentConfirmedPerformed(AjaxRequestTarget target,
assignment.setSelected(false);
}
}



target.add(getPageBase().getFeedbackPanel(), get(ID_ASSIGNMENTS));
}

Expand Down
Expand Up @@ -442,6 +442,12 @@ protected void prepareObjectDeltaForModify(ObjectDelta<F> focusDelta) throws Sch

protected ContainerDelta handleAssignmentDeltas(ObjectDelta<F> focusDelta,
List<AssignmentEditorDto> assignments, PrismContainerDefinition def) throws SchemaException {
return handleAssignmentDeltas(focusDelta, assignments, def, false);
}

protected ContainerDelta handleAssignmentDeltas(ObjectDelta<F> focusDelta,
List<AssignmentEditorDto> assignments, PrismContainerDefinition def,
boolean isDelegation) throws SchemaException {
ContainerDelta assDelta = new ContainerDelta(new ItemPath(), def.getName(), def, getPrismContext());

for (AssignmentEditorDto assDto : assignments) {
Expand All @@ -454,7 +460,11 @@ protected ContainerDelta handleAssignmentDeltas(ObjectDelta<F> focusDelta,
break;
case DELETE:
PrismContainerValue oldValue = assDto.getOldValue();
oldValue.applyDefinition(def);
if (isDelegation){
oldValue.applyDefinition(def, false);
} else {
oldValue.applyDefinition(def);
}
assDelta.addValueToDelete(oldValue.clone());
break;
case MODIFY:
Expand Down
Expand Up @@ -192,6 +192,7 @@ public WebMarkupContainer createPanel(String panelId) {
{
private static final long serialVersionUID = 1L;


@Override
public WebMarkupContainer createPanel(String panelId) {
return new AssignmentTablePanel<UserType>(panelId, parentPage.createStringResource("FocusType.delegations"),
Expand Down Expand Up @@ -255,7 +256,7 @@ protected void onSelectPerformed(AjaxRequestTarget target, UserType user) {

@Override
public void onClick(AjaxRequestTarget target) {
// deleteAssignmentPerformed(target);
deleteAssignmentPerformed(target);
}
});
items.add(item);
Expand Down Expand Up @@ -287,6 +288,7 @@ protected void addSelectedAssignablePerformed(AjaxRequestTarget target, List<Obj
dto.setPrivilegeLimitationList(privilegesList);
delegationsModel.getObject().add(dto);
usersToUpdateMap.put((UserType) object, dto);
assignmentUserMap.put(dto, (UserType) object);
} catch (Exception e) {
error(getString("AssignmentTablePanel.message.couldntAssignObject", object.getName(),
e.getMessage()));
Expand Down Expand Up @@ -437,12 +439,23 @@ protected void processDeputyAssignments(){
for (UserType user : usersToUpdateMap.keySet()){
List<AssignmentType> userAssignments = user.getAssignment();
List<AssignmentEditorDto> userAssignmentsDtos = new ArrayList<>();
for (AssignmentType assignment : userAssignments) {
userAssignmentsDtos.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, assignment, this));
}
// for (AssignmentType assignment : userAssignments) {
// userAssignmentsDtos.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, assignment, this));
// }
userAssignmentsDtos.add(usersToUpdateMap.get(user));
saveDelegationToUser(user, userAssignmentsDtos);
}
Set<AssignmentEditorDto> assignmentEditorDtos = assignmentUserMap.keySet();
List<UserType> list = new ArrayList<UserType>(assignmentUserMap.values());
int index = 0;
for (AssignmentEditorDto dto : assignmentEditorDtos){
if (UserDtoStatus.DELETE.equals(dto.getStatus())){
List<AssignmentEditorDto> assignmentsToDelete = new ArrayList<>();
assignmentsToDelete.add(dto);
saveDelegationToUser(list.get(index), assignmentsToDelete);
}
index++;
}
}

private void saveDelegationToUser(UserType user, List<AssignmentEditorDto> assignmentEditorDtos) {
Expand All @@ -453,7 +466,7 @@ private void saveDelegationToUser(UserType user, List<AssignmentEditorDto> assig
delta = user.asPrismObject().createModifyDelta();
deltas.add(delta);
PrismContainerDefinition def = user.asPrismObject().getDefinition().findContainerDefinition(UserType.F_ASSIGNMENT);
handleAssignmentDeltas(delta, assignmentEditorDtos, def);
handleAssignmentDeltas(delta, assignmentEditorDtos, def, true);
getModelService().executeChanges(deltas, null, createSimpleTask(OPERATION_SAVE), result);

result.recordSuccess();
Expand Down

0 comments on commit 3d098a3

Please sign in to comment.