@Override public Condition interpret() throws QueryException { InterpretationContext context = getContext(); RootHibernateQuery hibernateQuery = context.getHibernateQuery(); String property = getBaseHqlEntity().getHqlPath() + "." + RObject.F_OBJECT_TYPE_CLASS; Collection<RObjectType> values = getValues(filter.getType()); Condition basedOnType; if (values.size() > 1) { basedOnType = hibernateQuery.createIn(property, values); } else { basedOnType = hibernateQuery.createEq(property, values.iterator().next()); } if (filter.getFilter() == null) { return basedOnType; } QueryInterpreter2 interpreter = context.getInterpreter(); Condition basedOnFilter = interpreter.interpretFilter(context, filter.getFilter(), this); return hibernateQuery.createAnd(basedOnType, basedOnFilter); }
private MapXNodeImpl serializeTypeFilter(TypeFilter filter, PrismSerializer<RootXNode> xnodeSerializer) throws SchemaException{ MapXNodeImpl content = new MapXNodeImpl(); content.put(ELEMENT_TYPE, createPrimitiveXNode(filter.getType(), DOMUtil.XSD_QNAME)); if (filter.getFilter() != null){ content.put(ELEMENT_FILTER, serializeFilter(filter.getFilter(), xnodeSerializer)); } return createFilter(CLAUSE_TYPE, content); }
QName type = typeFilter.getType(); Class clazz = prismContext.getSchemaRegistry().determineCompileTimeClass(type); if (clazz == null) {
@Test public void test400TypeAll() throws Exception { System.out.println("===[ test400TypeAll ]==="); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); // WHEN ObjectFilter filter = prismContext.queryFor(UserType.class) .type(UserType.class).all() .buildFilter(); System.out.println("Original filter:\n" + filter.debugDump()); // THEN ObjectFilter simplified = ObjectQueryUtil.simplify(filter, prismContext); System.out.println("Simplified filter:\n" + DebugUtil.debugDump(simplified)); assertTrue("Wrong simplified filter: " + simplified, simplified instanceof TypeFilter); TypeFilter typeSimplified = (TypeFilter) simplified; assertEquals("Wrong simplified filter type", UserType.COMPLEX_TYPE, typeSimplified.getType()); assertTrue("Wrong simplified filter subfilter: " + typeSimplified.getFilter(), ObjectQueryUtil.isAll(typeSimplified.getFilter())); }
@Test public void test420TypeUndefined() throws Exception { System.out.println("===[ test420TypeUndefined ]==="); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); // WHEN ObjectFilter filter = prismContext.queryFor(UserType.class) .type(UserType.class).undefined() .buildFilter(); System.out.println("Original filter:\n" + filter.debugDump()); // THEN ObjectFilter simplified = ObjectQueryUtil.simplify(filter, prismContext); System.out.println("Simplified filter:\n" + DebugUtil.debugDump(simplified)); assertTrue("Wrong simplified filter: " + simplified, simplified instanceof TypeFilter); TypeFilter typeSimplified = (TypeFilter) simplified; assertEquals("Wrong simplified filter type", UserType.COMPLEX_TYPE, typeSimplified.getType()); assertTrue("Wrong simplified filter subfilter: " + typeSimplified.getFilter(), ObjectQueryUtil.isAll(typeSimplified.getFilter())); }
} else if (filter instanceof TypeFilter) { TypeFilter typeFilter = (TypeFilter) filter; JpaEntityDefinition refinedEntityDefinition = resolver.findRestrictedEntityDefinition(baseEntityDefinition, typeFilter.getType()); return new TypeRestriction(context, typeFilter, refinedEntityDefinition, parent); } else if (filter instanceof ExistsFilter) {
assertEquals(typeFilter.getType(), UserType.COMPLEX_TYPE); assertNotNull("filter in type filter must not be null", typeFilter.getFilter()); ItemPath namePath = UserType.F_NAME;
assertRoleTypes(spec); assertFilter(spec.getFilter(), TypeFilter.class); assertEquals("Wrong type filter type", RoleType.COMPLEX_TYPE, ((TypeFilter)spec.getFilter()).getType()); ObjectFilter subfilter = ((TypeFilter)spec.getFilter()).getFilter(); assertFilter(subfilter, RefFilter.class);