Example usage for org.hibernate.criterion DetachedCriteria setProjection

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

Introduction

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

Prototype

public DetachedCriteria setProjection(Projection projection) 

Source Link

Document

Set the projection to use.

Usage

From source file:de.forsthaus.backend.dao.impl.SecRolegroupDAOImpl.java

License:Open Source License

@Override
public boolean isGroupInRole(SecGroup aGroup, SecRole aRole) {
    DetachedCriteria criteria = DetachedCriteria.forClass(SecRolegroup.class);
    criteria.add(Restrictions.eq("secGroup", aGroup));
    criteria.add(Restrictions.eq("secRole", aRole));
    criteria.setProjection(Projections.rowCount());

    int count = DataAccessUtils.intResult(getHibernateTemplate().findByCriteria(criteria));
    return count > 0;
}

From source file:de.forsthaus.backend.dao.impl.SecUserroleDAOImpl.java

License:Open Source License

@Override
public boolean isUserInRole(SecUser aUser, SecRole aRole) {
    DetachedCriteria criteria = DetachedCriteria.forClass(SecUserrole.class);
    criteria.add(Restrictions.eq("secUser", aUser));
    criteria.add(Restrictions.eq("secRole", aRole));
    criteria.setProjection(Projections.rowCount());

    int count = DataAccessUtils.intResult(getHibernateTemplate().findByCriteria(criteria));
    return count > 0;
}

From source file:de.iteratec.iteraplan.businesslogic.reports.query.node.AttributeLeafNode.java

License:Open Source License

/**
 * Creates the {@link DetachedCriteria} for the {@link Comparator#NO_ASSIGNMENT} comparator.
 * //from   w  w w  .  j  a  va  2  s.c om
 * @param criteria the criteria to add the restrictions for
 * @param criterion the additional criterion, can be {@code null}
 * @return the {@link DetachedCriteria} for the {@link Comparator#NO_ASSIGNMENT} comparator
 */
protected DetachedCriteria createNoAssignmentCriteria(DetachedCriteria criteria, Criterion criterion) {
    final DetachedCriteria numberAvs = DetachedCriteria.forClass(getAttributeValueClass(), "numberAV");
    numberAvs.createAlias("numberAV.attributeValueAssignments", "avas");
    numberAvs.add(Restrictions.eq("attributeType.id", Integer.valueOf(getAttributeId())));
    numberAvs.setProjection(Property.forName("avas.buildingBlock"));

    if (criterion != null) {
        numberAvs.add(criterion);
    }

    final String bbId = String.format("%s.%s", getResultTypeDBNameShortWithSuffix(), "id");
    criteria.add(Subqueries.propertyNotIn(bbId, numberAvs));

    return criteria;
}

From source file:de.iteratec.iteraplan.businesslogic.reports.query.node.AttributeLeafNode.java

License:Open Source License

/** {@inheritDoc} */
@Override/*from  w w w  .j a va2 s .co  m*/
DetachedCriteria getWhereCriteria(DetachedCriteria criteria) {
    if (getComparator() == Comparator.NO_ASSIGNMENT) {
        return createNoAssignmentCriteria(criteria, null);
    }

    final String associationPath = String.format("%s.%s", getResultTypeDBNameShortWithSuffix(),
            "attributeValueAssignments");
    final String alias = String.format("%sAlias", "attributeValueAssignments");
    criteria.createAlias(associationPath, alias, Criteria.INNER_JOIN);

    final String effectivePropertyName = String.format("%s.%s", alias, "attributeValue");

    DetachedCriteria numberAvs = DetachedCriteria.forClass(getAttributeValueClass(), "numberAV");
    numberAvs.add(Restrictions.eq("attributeType.id", Integer.valueOf(getAttributeId())));
    numberAvs.add(this.getCriterionForComparator());
    numberAvs.setProjection(Property.forName("id"));
    criteria.add(Subqueries.propertyIn(effectivePropertyName, numberAvs));

    return criteria;
}

From source file:de.iteratec.iteraplan.businesslogic.reports.query.node.ResponsibilityAttributeLeafNode.java

License:Open Source License

private Criterion createUserCriterion() {
    final DetachedCriteria user = DetachedCriteria.forClass(User.class, "user");
    user.add(new IteraplanLikeExpression("user.loginName", (String) getProcessedPattern(), true));
    user.setProjection(Property.forName("user.id"));

    final DetachedCriteria userGroup = DetachedCriteria.forClass(UserGroup.class, "userGroup");
    userGroup.add(new IteraplanLikeExpression("userGroup.name", (String) getProcessedPattern(), true));
    userGroup.setProjection(Property.forName("userGroup.id"));

    return Restrictions.or(Subqueries.propertyIn("userEntity", user),
            Subqueries.propertyIn("userEntity", userGroup));
}

From source file:de.iteratec.iteraplan.businesslogic.reports.query.node.SealLeafNode.java

License:Open Source License

/**
 * Returns the Criterion for the outdated entities.
 * //from   w  ww. j  av  a2 s .c  om
 * @param effectivePropertyName the field name representing the seal state
 * @return the Criterion for the outdated entities
 */
private Criterion getOutdatedCriterion(String effectivePropertyName) {
    int expirationInDays = IteraplanProperties.getIntProperty(IteraplanProperties.SEAL_EXPIRATION_DAYS);
    Date minusDays = new DateTime().minusDays(expirationInDays).toDate();
    String idPropertyName = String.format("%s.%s", getResultTypeDBNameShortWithSuffix(), "id");

    final DetachedCriteria maxSealDate = DetachedCriteria.forClass(Seal.class, "seal");
    maxSealDate.setProjection(Projections.max("seal.date"));
    maxSealDate.add(Restrictions.eqProperty("seal.bb", idPropertyName));

    final DetachedCriteria lastSeal = DetachedCriteria.forClass(Seal.class, "lastSeal");
    lastSeal.add(Subqueries.propertyEq("lastSeal.date", maxSealDate));
    lastSeal.add(Restrictions.eqProperty("lastSeal.bb", idPropertyName));
    lastSeal.add(Restrictions.le("lastSeal.date", minusDays));
    lastSeal.setProjection(Projections.distinct(Property.forName("lastSeal.bb")));

    Criterion outdatedCriterion = Subqueries.propertyIn(idPropertyName, lastSeal);
    Criterion valid = Restrictions.eq(effectivePropertyName, SealState.VALID.toString());

    return Restrictions.and(valid, outdatedCriterion);
}

From source file:debop4k.data.orm.hibernate.dao.HibernateAsyncDao.java

License:Apache License

/**
 * ? ? {@link DetachedCriteria} ??  ROW COUNT  .
 *///  w w w.  j  a  v a 2  s . c  o m
public Promise<Long, Exception> countAsync(@NonNull DetachedCriteria dc) {
    return uniqueResultAsync(dc.setProjection(Projections.rowCount()));
}

From source file:dk.teachus.backend.dao.hibernate.HibernateBookingDAO.java

License:Apache License

@Transactional(readOnly = true)
public int getBookingCount(Period period) {
    DetachedCriteria c = DetachedCriteria.forClass(BookingImpl.class);
    c.add(Restrictions.eq("period", period));
    c.setProjection(Projections.count("id"));

    int count = getCount(c);

    return count;
}

From source file:edu.northwestern.bioinformatics.studycalendar.dao.StudyDao.java

License:BSD License

@SuppressWarnings({ "unchecked" })
private Collection<Integer> searchForVisibleIds(VisibleStudyParameters parameters, String search,
        boolean includeManaging, boolean includeParticipating, boolean includeSpecific) {
    if (log.isDebugEnabled()) {
        log.debug("Searching visible studies for {} with {}", parameters,
                search == null ? "no term" : "term \"" + search + '"');
        if (!includeManaging)
            log.debug("- Excluding managing");
        if (!includeParticipating)
            log.debug("- Excluding participating");
        if (!includeSpecific)
            log.debug("- Excluding specific studies");
    }/*from w w w  . j a v  a  2  s.c om*/
    List<DetachedCriteria> separateCriteria = new LinkedList<DetachedCriteria>();
    if (parameters.isAllManagingSites() && includeManaging) {
        if (search == null) {
            return null; // shortcut for all
        } else {
            separateCriteria.add(criteria().add(searchRestriction(search)));
        }
    } else {
        // These are implemented as separate queries and then merged because
        // the criteria are too complex to reliably express in a single statement.

        if (includeSpecific && !parameters.getSpecificStudyIdentifiers().isEmpty()) {
            separateCriteria.add(criteria()
                    .add(MoreRestrictions.in("assignedIdentifier", parameters.getSpecificStudyIdentifiers())));
        }
        if (includeManaging && !parameters.getManagingSiteIdentifiers().isEmpty()) {
            separateCriteria.add(criteria().createAlias("managingSites", "ms", Criteria.LEFT_JOIN)
                    .add(Restrictions.disjunction()
                            .add(MoreRestrictions.in("ms.assignedIdentifier",
                                    parameters.getManagingSiteIdentifiers()))
                            .add(Restrictions.isNull("ms.assignedIdentifier")) // <- unmanaged studies
            ));
        }
        if (includeParticipating) {
            if (parameters.isAllParticipatingSites()) {
                separateCriteria
                        .add(criteria().createAlias("studySites", "ss").add(Restrictions.isNotNull("ss.id")));
            } else if (!parameters.getParticipatingSiteIdentifiers().isEmpty()) {
                separateCriteria.add(criteria().createAlias("studySites", "ss").createAlias("ss.site", "s")
                        .add(MoreRestrictions.in("s.assignedIdentifier",
                                parameters.getParticipatingSiteIdentifiers())));
            }
        }

        for (DetachedCriteria criteria : separateCriteria) {
            if (search != null) {
                criteria.add(searchRestriction(search));
            }
        }
    }

    Set<Integer> ids = new LinkedHashSet<Integer>();
    for (DetachedCriteria criteria : separateCriteria) {
        ids.addAll(getHibernateTemplate().findByCriteria(criteria.setProjection(Projections.id())));
    }
    log.debug("Found IDs {}", ids);
    return ids;
}

From source file:edu.uoc.dao.impl.MeetingRoomDaoImpl.java

@Override
public List<MeetingRoom> findbyForm(SearchMeeting searchMeeting, List<Room> ids_room) {

    String topic = searchMeeting.getTopic();
    Room room = searchMeeting.getRoom();

    //Convert TimeStamp to Date
    Timestamp tsStart = Util.converToTimestamp(searchMeeting.getStart_meeting(), logger);
    Timestamp tsEnd = Util.converToTimestamp(searchMeeting.getEnd_meeting(), logger);

    Criteria criteria;/*from   w  w w.  jav a  2s . c  o  m*/
    criteria = this.getSession().createCriteria(MeetingRoom.class, "meeting");
    criteria.add(Restrictions.eq("meeting.finished", (byte) 1));
    criteria.add(Restrictions.eq("meeting.recorded", (byte) 1));
    if (tsStart != null) {
        criteria.add(Restrictions.ge("meeting.start_meeting", tsStart));
    }
    if (tsEnd != null) {
        criteria.add(Restrictions.le("meeting.end_meeting", tsEnd));
    }
    if (topic != null && topic.length() > 0) {
        criteria.add(Restrictions.like("meeting.topic", "%" + topic + "%"));
    }
    if (room != null && room.getId() > 0) {
        criteria.add(Restrictions.eq("meeting.id_room", room));
    } else {
        criteria.add(Restrictions.in("meeting.id_room", ids_room));
    }
    if (searchMeeting.getParticipants() != null && searchMeeting.getParticipants().length() > 0) {
        DetachedCriteria subCriteria = DetachedCriteria.forClass(UserMeeting.class, "userMeeting");
        subCriteria.createAlias("userMeeting.pk.meeting", "userMeeting.id");
        subCriteria.setProjection(Projections.projectionList().add(Projections.property("userMeeting.id")));
        subCriteria.add(Restrictions.eqProperty("meeting.id", "userMeeting.id"));

        DetachedCriteria subCriteriaUser = DetachedCriteria.forClass(User.class, "user");
        subCriteriaUser.setProjection(Projections.projectionList().add(Projections.property("user.id")));
        subCriteriaUser.add(Restrictions.like("user.fullname", "%" + searchMeeting.getParticipants() + "%"));
        subCriteriaUser.add(Restrictions.eqProperty("user.id", "userMeeting.pk.user.id"));
        subCriteria.add(Subqueries.exists(subCriteriaUser));
        criteria.add(Subqueries.exists(subCriteria));
    }
    logger.info("Criteria " + criteria.toString());

    return criteria.list();
}