Example usage for org.hibernate.criterion Projections property

List of usage examples for org.hibernate.criterion Projections property

Introduction

In this page you can find the example usage for org.hibernate.criterion Projections property.

Prototype

public static PropertyProjection property(String propertyName) 

Source Link

Document

A property value projection

Usage

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

License:Apache License

@Test
public void asdf() throws Exception {
    Session session = open();/*from www . j a  v  a 2  s. c om*/
    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   w  ww  . j  av  a  2 s  .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.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 {/*  w ww  .  j  a va  2  s  .  com*/
        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;
}

From source file:com.fich.wafproject.dao.UserDaoImpl.java

public List<Users> findAll(int pageNumber, String[] targets, String[] names, String[] values,
        boolean pagination) {
    int pageSize = 4;
    Criteria crit = this.createEntityCriteria();
    crit.setProjection(Projections.distinct(Projections.property("id")));
    String dateFrom = "", dateTo = "", targetDate = "";
    if (names != null) {
        for (String alias : names) {
            crit.createAlias(alias, alias);
        }/*w ww  . java  2s  . com*/
    }
    int count = 0;
    if (values != null) {
        for (String value : values) {
            if (!value.equals("") && value != null) {
                if (targets[count].contains("date")) {
                    if (dateFrom != "") {
                        dateTo = value;
                    } else {
                        dateFrom = value;
                        targetDate = targets[count];
                    }
                } else {
                    crit.add(Restrictions.like(targets[count], "%" + value + "%"));
                }
            }
            count++;
        }
        if (targetDate != "") {
            if (dateFrom != "" && dateTo == "") {
                dateTo = dateFrom;
            }
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
            try {
                Date dateF = format.parse(dateFrom);
                Date dateT = format.parse(dateTo);
                crit.add(Restrictions.between(targetDate, dateF, dateT));
            } catch (ParseException ex) {
                Logger.getLogger(UserDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    if (pagination) {
        crit.setFirstResult((pageNumber - 1) * pageSize);
        crit.setMaxResults(pageSize);
    }
    List<Users> users = new ArrayList<Users>();
    for (Object idEvent : crit.list()) {
        //            System.out.println(idEvent);
        users.add(this.findById((Long) idEvent));
    }
    return (List<Users>) users;
}

From source file:com.fich.wafproject.dao.UserHistoryDaoImpl.java

@SuppressWarnings("unchecked")
public List<UsersHistory> findAll(int pageNumber) {
    int pageSize = 6;
    Criteria crit = createEntityCriteria();
    crit.setProjection(Projections.distinct(Projections.property("id")));
    crit.setFirstResult((pageNumber - 1) * pageSize);
    crit.setMaxResults(pageSize);/*from w  ww .j a  v a  2s  .com*/

    List<UsersHistory> events = new ArrayList<UsersHistory>();
    for (Object idUsersHistory : crit.list()) {
        //            System.out.println(idUsersHistory);
        events.add(this.findById((Long) idUsersHistory));
    }
    return events;
}

From source file:com.fich.wafproject.dao.UserHistoryDaoImpl.java

public List<UsersHistory> filter(String[] values, String[] names, String[] targets, int pageNumber,
        String role) {/*from ww  w . j  av a 2  s.c  om*/
    int pageSize = 6;
    int count = 0;
    boolean filterByUserProperty = false, filterByUserName = false;
    Criteria crit = this.createEntityCriteria();//.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    crit.setProjection(Projections.distinct(Projections.property("id")));
    String dateFrom = "", dateTo = "", targetDate = "";
    if (names != null) {
        for (String alias : names) {
            crit.createAlias(alias, alias);
            if (alias.equals("user"))
                filterByUserProperty = true;
        }
    }
    if (!filterByUserProperty && !role.equals(""))
        crit.createAlias("user", "user");
    if (values != null) {
        for (String value : values) {
            if (!value.equals("") && value != null) {
                if (targets[count].contains("date")) {
                    if (dateFrom != "") {
                        dateTo = value;
                    } else {
                        dateFrom = value;
                        targetDate = targets[count];
                    }
                } else {
                    if (targets[count].contains("userName"))
                        filterByUserName = true;
                    crit.add(Restrictions.like(targets[count], "%" + value + "%"));
                }
            }
            count++;
        }
        if (targetDate != "") {
            if (dateFrom != "" && dateTo == "") {
                dateTo = dateFrom;
            }
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
            try {
                Date dateF = format.parse(dateFrom);
                Date dateT = format.parse(dateTo);
                crit.add(Restrictions.between(targetDate, dateF, dateT));
            } catch (ParseException ex) {
                Logger.getLogger(UserHistoryDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    if (!filterByUserName && !role.equals(""))
        crit.add(Restrictions.like("user.userName", role));
    crit.setFirstResult((pageNumber - 1) * pageSize);
    crit.setMaxResults(pageSize);
    List<UsersHistory> events = new ArrayList<UsersHistory>();
    for (Object idEvent : crit.list()) {
        events.add(this.findById((Long) idEvent));
    }
    return (List<UsersHistory>) events;
}

From source file:com.flipkart.flux.dao.EventsDAOImpl.java

License:Apache License

@Override
@Transactional// w w  w. j a  v  a  2s.c  o m
public List<String> findTriggeredEventsNamesBySMId(Long stateMachineInstanceId) {
    Criteria criteria = currentSession().createCriteria(Event.class)
            .add(Restrictions.eq("stateMachineInstanceId", stateMachineInstanceId))
            .add(Restrictions.eq("status", Event.EventStatus.triggered))
            .setProjection(Projections.property("name"));
    return criteria.list();
}

From source file:com.floreantpos.model.dao.TicketDAO.java

License:Open Source License

public List<Ticket> getTicketsWithSpecificFields(String... fields) {
    Session session = null;//from   w w  w .ja  va2 s  . c  o  m
    Criteria criteria = null;
    User currentUser = Application.getCurrentUser();
    boolean filterUser = !currentUser.isAdministrator() || !currentUser.isManager();
    try {
        session = createNewSession();
        criteria = session.createCriteria(Ticket.class);
        ProjectionList projectionList = Projections.projectionList();
        for (String field : fields) {
            projectionList.add(Projections.property(field));
        }
        criteria.add(Restrictions.eq(Ticket.PROP_CLOSED, Boolean.FALSE));
        if (filterUser) {
            criteria.createAlias(Ticket.PROP_OWNER, "u");
            criteria.add(Restrictions.eq("u.userId", currentUser.getUserId()));
        }
        ResultTransformer transformer = new ResultTransformer() {

            public Object transformTuple(Object[] row, String[] arg1) {
                Ticket ticket = new Ticket();
                ticket.setId(Integer.valueOf("" + row[0]));
                ticket.setDueAmount(Double.valueOf("" + row[1]));
                return ticket;
            }

            public List transformList(List arg0) {
                return arg0;
            }
        };
        criteria.setProjection(projectionList).setResultTransformer(transformer);
        return criteria.list();
    } finally {
        closeSession(session);
    }
}

From source file:com.gian.dao.impl.AuthorizationDaoImpl.java

@Override
public List<User> getAuthorizedUser() {

    //Get a list of User also by Criteria

    List<User> listUser = null;

    Session session = sessionFactory.openSession();
    Transaction transaction = null;//from   www. j  a v a 2  s  .c o  m
    _log.info("Info: get only authorized users...");
    try {
        transaction = session.beginTransaction();
        Criteria criteria = session.createCriteria(Authorization.class)
                .setProjection(Projections.property("user")).add(Restrictions.eq("type", true));
        listUser = (List<User>) criteria.list();
        transaction.commit();
    } catch (HibernateException e) {
        if (transaction != null) {
            transaction.rollback();
            _log.error(e);
        } else {
            _log.error("Transaction is null");
        }
    } finally {
        session.close();
    }
    return listUser;

}

From source file:com.gisgraphy.hibernate.criterion.DistanceRestrictionTest.java

License:Open Source License

@SuppressWarnings("unchecked")
@Test// www  .j  av a  2 s. c om
public void testDistanceRestrictionPointDouble() {
    final City p1 = GisgraphyTestHelper.createCity("paris", 48.86667F, 2.3333F, 1L);
    City p2 = GisgraphyTestHelper.createCity("bordeaux", 44.83333F, -0.56667F, 3L);

    this.cityDao.save(p1);
    this.cityDao.save(p2);

    HibernateCallback hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            List<String> fieldList = new ArrayList<String>();
            fieldList.add("name");
            Projection projection = Projections.property("name").as("name");
            testCriteria.setProjection(projection).add(Restrictions.ne("id", p1.getId()))
                    .add(new DistanceRestriction(p1.getLocation(), 500000D))
                    .setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    List<_CityDTO> cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals("According to the distance restriction, it should have zero result", 0, cities.size());

    hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            Projection projection = Projections.property("name").as("name");
            testCriteria.setProjection(projection).add(new DistanceRestriction(p1.getLocation(), 600000D))
                    .add(Restrictions.ne("id", p1.getId()))
                    .setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals("According to the distance restriction, it should have one results", 1, cities.size());
    assertEquals("bordeaux", cities.get(0).getName());

}