private Set<String> getProcessInstancesToKeep(OperationResult result) throws SchemaException { ObjectQuery query = prismContext.queryFor(TaskType.class) .not().item(TaskType.F_WORKFLOW_CONTEXT, WfContextType.F_PROCESS_INSTANCE_ID).isNull() .build(); SearchResultList<PrismObject<TaskType>> tasks = taskManager.searchObjects(TaskType.class, query, null, result); return tasks.stream() .map(t -> t.asObjectable().getWorkflowContext().getProcessInstanceId()) .collect(Collectors.toSet()); }
private ObjectQuery createQueryBySecondaryIdentifier(ShadowType shadow) throws SchemaException { // TODO TODO TODO set matching rule instead of null in equlas filter Collection<ResourceAttribute<?>> secondaryIdentifiers = ShadowUtil.getSecondaryIdentifiers(shadow); S_AtomicFilterEntry q = prismContext.queryFor(ShadowType.class); q = q.block(); if (secondaryIdentifiers.isEmpty()) { for (ResourceAttribute<?> primaryIdentifier: ShadowUtil.getPrimaryIdentifiers(shadow)) { q = q.itemAs(primaryIdentifier).or(); } } else { // secondary identifiers connected by 'or' clause for (ResourceAttribute<?> secondaryIdentifier : secondaryIdentifiers) { q = q.itemAs(secondaryIdentifier).or(); } } q = q.none().endBlock().and(); // resource + object class q = q.item(ShadowType.F_RESOURCE_REF).ref(shadow.getResourceRef().getOid()).and(); return q.item(ShadowType.F_OBJECT_CLASS).eq(shadow.getObjectClass()).build(); }
private List<Task> listWaitingTasks(TaskWaitingReason reason, OperationResult result) throws SchemaException { S_AtomicFilterEntry q = prismContext.queryFor(TaskType.class); q = q.item(TaskType.F_EXECUTION_STATUS).eq(TaskExecutionStatusType.WAITING).and(); if (reason != null) { q = q.item(TaskType.F_WAITING_REASON).eq(reason.toTaskType()).and(); } ObjectQuery query = q.all().build(); List<PrismObject<TaskType>> prisms = repositoryService.searchObjects(TaskType.class, query, null, result); List<Task> tasks = resolveTasksFromTaskTypes(prisms, result); result.recordSuccessIfUnknown(); return tasks; }
@Test public void testExtensionReferenceNonNull() throws SchemaException { ObjectQuery query = prismContext.queryFor(GenericObjectType.class) .not().item(ObjectType.F_EXTENSION, new QName("referenceType")) .isNull() .build(); OperationResult result = new OperationResult("search"); List<PrismObject<GenericObjectType>> cases = repositoryService.searchObjects(GenericObjectType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find 1 object", 1, cases.size()); }
@Test public void notBusinessRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .not().item(RoleType.F_ROLE_TYPE).eq("business") .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find two roles", 2, roles.size()); int judge = roles.get(0).getName().getOrig().startsWith("J") ? 0 : 1; assertEquals("Wrong role1 name", "Judge", roles.get(judge).getName().getOrig()); assertEquals("Wrong role2 name", "Admin-owned role", roles.get(1-judge).getName().getOrig()); }
@Test public void nonEmptyRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .not().item(RoleType.F_ROLE_TYPE).isNull() .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one role", 1, roles.size()); assertEquals("Wrong role name", "Pirate", roles.get(0).getName().getOrig()); }
public List<PrismObject<AccessCertificationCampaignType>> getCertificationCampaigns(Boolean alsoClosedCampaigns) throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, SecurityViolationException, ExpressionEvaluationException { Task task = taskManager.createTaskInstance(); ObjectQuery query = prismContext.queryFor(AccessCertificationCampaignType.class) .asc(F_NAME) .build(); if (!Boolean.TRUE.equals(alsoClosedCampaigns)) { query.addFilter( prismContext.queryFor(AccessCertificationCampaignType.class) .not().item(F_STATE).eq(CLOSED) .buildFilter() ); } Collection<SelectorOptions<GetOperationOptions>> options = schemaHelper.getOperationOptionsBuilder() .root().resolveNames() .item(AccessCertificationCampaignType.F_CASE).retrieve() .build(); return model.searchObjects(AccessCertificationCampaignType.class, query, options, task, task.getResult()); }
ObjectQuery query = prismContext.queryFor(NodeType.class).not().item(NodeType.F_NODE_IDENTIFIER).eq(nodeId).build(); otherClusterNodes = modelService.searchObjects(NodeType.class, query, null, task, result); } catch (SchemaException | ObjectNotFoundException | SecurityViolationException | CommunicationException
@Test public void test0144QueryUserAccountRefNotNull() throws Exception { Session session = open(); try { ObjectQuery query = prismContext.queryFor(UserType.class) .not().item(UserType.F_LINK_REF).isNull() .build(); String real = getInterpretedQuery2(session, UserType.class, query); String expected = "select\n" + " u.oid, u.fullObject,\n" + " u.stringsCount,\n" + " u.longsCount,\n" + " u.datesCount,\n" + " u.referencesCount,\n" + " u.polysCount,\n" + " u.booleansCount\n" + "from\n" + " RUser u\n" + " left join u.linkRef l\n" + "where\n" + " not l is null"; assertEqualsIgnoreWhitespace(expected, real); } finally { close(session); } }
.block().not().item(ShadowType.F_FAILED_OPERATION_TYPE).isNull().endBlock() .and().item(ShadowType.F_RESOURCE_REF).ref(resourceOid) .build();
@Test public void test134SingleOrWithNot() throws Exception{ ObjectQuery actual = getPrismContext().queryFor(UserType.class) .item(UserType.F_LOCALITY).eq("Caribbean") .or().not().item(UserType.F_DESCRIPTION).eq("desc") .build(); ObjectQuery expected = ObjectQueryImpl.createObjectQuery( OrFilterImpl.createOr( createEqual(UserType.F_LOCALITY, UserType.class, null, "Caribbean"), NotFilterImpl.createNot( createEqual(UserType.F_DESCRIPTION, UserType.class, null, "desc") ) ) ); compare(actual, expected); }
ObjectQuery query = prismContext.queryFor(TaskType.class) .item(F_WORKFLOW_CONTEXT, F_REQUESTER_REF).ref("123456") .and().not().item(F_WORKFLOW_CONTEXT, F_PROCESS_INSTANCE_ID).isNull() .desc(F_WORKFLOW_CONTEXT, F_START_TIMESTAMP) .build();
private int getCount(String campaignOid, Integer stage, AccessCertificationResponseType response, boolean onlyRemedied, Task task, OperationResult result) throws SchemaException, SecurityViolationException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException { QName outcomeItem; String responseUri = OutcomeUtils.toUri(response); S_FilterEntry entry; if (stage != null) { outcomeItem = AccessCertificationCaseType.F_CURRENT_STAGE_OUTCOME; entry = prismContext.queryFor(AccessCertificationCaseType.class) .item(AccessCertificationCaseType.F_STAGE_NUMBER).eq(stage) .and(); } else { outcomeItem = AccessCertificationCaseType.F_OUTCOME; entry = prismContext.queryFor(AccessCertificationCaseType.class); } S_AtomicFilterExit exit; if (response == AccessCertificationResponseType.NO_RESPONSE) { exit = entry.item(outcomeItem).isNull().or().item(outcomeItem).eq(responseUri); } else { exit = entry.item(outcomeItem).eq(responseUri); } if (onlyRemedied) { exit = exit.and().not().item(AccessCertificationCaseType.F_REMEDIED_TIMESTAMP).isNull(); } exit = exit.and().ownerId(campaignOid); ObjectQuery query = exit.build(); return modelService.countContainers(AccessCertificationCaseType.class, query, null, task, result); }
.item(UserType.F_LOCALITY).eq("Caribbean") .or() .not().item(UserType.F_DESCRIPTION).eq("desc") .and().all() .and().none()