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());
}
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();
}
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();
}
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);
}
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);
}
Aggregations