Search in sources :

Example 11 with Search

use of com.evolveum.midpoint.web.component.search.Search in project midpoint by Evolveum.

the class PageRepositoryQuery method useInObjectListPerformed.

private void useInObjectListPerformed(AjaxRequestTarget target) {
    final RepoQueryDto dto = model.getObject();
    String queryText = dto.getMidPointQuery();
    if (StringUtils.isBlank(queryText)) {
        queryText = "<query/>";
    }
    RepositoryQueryDiagRequest request = new RepositoryQueryDiagRequest();
    Task task = createSimpleTask(OPERATION_CHECK_QUERY);
    OperationResult result = task.getResult();
    try {
        // just to parse the query
        updateRequestWithMidpointQuery(request, dto.getObjectType(), queryText, dto.isDistinct(), task, result);
        ObjectFilter parsedFilter = request.getQuery().getFilter();
        String filterAsString;
        if (parsedFilter != null) {
            SearchFilterType filterType = getQueryConverter().createSearchFilterType(parsedFilter);
            filterAsString = getPrismContext().xmlSerializer().serializeRealValue(filterType, SchemaConstantsGenerated.Q_FILTER);
        // TODO remove extra xmlns from serialized value
        } else {
            filterAsString = "";
        }
        Class<? extends PageBase> listPageClass = WebComponentUtil.getObjectListPage(request.getType());
        String storageKey = listPageClass != null ? WebComponentUtil.getObjectListPageStorageKey(dto.getObjectType().getLocalPart()) : null;
        if (storageKey == null) {
            // shouldn't occur because of button visibility
            error("No page to redirect for " + dto.getObjectType());
            target.add(getFeedbackPanel());
            return;
        }
        Search search = SearchFactory.createSearch(request.getType(), this);
        search.setAdvancedQuery(filterAsString);
        search.setSearchType(SearchBoxModeType.ADVANCED);
        if (!search.isAdvancedQueryValid(getPrismContext())) {
            // shouldn't occur because the query was already parsed
            error("Query is not valid: " + search.getAdvancedError());
            target.add(getFeedbackPanel());
            return;
        }
        SessionStorage sessionStorage = ((MidPointAuthWebSession) getSession()).getSessionStorage();
        PageStorage storage = sessionStorage.getPageStorageMap().get(storageKey);
        if (storage == null) {
            storage = sessionStorage.initPageStorage(storageKey);
        }
        storage.setSearch(search);
        setResponsePage(listPageClass);
    } catch (CommonException | RuntimeException e) {
        result.recordFatalError(getString("PageRepositoryQuery.message.couldNotParseQuery", e.getMessage()), e);
        showResult(result);
        target.add(this);
    }
}
Also used : Task(com.evolveum.midpoint.task.api.Task) SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) MidPointAuthWebSession(com.evolveum.midpoint.web.security.MidPointAuthWebSession) RepoQueryDto(com.evolveum.midpoint.web.page.admin.configuration.dto.RepoQueryDto) Search(com.evolveum.midpoint.web.component.search.Search) SessionStorage(com.evolveum.midpoint.web.session.SessionStorage) PageStorage(com.evolveum.midpoint.web.session.PageStorage)

Aggregations

Search (com.evolveum.midpoint.web.component.search.Search)11 PageStorage (com.evolveum.midpoint.web.session.PageStorage)3 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)2 AjaxRequestTarget (org.apache.wicket.ajax.AjaxRequestTarget)2 LoadableModel (com.evolveum.midpoint.gui.api.model.LoadableModel)1 PrismObject (com.evolveum.midpoint.prism.PrismObject)1 ObjectFilter (com.evolveum.midpoint.prism.query.ObjectFilter)1 ObjectTypes (com.evolveum.midpoint.schema.constants.ObjectTypes)1 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)1 Task (com.evolveum.midpoint.task.api.Task)1 ObjectDataProvider (com.evolveum.midpoint.web.component.data.ObjectDataProvider)1 MidpointForm (com.evolveum.midpoint.web.component.form.MidpointForm)1 ContainerTypeSearchItem (com.evolveum.midpoint.web.component.search.ContainerTypeSearchItem)1 SearchItem (com.evolveum.midpoint.web.component.search.SearchItem)1 SearchItemDefinition (com.evolveum.midpoint.web.component.search.SearchItemDefinition)1 SearchPanel (com.evolveum.midpoint.web.component.search.SearchPanel)1 SearchValue (com.evolveum.midpoint.web.component.search.SearchValue)1 RepoQueryDto (com.evolveum.midpoint.web.page.admin.configuration.dto.RepoQueryDto)1 MidPointAuthWebSession (com.evolveum.midpoint.web.security.MidPointAuthWebSession)1 SessionStorage (com.evolveum.midpoint.web.session.SessionStorage)1