Example usage for org.hibernate.criterion DetachedCriteria createAlias

List of usage examples for org.hibernate.criterion DetachedCriteria createAlias

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria createAlias.

Prototype

public DetachedCriteria createAlias(String associationPath, String alias) 

Source Link

Document

Creates an association path alias within this DetachedCriteria.

Usage

From source file:alpha.portal.dao.hibernate.AlphaCardDaoHibernate.java

License:Apache License

/**
 * List alpha cards by criterion./*  w ww.jav a 2 s.  c om*/
 * 
 * @param caseId
 *            the case id
 * @param criteriaArray
 *            the criteria array
 * @return the list
 * @see alpha.portal.dao.AlphaCardDao#listAlphaCardsByCriterion(org.hibernate.criterion.Criterion)
 */
public List<AlphaCard> listAlphaCardsByCriterion(final String caseId, final Criterion... criteriaArray) {
    Session session;
    boolean sessionOwn = false;
    try {
        session = this.getSessionFactory().getCurrentSession();
    } catch (final Exception e) {
        session = this.getSessionFactory().openSession();
        sessionOwn = true;
    }

    // get newest sequenceNumber for each cardId
    final DetachedCriteria version = DetachedCriteria.forClass(AlphaCard.class, "cardVersion")
            .add(Property.forName("card.alphaCardIdentifier.cardId")
                    .eqProperty("cardVersion.alphaCardIdentifier.cardId"))
            .setProjection(
                    Projections.projectionList().add(Projections.max("alphaCardIdentifier.sequenceNumber")));

    final Criteria crit = session.createCriteria(AlphaCard.class, "card");
    for (final Criterion c : criteriaArray) {
        // Create the subquery (somehow we need to use the Descriptor or
        // else the subquery-JOIN is not done)
        final DetachedCriteria subcrit = DetachedCriteria.forClass(AlphaCardDescriptor.class, "crit");

        // Join the adornments
        subcrit.createAlias("crit.adornmentList", "ad");

        // Add adornment condition
        subcrit.add(c);

        // Map the subquery back to the outer query
        subcrit.add(Restrictions.eqProperty("card.alphaCardIdentifier", "crit.alphaCardIdentifier"));

        // Narrow down subquery or else we get a NullPointer-Exception
        subcrit.setProjection(Projections.property("crit.alphaCardIdentifier.cardId"));

        // Add this subquery to the outer query.
        crit.add(Subqueries.exists(subcrit));
    }
    crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
            .add(Property.forName("alphaCardIdentifier.sequenceNumber").eq(version))
            .createAlias("alphaCase", "case").add(Restrictions.eq("case.caseId", caseId));

    List<AlphaCard> list = crit.list();
    if (list.size() > 1) {
        final List<AlphaCard> order = (list.get(0)).getAlphaCase().getAlphaCards();
        final List<AlphaCard> orderedList = new LinkedList<AlphaCard>();
        for (final AlphaCard cc : order) {
            for (final AlphaCard c : list) {
                if (c.getAlphaCardIdentifier().equals(cc.getAlphaCardIdentifier())) {
                    orderedList.add(c);
                    break;
                }
            }
        }
        list = orderedList;
    }

    if (sessionOwn) {
        session.close();
    }

    return list;
}

From source file:apm.modules.sys.service.RoleService.java

License:Open Source License

public List<Role> findAllRole() {
    //1.??5?/* w w  w  . j a  v a 2  s. c  om*/
    List<Role> rs = dao.findDefineRoles();

    //2.?
    User user = Users.currentUser();
    DetachedCriteria dc = dao.createDetachedCriteria();
    dc.createAlias("office", "office");
    dc.createAlias("userList", "userList", JoinType.LEFT_OUTER_JOIN);
    dc.add(dataScopeFilter(user, "office", "userList")); //??????
    dc.add(Restrictions.eq(Role.DEL_FLAG, Role.DEL_FLAG_NORMAL));
    dc.addOrder(Order.asc("office.code")).addOrder(Order.asc("name"));

    List<Role> rs2 = dao.find(dc);
    for (int i = 0; i < rs2.size(); i++) { //??
        Role r = rs2.get(i);
        if (!rs.contains(r)) {
            rs.add(r);
        }
    }
    return rs;
}

From source file:apm.modules.sys.service.UserService.java

License:Open Source License

public Page<User> findUser(Page<User> page, User user) {
    DetachedCriteria dc = dao.createDetachedCriteria();
    User currentUser = Users.currentUser();
    dc.createAlias("company", "company");

    if (user.getCompany() != null && StringUtils.isNotEmpty(user.getCompany().getId())) {
        dc.add(Restrictions.or(Restrictions.eq("company.id", user.getCompany().getId()), //?
                Restrictions.like("company.parentIds", "%," + user.getCompany().getId() + ",%") //??
        ));/*from   w  w w  .  ja  v  a 2  s. com*/
    } else {
        dc.add(Restrictions.or(Restrictions.eq("company.id", currentUser.getCompany().getId()), //?
                Restrictions.like("company.parentIds", "%," + currentUser.getCompany().getId() + ",%") //??
        ));
    }
    /*dc.createAlias("office", "office");
    if (user.getOffice()!=null && StringUtils.isNotEmpty(user.getOffice().getId())){
       dc.add(Restrictions.or(                                                   
       Restrictions.eq("office.id", user.getOffice().getId()),                     //
       Restrictions.like("office.parentIds", "%,"+user.getOffice().getId()+",%")      //?
       ));
    }else{
       dc.add(Restrictions.or(                                                   
       Restrictions.eq("office.id", currentUser.getOffice().getId()),                     //
       Restrictions.like("office.parentIds", "%,"+currentUser.getOffice().getId()+",%")      //?
       ));
    }*/
    // ????
    if (!currentUser.isAdmin()) {
        dc.add(Restrictions.ne("id", "1"));
    }
    /*if(user.getOffice() != null && StringUtils.isNotBlank(user.getOffice().getId())){
    dc.add(dataScopeFilter(currentUser, "office", ""));
    }*/
    /*dc.add(dataScopeFilter(currentUser, "office", ""));*/

    //System.out.println(dataScopeFilterString(currentUser, "office", ""));
    if (StringUtils.isNotEmpty(user.getLoginName())) {
        dc.add(Restrictions.like("loginName", "%" + user.getLoginName() + "%"));
    }
    if (StringUtils.isNotEmpty(user.getName())) {
        dc.add(Restrictions.like("name", "%" + user.getName() + "%"));
    }
    dc.add(Restrictions.eq(User.DEL_FLAG, User.DEL_FLAG_NORMAL));
    if (!StringUtils.isNotEmpty(page.getOrderBy())) {
        /*dc.addOrder(Order.asc("company.code")).addOrder(Order.asc("office.code")).addOrder(Order.desc("id"));*/
        dc.addOrder(Order.asc("company.code")).addOrder(Order.desc("id"));
    }
    return dao.find(page, dc);
}

From source file:br.ufmg.hc.telessaude.diagnostico.dominio.dao.ExameDAOLocal.java

public List<Exame> consultar(Integer id, String nomePaciente, Date inicio, Date fim) throws DAOException {
    ArrayList<Criterion> restrict = new ArrayList();
    if (id != null) {
        restrict.add(Restrictions.eq("id", id));
    } else {//from  ww w  .  ja  v a 2 s  . c  om
        if (nomePaciente != null && !nomePaciente.isEmpty()) {
            restrict.add(Restrictions.ilike("pc.nome", nomePaciente, MatchMode.ANYWHERE));
        }
        if (inicio != null) {
            restrict.add(Restrictions.ge("datainclusao", inicio));
        }
        if (fim != null) {
            restrict.add(Restrictions.le("datainclusao", fim));
        }
    }
    try {
        final DetachedCriteria crit = DetachedCriteria.forClass(c);
        final Criteria criteria = crit.getExecutableCriteria(HibernateUtil.currentSession());

        crit.createAlias("paciente", "pc");
        crit.createAlias("status", "st");

        criteria.setProjection(Projections.projectionList().add(Projections.property("id"))
                .add(Projections.property("pc.nome")).add(Projections.property("pc.datanascimento"))
                .add(Projections.property("datainclusao")).add(Projections.property("st.nome")));

        criteria.addOrder(Order.desc("datainclusao"));

        for (final Criterion cri : restrict) {
            criteria.add(cri);
        }

        final List<Object[]> arrays = criteria.list();
        final List<Exame> exames = new ArrayList<>();

        for (Object[] array : arrays) {
            final Exame exame = new Exame(Integer.parseInt(String.valueOf(array[0])));
            exame.setPaciente(new Paciente());
            exame.getPaciente().setNome(String.valueOf(array[1]));
            exame.getPaciente().setDatanascimento((Date) array[2]);
            exame.setDatainclusao((Date) array[3]);
            exame.setStatus(new Status());
            exame.getStatus().setNome(String.valueOf(array[4]));

            exames.add(exame);
        }

        return exames;

    } catch (HibernateException ex) {
        throw new DAOException(ex.getMessage());
    }

}

From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.EntityPropertyTypeDAO.java

License:Apache License

public void fillTermUsageStatistics(List<VocabularyTermWithStats> termsWithStats, VocabularyPE vocabulary) {
    assert termsWithStats != null : "Unspecified terms.";
    assert vocabulary != null : "Unspecified vocabulary.";
    assert termsWithStats.size() == vocabulary.getTerms()
            .size() : "Sizes of terms to be filled and vocabulary terms don't match.";

    Map<Long, VocabularyTermWithStats> termsById = new HashMap<Long, VocabularyTermWithStats>(
            termsWithStats.size());//from ww w .  j a  v  a 2s.  c  o m
    for (VocabularyTermWithStats termWithStats : termsWithStats) {
        Long id = termWithStats.getTerm().getId();
        termsById.put(id, termWithStats);
    }

    final DetachedCriteria criteria = DetachedCriteria.forClass(entityKind.getEntityPropertyClass());
    // alias is the easiest way to restrict on association using criteria
    criteria.createAlias("vocabularyTerm", "term");
    criteria.add(Restrictions.eq("term.vocabularyInternal", vocabulary));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.rowCount());
    projectionList.add(Projections.groupProperty("term.id"));
    criteria.setProjection(projectionList);

    final List<Object[]> results = cast(getHibernateTemplate().findByCriteria(criteria));

    for (Object[] result : results) {
        Integer numberOfUsages = (Integer) result[0];
        Long termId = (Long) result[1];
        termsById.get(termId).registerUsage(entityKind, numberOfUsages);
    }
}

From source file:chiron.maxscore.service.impl.ClassServiceImpl.java

private DetachedCriteria makeCriteria(Map<String, Object> condition) {
    DetachedCriteria criteria = DetachedCriteria.forClass(Class.class);

    if (condition == null) {
        return criteria;
    }//  ww w  .ja va2  s.  c om

    criteria.createAlias("grade", "g");
    criteria.createAlias("g.specialty", "s");
    criteria.createAlias("s.college", "c");

    if (condition.containsKey("college_id")) {
        criteria.add(Restrictions.eq("c.id", condition.get("college_id")));
    } else if (condition.containsKey("specialty_id")) {
        criteria.add(Restrictions.eq("s.id", condition.get("specialty_id")));
    } else if (condition.containsKey("grade_id")) {
        criteria.add(Restrictions.eq("g.id", condition.get("grade_id")));
    }

    if (condition.containsKey("class_name")) {
        criteria.add(
                Restrictions.ilike("className", condition.get("class_name").toString(), MatchMode.ANYWHERE));
    }

    return criteria;
}

From source file:chiron.maxscore.service.impl.GradeServiceImpl.java

private DetachedCriteria makeCriteria(Map<String, Object> condition) {
    DetachedCriteria criteria = DetachedCriteria.forClass(Grade.class);

    if (condition == null) {
        return criteria;
    }//from ww w  .j av  a  2 s.  c om

    criteria.createAlias("specialty", "s");
    criteria.createAlias("s.college", "c");

    if (condition.containsKey("college_id")) {
        criteria.add(Restrictions.eq("c.id", condition.get("college_id")));
    } else if (condition.containsKey("specialty_id")) {
        criteria.add(Restrictions.eq("s.id", condition.get("specialty_id")));
    }

    if (condition.containsKey("grade_name")) {
        criteria.add(
                Restrictions.ilike("gradeName", condition.get("grade_name").toString(), MatchMode.ANYWHERE));
    }

    return criteria;
}

From source file:chiron.maxscore.service.impl.OptionServiceImpl.java

@Override
public List<Option> getRootOptionsByCidAndVer(int cid, int ver) {
    DetachedCriteria criteria = DetachedCriteria.forClass(OptionMapping.class);

    criteria.createAlias("course", "c");
    criteria.createAlias("option", "o");
    criteria.createAlias("parentOption", "p");

    criteria.add(Restrictions.isNull("p"));
    criteria.add(Restrictions.eq("c.id", cid));
    criteria.add(Restrictions.eq("optionVer", ver));

    //        criteria.setProjection(Projections.groupProperty("o.optionGroupId"));
    //        criteria.setProjection(Projections.max("optionVer"));
    List<OptionMapping> oms = optionMappingDAO.search(0, Integer.MAX_VALUE, criteria);
    List<Option> options = new ArrayList<>();
    for (OptionMapping om : oms) {
        options.add(om.getOption());/*ww w . j  a v a2  s.c  o m*/
    }
    return options;
}

From source file:chiron.maxscore.service.impl.OptionServiceImpl.java

@Override
public List<Option> getOptionsByCidAndVer(int cid, int ver) {
    DetachedCriteria criteria = DetachedCriteria.forClass(OptionMapping.class);

    criteria.createAlias("course", "c");
    criteria.createAlias("option", "o");

    criteria.add(Restrictions.eq("c.id", cid));
    criteria.add(Restrictions.eq("optionVer", ver));

    //        criteria.setProjection(Projections.groupProperty("o.optionGroupId"));
    //        criteria.setProjection(Projections.max("optionVer"));
    List<OptionMapping> oms = optionMappingDAO.search(0, Integer.MAX_VALUE, criteria);
    List<Option> options = new ArrayList<>();
    for (OptionMapping om : oms) {
        options.add(om.getOption());/* ww w.  j ava 2  s.  com*/
    }
    return options;
}

From source file:chiron.maxscore.service.impl.SpecialtyServiceImpl.java

private DetachedCriteria makeCriteria(Map<String, Object> condition) {
    DetachedCriteria criteria = DetachedCriteria.forClass(Specialty.class);

    if (condition == null) {
        return criteria;
    }//from w  w  w  . j a  v  a2 s . co m

    if (condition.containsKey("college_id")) {
        criteria.createAlias("college", "c").add(Restrictions.eq("c.id", condition.get("college_id")));
    }

    if (condition.containsKey("specialty_name")) {
        criteria.add(Restrictions.ilike("specialtyName", condition.get("specialty_name").toString(),
                MatchMode.ANYWHERE));
    }

    return criteria;
}