Search in sources :

Example 41 with ObjectFilter

use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.

the class AssociationValueChoicePanel method createChooseQuery.

protected ObjectQuery createChooseQuery(List<PrismPropertyValue> values) {
    ArrayList<String> oidList = new ArrayList<>();
    ObjectQuery query = new ObjectQuery();
    if (oidList.isEmpty()) {
        return null;
    }
    ObjectFilter oidFilter = InOidFilter.createInOid(oidList);
    query.setFilter(NotFilter.createNot(oidFilter));
    return query;
}
Also used : ArrayList(java.util.ArrayList) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery)

Example 42 with ObjectFilter

use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.

the class ResourceContentPanel method initLayout.

private void initLayout() {
    WebMarkupContainer totals = new WebMarkupContainer(ID_TOTALS);
    totals.setOutputMarkupId(true);
    add(totals);
    initShadowStatistics(totals);
    MainObjectListPanel<ShadowType> shadowListPanel = new MainObjectListPanel<ShadowType>(ID_TABLE, ShadowType.class, getTableId(), null, pageBase) {

        private static final long serialVersionUID = 1L;

        @Override
        protected List<InlineMenuItem> createInlineMenu() {
            return ResourceContentPanel.this.createRowMenuItems();
        }

        @Override
        protected List<IColumn<SelectableBean<ShadowType>, String>> createColumns() {
            return ResourceContentPanel.this.initColumns();
        }

        @Override
        protected IColumn<SelectableBean<ShadowType>, String> createActionsColumn() {
            return new InlineMenuHeaderColumn(createHeaderMenuItems());
        }

        @Override
        protected void objectDetailsPerformed(AjaxRequestTarget target, ShadowType object) {
            shadowDetailsPerformed(target, WebComponentUtil.getName(object), object.getOid());
        }

        @Override
        protected void newObjectPerformed(AjaxRequestTarget target) {
        // TODO Auto-generated method stub
        }

        @Override
        protected BaseSortableDataProvider<SelectableBean<ShadowType>> initProvider() {
            provider = (SelectableBeanObjectDataProvider<ShadowType>) super.initProvider();
            provider.setEmptyListOnNullQuery(true);
            provider.setSort(null);
            createSearchOptions(provider);
            return provider;
        }

        @Override
        protected ObjectQuery createContentQuery() {
            ObjectQuery parentQuery = super.createContentQuery();
            List<ObjectFilter> filters = new ArrayList<>();
            if (parentQuery != null) {
                filters.add(parentQuery.getFilter());
            }
            ObjectQuery customQuery = ResourceContentPanel.this.createQuery();
            if (customQuery != null && customQuery.getFilter() != null) {
                filters.add(customQuery.getFilter());
            }
            ObjectQuery query = new ObjectQuery();
            if (filters.size() == 1) {
                query = ObjectQuery.createObjectQuery(filters.iterator().next());
                //					setProviderAvailableDataSize(query);
                return query;
            }
            if (filters.size() == 0) {
                //					setProviderAvailableDataSize(query);
                return null;
            }
            query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));
            //				setProviderAvailableDataSize(query);
            return query;
        }

        @Override
        protected Search createSearch() {
            return ResourceContentPanel.this.createSearch();
        }
    };
    shadowListPanel.setOutputMarkupId(true);
    shadowListPanel.add(new VisibleEnableBehaviour() {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return createQuery() != null;
        }
    });
    shadowListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_SHADOW_BOX_CSS_CLASSES);
    add(shadowListPanel);
    Label label = new Label(ID_LABEL, "Nothing to show. Select intent to search");
    add(label);
    label.setOutputMarkupId(true);
    label.add(new VisibleEnableBehaviour() {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return createQuery() == null;
        }
    });
    OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE);
    List<PrismObject<TaskType>> tasks = WebModelServiceUtils.searchObjects(TaskType.class, QueryBuilder.queryFor(TaskType.class, getPageBase().getPrismContext()).item(TaskType.F_OBJECT_REF).ref(getResourceModel().getObject().getOid()).build(), result, getPageBase());
    List<TaskType> tasksForKind = getTasksForKind(tasks);
    List<TaskType> importTasks = new ArrayList<>();
    List<TaskType> syncTasks = new ArrayList<>();
    List<TaskType> reconTasks = new ArrayList<>();
    for (TaskType task : tasksForKind) {
        if (TaskCategory.RECONCILIATION.equals(task.getCategory())) {
            reconTasks.add(task);
        } else if (TaskCategory.LIVE_SYNCHRONIZATION.equals(task.getCategory())) {
            syncTasks.add(task);
        } else if (TaskCategory.IMPORTING_ACCOUNTS.equals(task.getCategory())) {
            importTasks.add(task);
        }
    }
    initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, importTasks);
    initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, reconTasks);
    initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, syncTasks);
    initCustomLayout();
}
Also used : MainObjectListPanel(com.evolveum.midpoint.gui.api.component.MainObjectListPanel) InlineMenuHeaderColumn(com.evolveum.midpoint.web.component.data.column.InlineMenuHeaderColumn) ShadowType(com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType) ArrayList(java.util.ArrayList) Label(org.apache.wicket.markup.html.basic.Label) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) PrismObject(com.evolveum.midpoint.prism.PrismObject) IColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn) TaskType(com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType) SelectableBean(com.evolveum.midpoint.web.component.util.SelectableBean) InlineMenuItem(com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem) VisibleEnableBehaviour(com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour)

Example 43 with ObjectFilter

use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.

the class SqlRepositoryServiceImpl method selectorMatches.

@Override
public <O extends ObjectType> boolean selectorMatches(ObjectSelectorType objectSelector, PrismObject<O> object, Trace logger, String logMessagePrefix) throws SchemaException {
    if (objectSelector == null) {
        logger.trace("{} null object specification", logMessagePrefix);
        return false;
    }
    SearchFilterType specFilterType = objectSelector.getFilter();
    ObjectReferenceType specOrgRef = objectSelector.getOrgRef();
    // now it does not matter if it's unqualified
    QName specTypeQName = objectSelector.getType();
    PrismObjectDefinition<O> objectDefinition = object.getDefinition();
    // Type
    if (specTypeQName != null && !QNameUtil.match(specTypeQName, objectDefinition.getTypeName())) {
        logger.trace("{} type mismatch, expected {}, was {}", logMessagePrefix, specTypeQName, objectDefinition.getTypeName());
        return false;
    }
    // Filter
    if (specFilterType != null) {
        ObjectFilter specFilter = QueryJaxbConvertor.createObjectFilter(object.getCompileTimeClass(), specFilterType, object.getPrismContext());
        //  we assume object is already normalized
        ObjectTypeUtil.normalizeFilter(specFilter);
        if (specFilter != null) {
            ObjectQueryUtil.assertPropertyOnly(specFilter, logMessagePrefix + " filter is not property-only filter");
        }
        try {
            if (!ObjectQuery.match(object, specFilter, matchingRuleRegistry)) {
                logger.trace("{} object OID {}", logMessagePrefix, object.getOid());
                return false;
            }
        } catch (SchemaException ex) {
            throw new SchemaException(logMessagePrefix + "could not apply for " + object + ": " + ex.getMessage(), ex);
        }
    }
    // Org	
    if (specOrgRef != null) {
        if (!isDescendant(object, specOrgRef.getOid())) {
            LOGGER.trace("{} object OID {} (org={})", logMessagePrefix, object.getOid(), specOrgRef.getOid());
            return false;
        }
    }
    return true;
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) QName(javax.xml.namespace.QName) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter)

Example 44 with ObjectFilter

use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.

the class SqlRepositoryServiceImpl method searchContainers.

@Override
public <T extends Containerable> SearchResultList<T> searchContainers(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) throws SchemaException {
    Validate.notNull(type, "Object type must not be null.");
    Validate.notNull(parentResult, "Operation result must not be null.");
    logSearchInputParameters(type, query, false, null);
    OperationResult result = parentResult.createSubresult(SEARCH_CONTAINERS);
    result.addParam("type", type.getName());
    result.addParam("query", query);
    if (query != null) {
        ObjectFilter filter = query.getFilter();
        filter = ObjectQueryUtil.simplify(filter);
        if (filter instanceof NoneFilter) {
            result.recordSuccess();
            return new SearchResultList<>(new ArrayList<T>(0));
        } else {
            query = replaceSimplifiedFilter(query, filter);
        }
    }
    SqlPerformanceMonitor pm = getPerformanceMonitor();
    long opHandle = pm.registerOperationStart("searchContainers");
    final String operation = "searching";
    int attempt = 1;
    try {
        while (true) {
            try {
                return objectRetriever.searchContainersAttempt(type, query, options, result);
            } catch (RuntimeException ex) {
                attempt = baseHelper.logOperationAttempt(null, operation, attempt, ex, result);
                pm.registerOperationNewTrial(opHandle, attempt);
            }
        }
    } finally {
        pm.registerOperationFinish(opHandle, attempt);
    }
}
Also used : NoneFilter(com.evolveum.midpoint.prism.query.NoneFilter) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) PolyString(com.evolveum.midpoint.prism.polystring.PolyString)

Example 45 with ObjectFilter

use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.

the class SqlRepositoryServiceImpl method countObjects.

public <T extends ObjectType> int countObjects(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result) {
    Validate.notNull(type, "Object type must not be null.");
    Validate.notNull(result, "Operation result must not be null.");
    LOGGER.debug("Counting objects of type '{}', query (on trace level).", new Object[] { type.getSimpleName() });
    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace("Full query\n{}", new Object[] { (query == null ? "undefined" : query.debugDump()) });
    }
    OperationResult subResult = result.createMinorSubresult(COUNT_OBJECTS);
    subResult.addParam("type", type.getName());
    subResult.addParam("query", query);
    if (query != null) {
        ObjectFilter filter = query.getFilter();
        filter = ObjectQueryUtil.simplify(filter);
        if (filter instanceof NoneFilter) {
            subResult.recordSuccess();
            return 0;
        }
        query = query.cloneEmpty();
        query.setFilter(filter);
    }
    final String operation = "counting";
    int attempt = 1;
    while (true) {
        try {
            return objectRetriever.countObjectsAttempt(type, query, options, subResult);
        } catch (RuntimeException ex) {
            attempt = baseHelper.logOperationAttempt(null, operation, attempt, ex, subResult);
        }
    }
}
Also used : NoneFilter(com.evolveum.midpoint.prism.query.NoneFilter) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) PolyString(com.evolveum.midpoint.prism.polystring.PolyString)

Aggregations

ObjectFilter (com.evolveum.midpoint.prism.query.ObjectFilter)64 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)30 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)25 Task (com.evolveum.midpoint.task.api.Task)21 ArrayList (java.util.ArrayList)14 Test (org.testng.annotations.Test)13 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)12 QName (javax.xml.namespace.QName)12 AbstractInternalModelIntegrationTest (com.evolveum.midpoint.model.impl.AbstractInternalModelIntegrationTest)10 PrismObject (com.evolveum.midpoint.prism.PrismObject)9 ShadowType (com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType)9 ObjectNotFoundException (com.evolveum.midpoint.util.exception.ObjectNotFoundException)8 SearchFilterType (com.evolveum.prism.xml.ns._public.query_3.SearchFilterType)8 NoneFilter (com.evolveum.midpoint.prism.query.NoneFilter)7 SelectorOptions (com.evolveum.midpoint.schema.SelectorOptions)7 ExpressionEvaluationException (com.evolveum.midpoint.util.exception.ExpressionEvaluationException)7 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)6 ConfigurationException (com.evolveum.midpoint.util.exception.ConfigurationException)6 PrismContext (com.evolveum.midpoint.prism.PrismContext)5 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)5