Skip to content

Commit

Permalink
fix for removing saved filter
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Feb 27, 2024
1 parent baa5dd9 commit 240812e
Showing 1 changed file with 47 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.util.List;
import java.util.stream.Collectors;

import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.commons.collections4.CollectionUtils;
Expand Down Expand Up @@ -61,6 +63,8 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.wicket.util.string.StringValue;

public abstract class SearchPanel<C extends Serializable> extends BasePanel<Search<C>> {

private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -229,7 +233,7 @@ public void onClick(AjaxRequestTarget target) {

@Override
protected void saveSearchFilterPerformed(AjaxRequestTarget target) {
SearchPanel.this.saveSearchFilterPerformed(target);
reloadSavedSearchFilters(target);
}
};
getPageBase().showMainPopup(panel, target);
Expand Down Expand Up @@ -349,12 +353,13 @@ private void removeFilterButtonClicked(AvailableFilterType filter, String filter
@Override
public void yesPerformed(AjaxRequestTarget target) {
deleteFilterPerformed(filter, target);
reloadSavedSearchFilters(target);
}
};
getPageBase().showMainPopup(confirmationPanel, target);
}

private void saveSearchFilterPerformed(AjaxRequestTarget target) {
private void reloadSavedSearchFilters(AjaxRequestTarget target) {
savedSearchListModel.detach();
getModelObject().reloadSavedFilters(getParentPage());
refreshSearchForm(target);
Expand All @@ -363,10 +368,11 @@ private void saveSearchFilterPerformed(AjaxRequestTarget target) {
private void deleteFilterPerformed(AvailableFilterType filter, AjaxRequestTarget target) {
Task task = getPageBase().createSimpleTask(OPERATION_REMOVE_SAVED_FILTER);
OperationResult result = task.getResult();
FocusType principalFocus = getPageBase().getPrincipalFocus();
try {
ObjectDelta<UserType> delta = getPageBase().getPrismContext().deltaFactory().object().createModificationDeleteContainer
(UserType.class, getPageBase().getPrincipalFocus().getOid(),
filter.asPrismContainerValue().getPath().allExceptLast(),
(UserType.class, principalFocus.getOid(),
getAvailableFilterItemPath(principalFocus, filter),
filter.asPrismContainerValue().clone());
getPageBase().getModelService().executeChanges(MiscUtil.createCollection(delta), null, task, result);
} catch (Exception e) {
Expand All @@ -380,6 +386,43 @@ private void deleteFilterPerformed(AvailableFilterType filter, AjaxRequestTarget
target.add(get(ID_FORM));
}

private ItemPath getAvailableFilterItemPath(FocusType principalFocus, AvailableFilterType filter) {
if (!(principalFocus instanceof UserType user)) {
return null;
}

OperationResult result = new OperationResult("load user");
Task task = getPageBase().createSimpleTask("load user");
PrismObject<UserType> reloadedPrincipalUser = WebModelServiceUtils.loadObject(UserType.class, user.getOid(), getParentPage(),
task, result);
if (reloadedPrincipalUser == null) {
return null;
}
user = reloadedPrincipalUser.asObjectable();
List<GuiObjectListViewType> views = user.getAdminGuiConfiguration().getObjectCollectionViews().getObjectCollectionView();
if (CollectionUtils.isEmpty(views)) {
return null;
}

StringValue collectionViewParameter = WebComponentUtil.getCollectionNameParameterValue(getPageBase());
String viewName = collectionViewParameter == null || collectionViewParameter.isNull()
? getCollectionInstanceDefaultIdentifier() : collectionViewParameter.toString();
if (viewName == null) {
return null;
}
for (GuiObjectListViewType view : views) {
if (viewName.equals(view.getIdentifier())) {
SearchBoxConfigurationType searchBoxConfigurationType = view.getSearchBoxConfiguration();
for (AvailableFilterType availableFilter : searchBoxConfigurationType.getAvailableFilter()) {
if (availableFilter.equals(filter)) {
return availableFilter.asPrismContainerValue().getPath().allExceptLast();
}
}
}
};
return null;
}

private VisibleEnableBehaviour getSearchButtonVisibleEnableBehavior() {
return new VisibleEnableBehaviour() {

Expand Down

0 comments on commit 240812e

Please sign in to comment.