Search in sources :

Example 6 with Filter

use of com.enonic.xp.query.filter.Filter in project xp by enonic.

the class AclFilterBuilderFactoryTest method testName.

@Test
public void testName() throws Exception {
    final Principals principals = Principals.from(User.create().email("rmy@enonic.com").login("rmy").displayName("Runar Myklebust").key(PrincipalKey.from("user:system:rmy")).build(), Group.create().key(PrincipalKey.from("group:system:mygroup")).displayName("My group").build());
    final Filter filter = AclFilterBuilderFactory.create(principals.getKeys());
    assertTrue(filter instanceof ValueFilter);
    ValueFilter valueFilter = (ValueFilter) filter;
    assertEquals(2, valueFilter.getValues().size());
}
Also used : Principals(com.enonic.xp.security.Principals) ValueFilter(com.enonic.xp.query.filter.ValueFilter) Filter(com.enonic.xp.query.filter.Filter) ValueFilter(com.enonic.xp.query.filter.ValueFilter) Test(org.junit.jupiter.api.Test)

Example 7 with Filter

use of com.enonic.xp.query.filter.Filter in project xp by enonic.

the class CheckContentValidityCommand method execute.

public ContentValidityResult execute() {
    if (this.contentIds.getSize() == 0) {
        return ContentValidityResult.empty();
    }
    // valid == false
    final Filter notValid = ValueFilter.create().fieldName(ContentPropertyNames.VALID).addValue(ValueFactory.newBoolean(false)).build();
    // workflow != null && workflow != READY
    final Filter notReady = BooleanFilter.create().must(ExistsFilter.create().fieldName(WORKFLOW_STATE_FIELD).build()).mustNot(ValueFilter.create().fieldName(WORKFLOW_STATE_FIELD).addValues(WorkflowState.READY.toString()).build()).build();
    // valid == false OR (workflow != null && workflow != READY)
    final Filter filter = BooleanFilter.create().should(notValid).should(notReady).build();
    final ContentQuery query = ContentQuery.create().queryFilter(filter).queryFilter(IdFilter.create().fieldName(ContentIndexPath.ID.getPath()).values(contentIds.asStrings()).build()).size(-1).build();
    final FindContentByQueryResult result = FindContentByQueryCommand.create().params(FindContentByQueryParams.create().contentQuery(query).populateChildren(false).build()).contentTypeService(this.contentTypeService).eventPublisher(this.eventPublisher).nodeService(this.nodeService).translator(this.translator).build().execute();
    ContentIds.Builder invalidContentIds = ContentIds.create();
    ContentIds.Builder notReadyContentIds = ContentIds.create();
    result.getContents().forEach(content -> {
        if (!content.isValid()) {
            invalidContentIds.add(content.getId());
        }
        if (!content.getWorkflowInfo().getState().equals(WorkflowState.READY)) {
            notReadyContentIds.add(content.getId());
        }
    });
    return ContentValidityResult.create().notValidContentIds(invalidContentIds.build()).notReadyContentIds(notReadyContentIds.build()).build();
}
Also used : ContentQuery(com.enonic.xp.content.ContentQuery) IdFilter(com.enonic.xp.query.filter.IdFilter) ExistsFilter(com.enonic.xp.query.filter.ExistsFilter) ValueFilter(com.enonic.xp.query.filter.ValueFilter) BooleanFilter(com.enonic.xp.query.filter.BooleanFilter) Filter(com.enonic.xp.query.filter.Filter) FindContentByQueryResult(com.enonic.xp.content.FindContentByQueryResult) ContentIds(com.enonic.xp.content.ContentIds)

Example 8 with Filter

use of com.enonic.xp.query.filter.Filter in project xp by enonic.

the class IssueQueryNodeQueryTranslator method translate.

public static NodeQuery translate(final IssueQuery issueQuery) {
    final NodeQuery.Builder builder = NodeQuery.create();
    final ValueFilter issueCollectionFilter = ValueFilter.create().fieldName(NodeIndexPath.NODE_TYPE.getPath()).addValue(ValueFactory.newString(IssueConstants.ISSUE_NODE_COLLECTION.getName())).build();
    if (issueQuery.isCount()) {
        builder.searchMode(SearchMode.COUNT);
    }
    builder.from(issueQuery.getFrom()).size(issueQuery.getSize()).addQueryFilter(issueCollectionFilter);
    final PrincipalKey creator = issueQuery.getCreator();
    if (creator != null) {
        builder.addQueryFilter(ValueFilter.create().fieldName(CREATOR).addValues(creator.toString()).build());
    }
    final PrincipalKeys approvers = issueQuery.getApprovers();
    if (approvers != null && approvers.isNotEmpty()) {
        builder.addQueryFilter(ValueFilter.create().fieldName(APPROVERS).addValues(approvers.stream().map(PrincipalKey::toString).collect(toList())).build());
    }
    final ContentIds items = issueQuery.getItems();
    if (items != null && items.isNotEmpty()) {
        builder.addQueryFilter(ValueFilter.create().fieldName(PUBLISH_REQUEST_ITEM_ID).addValues(items.stream().map(ContentId::toString).collect(toList())).build());
    }
    final IssueStatus status = issueQuery.getStatus();
    if (status != null) {
        builder.addQueryFilter(ValueFilter.create().fieldName(STATUS).addValues(status.toString()).build());
    }
    final IssueType type = issueQuery.getType();
    if (type != null) {
        final Filter isOfType = ValueFilter.create().fieldName(TYPE).addValues(type.toString()).build();
        if (type == IssueType.STANDARD) {
            final Filter notExists = BooleanFilter.create().mustNot(ExistsFilter.create().fieldName(TYPE).build()).build();
            final Filter isStandard = BooleanFilter.create().should(isOfType).should(notExists).build();
            builder.addQueryFilter(isStandard);
        } else {
            builder.addQueryFilter(isOfType);
        }
    }
    builder.setOrderExpressions(IssueConstants.DEFAULT_CHILD_ORDER.getOrderExpressions());
    return builder.build();
}
Also used : PrincipalKeys(com.enonic.xp.security.PrincipalKeys) ExistsFilter(com.enonic.xp.query.filter.ExistsFilter) ValueFilter(com.enonic.xp.query.filter.ValueFilter) BooleanFilter(com.enonic.xp.query.filter.BooleanFilter) Filter(com.enonic.xp.query.filter.Filter) IssueType(com.enonic.xp.issue.IssueType) NodeQuery(com.enonic.xp.node.NodeQuery) ContentIds(com.enonic.xp.content.ContentIds) ValueFilter(com.enonic.xp.query.filter.ValueFilter) ContentId(com.enonic.xp.content.ContentId) PrincipalKey(com.enonic.xp.security.PrincipalKey) IssueStatus(com.enonic.xp.issue.IssueStatus)

Example 9 with Filter

use of com.enonic.xp.query.filter.Filter in project xp by enonic.

the class JsonToFilterMapperTest method notExists_filter.

@Test
public void notExists_filter() throws Exception {
    Map<String, Object> value = new HashMap<>();
    final HashMap<String, Object> notExistsFilter = new HashMap<>();
    notExistsFilter.put("field", "myField");
    value.put("notExists", notExistsFilter);
    final Filters filters = com.enonic.xp.lib.common.JsonToFilterMapper.create(value);
    assertTrue(filters.get(0) instanceof BooleanFilter);
    final BooleanFilter booleanFilter = (BooleanFilter) filters.get(0);
    final ImmutableSet<Filter> mustNotFilters = booleanFilter.getMustNot();
    assertEquals(1, mustNotFilters.size());
    final Filter mustNotFilter = mustNotFilters.iterator().next();
    assertTrue(mustNotFilter instanceof ExistsFilter);
}
Also used : BooleanFilter(com.enonic.xp.query.filter.BooleanFilter) ExistsFilter(com.enonic.xp.query.filter.ExistsFilter) Filters(com.enonic.xp.query.filter.Filters) HashMap(java.util.HashMap) IdFilter(com.enonic.xp.query.filter.IdFilter) ExistsFilter(com.enonic.xp.query.filter.ExistsFilter) ValueFilter(com.enonic.xp.query.filter.ValueFilter) BooleanFilter(com.enonic.xp.query.filter.BooleanFilter) Filter(com.enonic.xp.query.filter.Filter) Test(org.junit.jupiter.api.Test)

Example 10 with Filter

use of com.enonic.xp.query.filter.Filter in project xp by enonic.

the class QueryContentHandler method doExecute.

@Override
protected Object doExecute() {
    final int start = valueOrDefault(this.start, 0);
    final int count = valueOrDefault(this.count, GetChildContentHandler.DEFAULT_COUNT);
    final ContentTypeNames contentTypeNames = getContentTypeNames();
    final QueryExpr queryExpr = QueryExpr.from(buildConstraintExpr(), buildOrderExpr());
    final Filters filters = JsonToFilterMapper.create(this.filters);
    final Set<AggregationQuery> aggregations = new QueryAggregationParams().getAggregations(this.aggregations);
    final HighlightQuery highlight = new QueryHighlightParams().getHighlightQuery(this.highlight);
    final ContentQuery.Builder queryBuilder = ContentQuery.create().from(start).size(count).aggregationQueries(aggregations).highlight(highlight).addContentTypeNames(contentTypeNames).queryExpr(queryExpr);
    for (final Filter filter : filters) {
        queryBuilder.queryFilter(filter);
    }
    final FindContentIdsByQueryResult queryResult = contentService.find(queryBuilder.build());
    return convert(queryResult);
}
Also used : AggregationQuery(com.enonic.xp.query.aggregation.AggregationQuery) FindContentIdsByQueryResult(com.enonic.xp.content.FindContentIdsByQueryResult) QueryExpr(com.enonic.xp.query.expr.QueryExpr) Filters(com.enonic.xp.query.filter.Filters) ContentQuery(com.enonic.xp.content.ContentQuery) Filter(com.enonic.xp.query.filter.Filter) ContentTypeNames(com.enonic.xp.schema.content.ContentTypeNames) HighlightQuery(com.enonic.xp.query.highlight.HighlightQuery)

Aggregations

Filter (com.enonic.xp.query.filter.Filter)10 BooleanFilter (com.enonic.xp.query.filter.BooleanFilter)7 ValueFilter (com.enonic.xp.query.filter.ValueFilter)7 Test (org.junit.jupiter.api.Test)6 ExistsFilter (com.enonic.xp.query.filter.ExistsFilter)5 Filters (com.enonic.xp.query.filter.Filters)5 IdFilter (com.enonic.xp.query.filter.IdFilter)5 HashMap (java.util.HashMap)3 ContentIds (com.enonic.xp.content.ContentIds)2 ContentQuery (com.enonic.xp.content.ContentQuery)2 ContentId (com.enonic.xp.content.ContentId)1 FindContentByQueryResult (com.enonic.xp.content.FindContentByQueryResult)1 FindContentIdsByQueryResult (com.enonic.xp.content.FindContentIdsByQueryResult)1 IssueStatus (com.enonic.xp.issue.IssueStatus)1 IssueType (com.enonic.xp.issue.IssueType)1 NodeQuery (com.enonic.xp.node.NodeQuery)1 AggregationQuery (com.enonic.xp.query.aggregation.AggregationQuery)1 QueryExpr (com.enonic.xp.query.expr.QueryExpr)1 IndicesFilter (com.enonic.xp.query.filter.IndicesFilter)1 HighlightQuery (com.enonic.xp.query.highlight.HighlightQuery)1