Example usage for org.hibernate.criterion Restrictions eqProperty

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

Introduction

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

Prototype

public static PropertyExpression eqProperty(String propertyName, String otherPropertyName) 

Source Link

Document

Apply an "equal" constraint to two properties

Usage

From source file:de.escidoc.core.aa.business.filter.RoleFilter.java

License:Open Source License

/**
 * Evaluate a CQL term node.//from  w  ww.j  av  a  2s  .c om
 *
 * @param node CQL node
 * @return Hibernate query reflecting the given CQL query
 * @throws InvalidSearchQueryException thrown if the given search query could not be translated into a SQL query
 */
@Override
protected Criterion evaluate(final CQLTermNode node) throws InvalidSearchQueryException {
    Criterion result = null;
    final Object[] parts = criteriaMap.get(node.getIndex());
    final String value = node.getTerm();

    if (parts != null && !specialCriteriaNames.contains(node.getIndex())) {
        result = evaluate(node.getRelation(), (String) parts[1], value, (Integer) parts[0] == COMPARE_LIKE);
    } else {
        final String columnName = node.getIndex();

        if (columnName != null) {
            if ("limited".equals(columnName)) {
                result = Boolean.parseBoolean(value) ? Restrictions.isNotEmpty("scopeDefs")
                        : Restrictions.isEmpty("scopeDefs");
            } else if ("granted".equals(columnName)) {
                final DetachedCriteria subQuery = DetachedCriteria.forClass(RoleGrant.class, "rg");

                subQuery.setProjection(Projections.rowCount());
                subQuery.add(Restrictions.eqProperty("escidocRole.id", "r.id"));

                result = Boolean.parseBoolean(value) ? Subqueries.lt(0L, subQuery)
                        : Subqueries.eq(0L, subQuery);
            } else if (columnName.equals(Constants.FILTER_CREATION_DATE)
                    || columnName.equals(Constants.FILTER_PATH_CREATION_DATE)) {
                result = evaluate(node.getRelation(), "creationDate",
                        value != null && value.length() > 0 ? new Date(new DateTime(value).getMillis()) : null,
                        false);
            } else {
                throw new InvalidSearchQueryException("unknown filter criteria: " + columnName);
            }
        }
    }
    return result;
}

From source file:de.escidoc.core.aa.business.persistence.hibernate.HibernateEscidocRoleDao.java

License:Open Source License

/**
 * See Interface for functional description.
 *
 * @see EscidocRoleDaoInterface #retrieveRoles(java.util.Map, int, int, java.lang.String,
 *      de.escidoc.core.common.util.list.ListSorting)
 *///  ww  w  . j av a  2 s.co m
@Override
public List<EscidocRole> retrieveRoles(final Map<String, Object> criterias, final int offset,
        final int maxResults, final String orderBy, final ListSorting sorting)
        throws SqlDatabaseSystemException {

    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(EscidocRole.class, "r");
    detachedCriteria.add(Restrictions.ne("id", EscidocRole.DEFAULT_USER_ROLE_ID));

    if (criterias != null && !criterias.isEmpty()) {
        // ids
        final Set<String> roleIds = mergeSets((Set<String>) criterias.remove(Constants.DC_IDENTIFIER_URI),
                (Set<String>) criterias.remove(Constants.FILTER_PATH_ID));
        if (roleIds != null && !roleIds.isEmpty()) {
            detachedCriteria.add(Restrictions.in("id", roleIds.toArray()));
        }

        // limited
        final String limited = (String) criterias.remove("limited");
        if (limited != null) {
            if (Boolean.parseBoolean(limited)) {
                detachedCriteria.add(Restrictions.isNotEmpty("scopeDefs"));
            } else {
                detachedCriteria.add(Restrictions.isEmpty("scopeDefs"));
            }
        }

        // granted
        final String granted = (String) criterias.remove("granted");
        if (granted != null) {
            final DetachedCriteria subQuery = DetachedCriteria.forClass(RoleGrant.class, "rg");
            subQuery.setProjection(Projections.rowCount());
            subQuery.add(Restrictions.eqProperty("escidocRole.id", "r.id"));

            if (Boolean.parseBoolean(granted)) {
                detachedCriteria.add(Subqueries.lt(0, subQuery));
            } else {
                detachedCriteria.add(Subqueries.eq(0, subQuery));
            }
        }

        for (final Entry<String, Object[]> stringEntry : criteriaMap.entrySet()) {
            final Object criteriaValue = criterias.remove(stringEntry.getKey());
            if (criteriaValue != null) {
                final Object[] parts = stringEntry.getValue();
                if (parts[0].equals(COMPARE_EQ)) {
                    detachedCriteria.add(Restrictions.eq((String) parts[1], criteriaValue));
                } else {
                    detachedCriteria.add(Restrictions.like((String) parts[1], criteriaValue));
                }
            }
        }
    }

    if (orderBy != null) {
        if (sorting == ListSorting.ASCENDING) {
            detachedCriteria.addOrder(Order.asc(propertiesNamesMap.get(orderBy)));
        } else if (sorting == ListSorting.DESCENDING) {
            detachedCriteria.addOrder(Order.desc(propertiesNamesMap.get(orderBy)));
        }
    }

    if (criterias != null && criterias.isEmpty()) {

        final List<EscidocRole> result;
        try {
            result = getHibernateTemplate().findByCriteria(detachedCriteria, offset, maxResults);
        } catch (final DataAccessException e) {
            throw new SqlDatabaseSystemException(e);
        }

        return result;
    } else {
        // unsupported filter criteria has been found, therefore the result
        // list must be empty.
        return new ArrayList<EscidocRole>(0);
    }
}

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  w  w. j a va  2  s .co m
 * @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: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 . j  av a2s.  com*/
    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();
}

From source file:es.sm2.openppm.core.dao.EmployeeDAO.java

License:Open Source License

/**
 * Find Approvals Time Sheets by Functional Manager
 * /*  w ww  .j  av  a2  s  .c  o m*/
 * @param user
 * @param initDate
 * @param endDate
 * @param status
 * @param statusResource
 * @param includeClosed
 * @param onlyOperations 
 * @param employees - not equals
 * @return
 */
@SuppressWarnings("unchecked")
public List<Employee> findApprovals(Employee user, Date initDate, Date endDate, String status,
        String statusResource, boolean includeClosed, List<Employee> employees, boolean onlyOperations) {

    Resourceprofiles profile = user.getResourceprofiles();

    Criteria crit = getSession().createCriteria(getPersistentClass(), "e")
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).setFetchMode(Employee.CONTACT, FetchMode.JOIN);

    if (ValidateUtil.isNotNull(employees)) {

        List<Integer> ids = new ArrayList<Integer>();
        for (Employee item : employees) {
            ids.add(item.getIdEmployee());
        }

        crit.add(Restrictions.not(Restrictions.in("e." + Employee.IDEMPLOYEE, ids)));
    }

    crit.createCriteria(Employee.TIMESHEETS, "ts").add(Restrictions.eq(Timesheet.INITDATE, initDate))
            .add(Restrictions.eq(Timesheet.ENDDATE, endDate)).add(Restrictions.eq(Timesheet.STATUS, status))
            .createAlias(Timesheet.PROJECTACTIVITY, "pa", Criteria.LEFT_JOIN)
            .createAlias("pa." + Projectactivity.PROJECT, "p", Criteria.LEFT_JOIN);

    if (ValidateUtil.isNotNull(statusResource)) {
        crit.createCriteria("pa." + Projectactivity.TEAMMEMBERS)
                .add(Restrictions.eq(Teammember.STATUS, statusResource)).createCriteria(Teammember.EMPLOYEE)
                .add(Restrictions.eqProperty(Employee.IDEMPLOYEE, "e." + Employee.IDEMPLOYEE));
    } else if (onlyOperations) {
        crit.add(Restrictions.isNotNull("ts." + Timesheet.OPERATION));
    }

    // Exluce projects closed
    if (!includeClosed) {
        crit.add(Restrictions.and(Restrictions.ne("p." + Project.STATUS, Constants.STATUS_CLOSED),
                Restrictions.ne("p." + Project.STATUS, Constants.STATUS_ARCHIVED)));
    }

    // Filter by User. Settings by company for last approval. 
    if (profile.getIdProfile() == Constants.ROLE_FM) {

        crit.add(Restrictions.or(Restrictions.eq("p." + Project.EMPLOYEEBYFUNCTIONALMANAGER, user),
                Restrictions.and(Restrictions.isNull("ts." + Timesheet.PROJECTACTIVITY),
                        Restrictions.eq("e." + Employee.PERFORMINGORG, user.getPerformingorg()))));
    } else if (profile.getIdProfile() == Constants.ROLE_PMO) {

        crit.add(Restrictions.or(Restrictions.eq("p." + Project.PERFORMINGORG, user.getPerformingorg()),
                Restrictions.and(Restrictions.isNull("ts." + Timesheet.PROJECTACTIVITY),
                        Restrictions.eq("e." + Employee.PERFORMINGORG, user.getPerformingorg()))));
    }

    return crit.list();
}

From source file:fr.gael.dhus.olingo.v1.SQLVisitor.java

License:Open Source License

private Criterion getCriterionComparative(BinaryOperator operator, Object left, Object right) {
    Criterion criterion = null;// w w  w .  j av a 2 s  .  c  o m
    if (left instanceof Member) {
        if (right instanceof Member) {
            // property <operator> property
            String lvalue = ((Member) left).getName();
            String rvalue = ((Member) right).getName();
            switch (operator) {
            case EQ: {
                criterion = Restrictions.eqProperty(lvalue, rvalue);
                break;
            }
            case NE: {
                criterion = Restrictions.neProperty(lvalue, rvalue);
                break;
            }
            case GT: {
                criterion = Restrictions.gtProperty(lvalue, rvalue);
                break;
            }
            case GE: {
                criterion = Restrictions.geProperty(lvalue, rvalue);
                break;
            }
            case LT: {
                criterion = Restrictions.ltProperty(lvalue, rvalue);
                break;
            }
            case LE: {
                criterion = Restrictions.leProperty(lvalue, rvalue);
                break;
            }
            default:
                throw new UnsupportedOperationException("Unsupported operation: " + operator.toUriLiteral());
            }
        } else {
            // property <operator> literal
            String property = ((Member) left).getName();
            criterion = internalCriterionComparative(operator, property, right);
        }
    } else if (right instanceof Member) {
        // literal <operator> property
        String property = ((Member) right).getName();
        criterion = internalCriterionComparative(operator, property, left);
    } else if (left instanceof Comparable) {
        // literal <operator> literal
        Comparable comparable = (Comparable) left;
        boolean bool;
        int result = comparable.compareTo(right);
        switch (operator) {
        case EQ: {
            bool = result == 0;
            break;
        }
        case NE: {
            bool = result != 0;
            break;
        }
        case GT: {
            bool = result > 0;
            break;
        }
        case GE: {
            bool = result >= 0;
            break;
        }
        case LT: {
            bool = result < 0;
            break;
        }
        case LE: {
            bool = result <= 0;
            break;
        }
        default:
            throw new UnsupportedOperationException("Unsupported operation: " + operator.toUriLiteral());
        }
        if (bool) {
            criterion = Restrictions.sqlRestriction("0=0");
        } else {
            criterion = Restrictions.sqlRestriction("0<>0");
        }
    }
    return criterion;
}

From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java

License:BSD License

private DetachedCriteria getDatumSubquery(CharacterizationQueryBean charQuery, String projectionProperty) {
    DetachedCriteria subCrit = DetachedCriteria.forClass(Datum.class, "subCrit");
    subCrit.setProjection(Projections.distinct(Property.forName(projectionProperty)));
    Criterion datumCrit = getDatumCriterion(charQuery);
    subCrit.add(datumCrit);//www . j av a 2s  .co  m
    subCrit.add(Restrictions.eqProperty("subCrit." + projectionProperty, "rootCrit.id"));
    return subCrit;
}

From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java

License:BSD License

private DetachedCriteria getCharacterizationSubquery(CharacterizationQueryBean charQuery,
        String projectionProperty) {
    DetachedCriteria subCrit = DetachedCriteria.forClass(Characterization.class, "subCrit");
    subCrit.setProjection(Projections.distinct(Property.forName(projectionProperty)));
    // join finding and datum
    if (!StringUtils.isEmpty(charQuery.getDatumName())) {
        subCrit.createAlias("subCrit.findingCollection", "finding", CriteriaSpecification.LEFT_JOIN);
        subCrit.createAlias("finding.datumCollection", "datum", CriteriaSpecification.LEFT_JOIN);
    }//from  www.  j  a  va2  s . com
    Criterion charCrit = getCharacterizationCriterion(charQuery, "");
    subCrit.add(charCrit);
    subCrit.add(Restrictions.eqProperty("subCrit." + projectionProperty, "rootCrit.id"));
    return subCrit;
}

From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java

License:BSD License

private DetachedCriteria getFunctionalizingEntitySubquery(CompositionQueryBean query, String funcEntityAlias,
        String projectionProperty) throws Exception {
    DetachedCriteria subCrit = DetachedCriteria.forClass(FunctionalizingEntity.class, "subCrit");
    subCrit.setProjection(Projections.distinct(Property.forName(projectionProperty)));
    Criterion funcCrit = getFunctionalizingEntityCriterion(query, "");
    subCrit.add(funcCrit);//from   ww  w  . j  av a 2  s .co  m
    subCrit.add(Restrictions.eqProperty("subCrit." + projectionProperty, funcEntityAlias + "id"));
    return subCrit;
}

From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java

License:BSD License

private DetachedCriteria getFunctionSubquery(CompositionQueryBean query, String funcAlias1, String funcAlias2,
        String projectionProperty) throws Exception {
    DetachedCriteria subCrit = DetachedCriteria.forClass(Function.class, "subCrit");
    subCrit.setProjection(Projections.distinct(Property.forName(projectionProperty)));
    Criterion funcCrit = getFunctionCriterion(query, "", "");
    subCrit.add(funcCrit);/* w w  w. ja  v a2  s . com*/
    if (funcAlias1.equals(funcAlias2)) {
        subCrit.add(Restrictions.eqProperty("subCrit." + projectionProperty, funcAlias1 + "id"));
    } else {
        subCrit.add(Restrictions.or(Restrictions.eqProperty("subCrit." + projectionProperty, funcAlias1 + "id"),
                Restrictions.eqProperty("subCrit." + projectionProperty, funcAlias2 + "id")));
    }
    return subCrit;
}