Skip to content

Commit

Permalink
MID-6165 fixing query for subtree scope
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Apr 21, 2020
1 parent c4a9f23 commit 8192fbf
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 9 deletions.
Expand Up @@ -584,7 +584,7 @@ protected void assignMembers(AjaxRequestTarget target, AvailableRelationDto avai
}

private void unassignMembersPerformed(AjaxRequestTarget target) {
QueryScope scope = getQueryScope(false);
QueryScope scope = getQueryScope();

ChooseFocusTypeAndRelationDialogPanel chooseTypePopupContent = new ChooseFocusTypeAndRelationDialogPanel(getPageBase().getMainPopupBodyId(),
createStringResource("abstractRoleMemberPanel.unassignAllMembersConfirmationLabel")) {
Expand Down Expand Up @@ -621,7 +621,7 @@ protected QName getDefaultObjectType() {
}

private void deleteMembersPerformed(AjaxRequestTarget target) {
QueryScope scope = getQueryScope(false);
QueryScope scope = getQueryScope();
ChooseFocusTypeAndRelationDialogPanel chooseTypePopupContent = new ChooseFocusTypeAndRelationDialogPanel(getPageBase().getMainPopupBodyId(),
createStringResource("abstractRoleMemberPanel.deleteAllMembersConfirmationLabel")) {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -957,7 +957,7 @@ private MainObjectListPanel<FocusType> getMemberTable() {
return (MainObjectListPanel<FocusType>) get(createComponentPath(ID_FORM, ID_CONTAINER_MEMBER, ID_MEMBER_TABLE));
}

protected QueryScope getQueryScope(boolean isRecompute) {
protected QueryScope getQueryScope() {
if (CollectionUtils.isNotEmpty(MemberOperationsHelper.getFocusOidToRecompute(getMemberTable().getSelectedObjects()))) {
return QueryScope.SELECTED;
}
Expand Down Expand Up @@ -986,8 +986,8 @@ protected void recomputeMembersPerformed(AjaxRequestTarget target) {

@Override
protected PrismObject<TaskType> getTask(AjaxRequestTarget target) {
Task task = MemberOperationsHelper.createRecomputeMembersTask(getPageBase(), getQueryScope(true),
getActionQuery(getQueryScope(true), getSupportedRelations().getAvailableRelationList()), target);
Task task = MemberOperationsHelper.createRecomputeMembersTask(getPageBase(), getQueryScope(),
getActionQuery(getQueryScope(), getSupportedRelations().getAvailableRelationList()), target);
if (task == null) {
return null;
}
Expand All @@ -1004,8 +1004,8 @@ public StringResourceModel getTitle() {

@Override
public void yesPerformed(AjaxRequestTarget target) {
MemberOperationsHelper.recomputeMembersPerformed(getPageBase(), getQueryScope(true),
getActionQuery(getQueryScope(true), getSupportedRelations().getAvailableRelationList()), target);
MemberOperationsHelper.recomputeMembersPerformed(getPageBase(), getQueryScope(),
getActionQuery(getQueryScope(), getSupportedRelations().getAvailableRelationList()), target);
}
};
((PageBase)getPage()).showMainPopup(dialog, target);
Expand Down
Expand Up @@ -58,7 +58,7 @@ protected void initLayout() {
protected ObjectQuery createMemberQuery(boolean indirect, Collection<QName> relations) {
ObjectTypes searchType = getSearchType();
if (SearchBoxScopeType.ONE_LEVEL.equals(getOrgSearchScope())) {
if (FocusType.class.isAssignableFrom(searchType.getClassDefinition())) {
if (AssignmentHolderType.class.isAssignableFrom(searchType.getClassDefinition())) {
return super.createMemberQuery(indirect, relations);
}
else {
Expand All @@ -68,8 +68,37 @@ protected ObjectQuery createMemberQuery(boolean indirect, Collection<QName> rela
.isDirectChildOf(ref.asReferenceValue()).build();
}
}
return getSubtreeScopeMembersQuery();
}

@Override
protected ObjectQuery getActionQuery(QueryScope scope, Collection<QName> relations) {
if (SearchBoxScopeType.ONE_LEVEL.equals(getOrgSearchScope())) {
return super.getActionQuery(scope, relations);
} else {
return getSubtreeScopeMembersQuery();
}
}

@Override
protected QueryScope getQueryScope() {
if (SearchBoxScopeType.SUBTREE.equals(getOrgSearchScope())) {
return QueryScope.ALL;
} else {
return super.getQueryScope();
}
}

@Override
protected ObjectQuery createAllMemberQuery(Collection<QName> relations) {
return getPrismContext().queryFor(AssignmentHolderType.class)
.item(AssignmentHolderType.F_ROLE_MEMBERSHIP_REF).ref(MemberOperationsHelper.createReferenceValuesList(getModelObject(), relations))
.build();
}

private ObjectQuery getSubtreeScopeMembersQuery(){
String oid = getModelObject().getOid();
ObjectTypes searchType = getSearchType();

ObjectReferenceType ref = MemberOperationsHelper.createReference(getModelObject(), getSelectedRelation());
ObjectQuery query = getPageBase().getPrismContext().queryFor(searchType.getClassDefinition())
Expand All @@ -80,7 +109,6 @@ protected ObjectQuery createMemberQuery(boolean indirect, Collection<QName> rela
LOGGER.trace("Searching members of org {} with query:\n{}", oid, query.debugDump());
}
return query;

}

protected SearchBoxScopeType getOrgSearchScope() {
Expand Down

0 comments on commit 8192fbf

Please sign in to comment.