public AccessCertificationCaseType getCase(String campaignOid, long caseId, @SuppressWarnings("unused") Task task, OperationResult result) throws SchemaException { QueryFactory queryFactory = prismContext.queryFactory(); ObjectFilter filter = queryFactory.createAnd( queryFactory.createOwnerHasOidIn(campaignOid), queryFactory.createInOid(String.valueOf(caseId)) ); ObjectQuery query = queryFactory.createQuery(filter); List<AccessCertificationCaseType> caseList = repositoryService.searchContainers(AccessCertificationCaseType.class, query, null, result); if (caseList.isEmpty()) { return null; } else if (caseList.size() == 1) { return caseList.get(0); } else { throw new IllegalStateException("More than one certification case with ID " + caseId + " in campaign " + campaignOid); } }
public List<AccessCertificationCaseType> searchCases(String campaignOid, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result) throws SchemaException { InOidFilter campaignFilter = prismContext.queryFactory().createOwnerHasOidIn(campaignOid); ObjectQuery newQuery = addFilter(query, campaignFilter); return repositoryService.searchContainers(AccessCertificationCaseType.class, newQuery, options, result); }
@Test public void test0710QueryCertCaseOwner() throws Exception { Session session = open(); try { InOidFilter filter = prismContext.queryFactory().createOwnerHasOidIn("123456"); ObjectQuery query = prismContext.queryFactory().createQuery(filter); String real = getInterpretedQuery2(session, AccessCertificationCaseType.class, query, false); String expected = "select\n" + " a.ownerOid, a.id, a.fullObject\n" + "from\n" + " RAccessCertificationCase a\n" + "where\n" + " a.ownerOid in :ownerOid"; assertEqualsIgnoreWhitespace(expected, real); } finally { close(session); } }