Skip to content

Commit

Permalink
small improvements for MID-4302
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Dec 7, 2017
1 parent 73e6ff5 commit 3161a98
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
Expand Up @@ -232,8 +232,8 @@ protected void onConfirmPerformed(IModel<RoleRelationSelectionDto> model, AjaxRe
// }

@Override
protected ObjectQuery createAllMemberQuery() {
return super.createDirectMemberQuery();
protected ObjectQuery createAllMemberQuery(List<QName> relations) {
return super.createDirectMemberQuery(relations);
}

@Override
Expand Down Expand Up @@ -326,6 +326,7 @@ private void initOwnerRelationObjectsModel(){
protected List<String> load() {
OperationResult result = new OperationResult(OPERATION_LOAD_OWNER_RELATION_OBJECTS);


PrismReferenceValue rv = new PrismReferenceValue(getModelObject().getOid());
rv.setRelation(RelationTypes.OWNER.getRelation());

Expand Down
Expand Up @@ -50,6 +50,8 @@
import com.evolveum.midpoint.web.page.admin.users.component.AbstractRoleMemberPanel;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.commons.collections.CollectionUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.behavior.AttributeAppender;
Expand Down Expand Up @@ -157,36 +159,35 @@ protected AssignmentType createMemberAssignmentToModify(QName relation) throws S
return assignmentToModify;
}

private ObjectQuery getActionQuery(QueryScope scope) {
private ObjectQuery getActionQuery(QueryScope scope, List<QName> relations) {
switch (scope) {
case ALL:
return createAllMemberQuery();
return createAllMemberQuery(relations);
case ALL_DIRECT:
return createDirectMemberQuery( );
return createDirectMemberQuery(relations);
case SELECTED:
return createRecomputeQuery();
}

return null;
}

protected ObjectQuery createAllMemberQuery() {
protected ObjectQuery createAllMemberQuery(List<QName> relations) {
return QueryBuilder.queryFor(FocusType.class, getPrismContext())
.item(FocusType.F_ROLE_MEMBERSHIP_REF).ref(createReferenceValuesList())
.item(FocusType.F_ROLE_MEMBERSHIP_REF).ref(createReferenceValuesList(relations))
.build();
}

private List<PrismReferenceValue> createReferenceValuesList() {
private List<PrismReferenceValue> createReferenceValuesList(List<QName> relations) {
List<PrismReferenceValue> referenceValuesList = new ArrayList<>();
if (relations != null && relations.size() > 0){
for (RelationTypes relation : relations) {
PrismReferenceValue rv = new PrismReferenceValue(getModelObject().getOid());
rv.setRelation(relation.getRelation());
referenceValuesList.add(rv);
if (!CollectionUtils.isEmpty(relations)) {
for (QName relation : relations) {
referenceValuesList.add(createReference(relation).asReferenceValue());
}
}
} else {
PrismReferenceValue rv = new PrismReferenceValue(getModelObject().getOid());
referenceValuesList.add(rv);
referenceValuesList.add(createReference().asReferenceValue());
}

return referenceValuesList;
Expand Down Expand Up @@ -374,15 +375,15 @@ protected ObjectDelta getDeleteAssignmentDelta(List<QName> relations, Class clas
protected void removeMembersPerformed(QueryScope scope, List<QName> relation, AjaxRequestTarget target) {
Task operationalTask = getPageBase().createSimpleTask(getTaskName("Remove", scope));
ObjectDelta delta = prepareDelta(FocusType.COMPLEX_TYPE, relation, MemberOperation.REMOVE, operationalTask.getResult());
executeMemberOperation(operationalTask, FocusType.COMPLEX_TYPE, getActionQuery(scope), delta,
executeMemberOperation(operationalTask, FocusType.COMPLEX_TYPE, getActionQuery(scope, relation), delta,
TaskCategory.EXECUTE_CHANGES, target);

}

@Override
protected void recomputeMembersPerformed(QueryScope scope, AjaxRequestTarget target) {
Task operationalTask = getPageBase().createSimpleTask(getTaskName("Recompute", scope));
executeMemberOperation(operationalTask, FocusType.COMPLEX_TYPE, getActionQuery(scope), null,
executeMemberOperation(operationalTask, FocusType.COMPLEX_TYPE, getActionQuery(scope, null), null,
TaskCategory.RECOMPUTATION, target);

}
Expand All @@ -391,17 +392,24 @@ protected void recomputeMembersPerformed(QueryScope scope, AjaxRequestTarget tar
protected ObjectQuery createContentQuery() {
boolean indirect = ((CheckBoxPanel) get(createComponentPath(ID_INDIRECT_MEMBERS_CONTAINER, ID_INDIRECT_MEMBERS))).getValue();

return indirect ? createAllMemberQuery() : createDirectMemberQuery();
List<QName> relationList = new ArrayList<>();
if (relations != null) {
for (RelationTypes relation: relations) {
relationList.add(relation.getRelation());
}
}

return indirect ? createAllMemberQuery(relationList) : createDirectMemberQuery(relationList);

}

protected ObjectQuery createDirectMemberQuery() {
protected ObjectQuery createDirectMemberQuery(List<QName> relations) {
ObjectQuery query;

String oid = getModelObject().getOid();
S_AtomicFilterExit q = QueryBuilder.queryFor(FocusType.class, getPrismContext())
.item(FocusType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF)
.ref(createReferenceValuesList());
.ref(createReferenceValuesList(relations));
ChooseTypePanel<OrgType> tenantChoice = (ChooseTypePanel) get(createComponentPath(ID_TENANT));
ObjectViewDto<OrgType> tenant = tenantChoice.getModelObject();
if (tenant != null && tenant.getObjectType() != null) {
Expand Down
Expand Up @@ -3888,4 +3888,5 @@ RoleRelationSelectionPanel.owner=Owner
TreeTablePanel.menu.unassignApproversSelected=Unassign selected approvers
TreeTablePanel.menu.unassignOwnersSelected=Unassign selected owners
TreeTablePanel.menu.unassignManagersSelected=Unassign selected managers
Button.cancel=Cancel
Button.cancel=Cancel
RoleRelationSelectionPanel.select.relation=Select relations to process

0 comments on commit 3161a98

Please sign in to comment.