Example usage for org.hibernate.criterion Restrictions and

List of usage examples for org.hibernate.criterion Restrictions and

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions and.

Prototype

public static LogicalExpression and(Criterion lhs, Criterion rhs) 

Source Link

Document

Return the conjuction of two expressions

Usage

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void queryUserByActivationDouble() throws Exception {
    Date NOW = new Date();

    Session session = open();//w  ww  .  j a  va 2  s . co m
    try {
        Criteria main = session.createCriteria(RUser.class, "u");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("u", projections, false);
        main.setProjection(projections);

        main.add(Restrictions.and(
                Restrictions.eq("u.activation.administrativeStatus", RActivationStatus.ENABLED),
                Restrictions.eq("u.activation.validFrom",
                        XmlTypeConverter.createXMLGregorianCalendar(NOW.getTime()))));

        String expected = HibernateToSqlTranslator.toSql(main);

        SchemaRegistry registry = prismContext.getSchemaRegistry();
        PrismObjectDefinition objectDef = registry.findObjectDefinitionByCompileTimeClass(UserType.class);
        //        ItemPath triggerPath = new ItemPath(AssignmentType.F_ACTIVATION);

        //        PrismContainerDefinition triggerContainerDef = objectDef.findContainerDefinition(triggerPath);

        ObjectFilter filter1 = EqualFilter.createEqual(
                new ItemPath(AssignmentType.F_ACTIVATION, ActivationType.F_ADMINISTRATIVE_STATUS), objectDef,
                ActivationStatusType.ENABLED);

        ObjectFilter filter2 = EqualFilter.createEqual(
                new ItemPath(AssignmentType.F_ACTIVATION, ActivationType.F_VALID_FROM), objectDef,
                XmlTypeConverter.createXMLGregorianCalendar(NOW.getTime()));

        ObjectQuery query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filter1, filter2));
        String real = getInterpretedQuery(session, UserType.class, query);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void queryTriggerTimestampDouble() throws Exception {
    final Date NOW = new Date();

    Session session = open();/*from  ww  w  .j  a  v  a 2 s  .c  o  m*/
    try {
        Criteria main = session.createCriteria(RObject.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        Criteria d = main.createCriteria("trigger", "t", JoinType.LEFT_OUTER_JOIN);
        d.add(Restrictions.and(Restrictions.gt("t.timestamp", new Timestamp(NOW.getTime())),
                Restrictions.lt("t.timestamp", new Timestamp(NOW.getTime()))));

        String expected = HibernateToSqlTranslator.toSql(main);

        XMLGregorianCalendar thisScanTimestamp = XmlTypeConverter.createXMLGregorianCalendar(NOW.getTime());

        SchemaRegistry registry = prismContext.getSchemaRegistry();
        PrismObjectDefinition objectDef = registry.findObjectDefinitionByCompileTimeClass(ObjectType.class);
        ItemPath triggerPath = new ItemPath(ObjectType.F_TRIGGER, TriggerType.F_TIMESTAMP);
        //        PrismContainerDefinition triggerContainerDef = objectDef.findContainerDefinition(triggerPath);
        ObjectFilter greater = GreaterFilter.createGreater(triggerPath, objectDef, thisScanTimestamp, false);
        ObjectFilter lesser = LessFilter.createLess(triggerPath, objectDef, thisScanTimestamp, false);
        AndFilter and = AndFilter.createAnd(greater, lesser);
        LOGGER.info(and.debugDump());

        ObjectQuery query = ObjectQuery.createObjectQuery(and);
        String real = getInterpretedQuery(session, ObjectType.class, query);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void countObjectOrderByName() throws Exception {
    Session session = open();//  ww w .  j  a  v  a 2s.  co  m

    try {
        Criteria main = session.createCriteria(RUser.class, "u");
        main.add(Restrictions.and(Restrictions.eq("u.name.orig", "cpt. Jack Sparrow"),
                Restrictions.eq("u.name.norm", "cpt jack sparrow")));
        main.setProjection(Projections.rowCount());
        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter filter = EqualFilter.createEqual(UserType.F_NAME, UserType.class, prismContext, null,
                new PolyString("cpt. Jack Sparrow", "cpt jack sparrow"));

        ObjectQuery query = ObjectQuery.createObjectQuery(filter);
        query.setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, UserType.class, query, true);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void asdf() throws Exception {
    Session session = open();//  ww w .  j  a  v a 2s  .  c o m
    try {
        Criteria main = session.createCriteria(RUser.class, "u");
        Criteria a = main.createCriteria("assignments", "a");
        a.add(Restrictions.eq("a.assignmentOwner", RAssignmentOwner.FOCUS));
        Criteria e = a.createCriteria("a.extension");

        Criteria s = e.createCriteria("strings", "s");

        Conjunction c2 = Restrictions.conjunction();
        c2.add(Restrictions.eq("s.extensionType", RAssignmentExtensionType.EXTENSION));
        c2.add(Restrictions.eq("s.name", new QName("http://midpoint.evolveum.com/blabla", "foo")));
        c2.add(Restrictions.eq("s.value", "uid=jbond,ou=People,dc=example,dc=com"));

        Conjunction c1 = Restrictions.conjunction();
        c1.add(Restrictions.eq("a.targetRef.targetOid", "1234"));
        c1.add(Restrictions.eq("a.targetRef.type", RObjectType.ORG));

        main.add(Restrictions.and(c1, c2));

        main.setProjection(Projections.property("u.fullObject"));

        String expected = HibernateToSqlTranslator.toSql(main);
        LOGGER.info(">>> >>> {}", expected);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test310QueryNameAndOrg() throws Exception {
    Session session = open();//from ww w .  j ava2s .c o  m

    try {
        DetachedCriteria detached = DetachedCriteria.forClass(ROrgClosure.class, "cl");
        detached.setProjection(Projections.distinct(Projections.property("cl.descendantOid")));
        detached.add(Restrictions.eq("cl.ancestorOid", "1234"));
        detached.add(Restrictions.ne("cl.descendantOid", "1234"));

        Criteria main = session.createCriteria(RUser.class, "u");
        String mainAlias = "u";

        ProjectionList projections = Projections.projectionList();
        projections.add(Projections.property("fullObject"));

        projections.add(Projections.property("stringsCount"));
        projections.add(Projections.property("longsCount"));
        projections.add(Projections.property("datesCount"));
        projections.add(Projections.property("referencesCount"));
        projections.add(Projections.property("polysCount"));

        main.setProjection(projections);

        Conjunction c = Restrictions.conjunction();
        c.add(Restrictions.and(Restrictions.eq("u.name.orig", "cpt. Jack Sparrow"),
                Restrictions.eq("u.name.norm", "cpt jack sparrow")));
        c.add(Subqueries.propertyIn(mainAlias + ".oid", detached));
        main.add(c);

        main.addOrder(Order.asc("u.name.orig"));

        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eqFilter = EqualFilter.createEqual(ObjectType.F_NAME, ObjectType.class, prismContext, null,
                new PolyString("cpt. Jack Sparrow", "cpt jack sparrow"));

        OrgFilter orgFilter = OrgFilter.createOrg("12341234-1234-1234-1234-123412341234");

        ObjectQuery query = ObjectQuery.createObjectQuery(AndFilter.createAnd(eqFilter, orgFilter));
        query.setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, UserType.class, query);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test(enabled = false)
public void test320QueryEmployeeTypeAndOrgType() throws Exception {
    Session session = open();// w  ww  .j a v  a  2s .  c om

    try {
        Criteria main = session.createCriteria(RObject.class, "o");
        main.add(Restrictions.or(Restrictions.and(Restrictions.eq("o.name.orig", "some name"),
                Restrictions.eq("o.employeeNumber", "123")), Restrictions.eq("o.identifier", "1234")));
        ProjectionList list = Projections.projectionList();
        addFullObjectProjectionList("o", list, false);
        main.setProjection(list);

        List l = main.list();
        l.size();
        String expected = HibernateToSqlTranslator.toSql(main);
        LOGGER.info("expected query>\n{}", new Object[] { expected });

        //            EqualsFilter nameFilter = EqualsFilter.createEqual(ObjectType.F_NAME, ObjectType.class, prismContext,
        //                    null, new PolyString("cpt. Jack Sparrow", "cpt jack sparrow"));
        //
        //            EqualsFilter numberFilter = EqualsFilter.createEqual(UserType.F_EMPLOYEE_NUMBER, UserType.class, prismContext,
        //                    null, "123");
        //
        ////            EqualsFilter orgTypeFilter = EqualsFilter.createEqual(OrgType.F_ORG_TYPE, OrgType.class, prismContext,
        ////                    null, "orgtypevalue");
        //
        //            ObjectQuery query = ObjectQuery.createObjectQuery(OrFilter.createOr(
        //                    AndFilter.createAnd(nameFilter, numberFilter)//,
        ////                    orgTypeFilter
        //            ));
        //            query.setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));
        //
        //            String real = getInterpretedQuery(session, ObjectType.class, query);
        //
        //            LOGGER.info("real query>\n{}", new Object[]{real});
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test370queryObjectypeByTypeUserAndLocality() throws Exception {
    Session session = open();//  w w  w.j  ava 2s. co  m
    try {
        Criteria main = session.createCriteria(RObject.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        Conjunction c = Restrictions.conjunction();
        main.add(c);
        c.add(Restrictions.eq("o." + RObject.F_OBJECT_TYPE_CLASS, RObjectType.USER));
        c.add(Restrictions.and(Restrictions.eq("o.localityUser.orig", "Caribbean"),
                Restrictions.eq("o.localityUser.norm", "caribbean")));

        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eq = EqualFilter.createEqual(new ItemPath(UserType.F_LOCALITY), UserType.class,
                prismContext, new PolyString("Caribbean", "caribbean"));
        TypeFilter type = TypeFilter.createType(UserType.COMPLEX_TYPE, eq);

        String real = getInterpretedQuery(session, ObjectType.class, ObjectQuery.createObjectQuery(type));

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);

        checkQueryTypeAlias(real, "m_user", "locality_orig", "locality_norm");
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test375queryObjectypeByTypeOrgAndLocality() throws Exception {
    Session session = open();//from w  w w .j  a va  2s . c  om
    try {
        Criteria main = session.createCriteria(RObject.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        Conjunction c = Restrictions.conjunction();
        main.add(c);
        c.add(Restrictions.eq("o." + RObject.F_OBJECT_TYPE_CLASS, RObjectType.ORG));
        c.add(Restrictions.and(Restrictions.eq("o.locality.orig", "Caribbean"),
                Restrictions.eq("o.locality.norm", "caribbean")));

        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eq = EqualFilter.createEqual(new ItemPath(OrgType.F_LOCALITY), OrgType.class, prismContext,
                new PolyString("Caribbean", "caribbean"));
        TypeFilter type = TypeFilter.createType(OrgType.COMPLEX_TYPE, eq);

        String real = getInterpretedQuery(session, ObjectType.class, ObjectQuery.createObjectQuery(type));

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);

        checkQueryTypeAlias(real, "m_org", "locality_orig", "locality_norm");
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test400queryObjectypeByTypeComplex() throws Exception {
    Session session = open();/* www  .  j  av a  2 s .  co  m*/
    try {
        Criteria main = session.createCriteria(RObject.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        Conjunction c1 = Restrictions.conjunction();
        c1.add(Restrictions.eq("o." + RObject.F_OBJECT_TYPE_CLASS, RObjectType.USER));
        Criterion e1 = Restrictions.and(Restrictions.eq("o.localityUser.orig", "Caribbean"),
                Restrictions.eq("o.localityUser.norm", "caribbean"));
        Criterion e2 = Restrictions.and(Restrictions.eq("o.localityUser.orig", "Adriatic"),
                Restrictions.eq("o.localityUser.norm", "adriatic"));
        c1.add(Restrictions.or(e1, e2));

        Conjunction c2 = Restrictions.conjunction();
        c2.add(Restrictions.eq("o." + RObject.F_OBJECT_TYPE_CLASS, RObjectType.ORG));
        Criteria o1 = main.createCriteria("o.orgType", "o1", JoinType.LEFT_OUTER_JOIN);
        c2.add(Restrictions.eq("o1.elements", "functional"));

        Criterion c3 = Restrictions.eq("o." + RObject.F_OBJECT_TYPE_CLASS, RObjectType.REPORT);

        main.add(Restrictions.or(c1, c2, c3));
        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eq1 = EqualFilter.createEqual(UserType.F_LOCALITY, UserType.class, prismContext,
                new PolyString("Caribbean", "caribbean"));
        EqualFilter eq2 = EqualFilter.createEqual(UserType.F_LOCALITY, UserType.class, prismContext,
                new PolyString("Adriatic", "adriatic"));
        TypeFilter type1 = TypeFilter.createType(UserType.COMPLEX_TYPE, OrFilter.createOr(eq1, eq2));

        EqualFilter equal = EqualFilter.createEqual(OrgType.F_ORG_TYPE, OrgType.class, prismContext,
                "functional");
        TypeFilter type2 = TypeFilter.createType(OrgType.COMPLEX_TYPE, equal);

        TypeFilter type3 = TypeFilter.createType(ReportType.COMPLEX_TYPE, null);

        OrFilter or = OrFilter.createOr(type1, type2, type3);

        String real = getInterpretedQuery(session, ObjectType.class, ObjectQuery.createObjectQuery(or));

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.SqlRepositoryServiceImpl.java

License:Apache License

private List<RObject> deleteTransitiveHierarchy(RObject rObjectToModify, Session session)
        throws SchemaException, DtoTranslationException {

    Criteria cDescendant = session.createCriteria(ROrgClosure.class)
            .setProjection(Projections.property("descendant"))
            .add(Restrictions.eq("ancestor", rObjectToModify));

    Criteria cAncestor = session.createCriteria(ROrgClosure.class)
            .setProjection(Projections.property("ancestor")).createCriteria("ancestor", "anc")
            .add(Restrictions.and(Restrictions.eq("this.descendant", rObjectToModify),
                    Restrictions.not(Restrictions.eq("anc.oid", rObjectToModify.getOid()))));

    Criteria cOrgClosure = session.createCriteria(ROrgClosure.class);

    List<RObject> ocAncestor = cAncestor.list();
    List<RObject> ocDescendant = cDescendant.list();

    if (ocAncestor != null && !ocAncestor.isEmpty()) {
        cOrgClosure.add(Restrictions.in("ancestor", ocAncestor));
    } else {/*from ww  w .ja  v a 2s.  c  o m*/
        LOGGER.trace("No ancestors for object: {}", rObjectToModify.getOid());
    }

    if (ocDescendant != null && !ocDescendant.isEmpty()) {
        cOrgClosure.add(Restrictions.in("descendant", ocDescendant));
    } else {
        LOGGER.trace("No descendants for object: {}", rObjectToModify.getOid());
    }

    List<ROrgClosure> orgClosure = cOrgClosure.list();

    for (ROrgClosure o : orgClosure) {
        if (LOGGER.isTraceEnabled()) {
            RObject ancestor = o.getAncestor();
            RObject descendant = o.getDescendant();
            LOGGER.trace("deleting from hierarchy: A:{} D:{} depth:{}", new Object[] {
                    RUtil.getDebugString(ancestor), RUtil.getDebugString(descendant), o.getDepth() });
        }
        session.delete(o);
    }
    deleteHierarchy(rObjectToModify, session);
    return ocDescendant;
}