Example usage for org.hibernate.criterion Restrictions in

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

Introduction

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

Prototype

public static Criterion in(String propertyName, Collection values) 

Source Link

Document

Apply an "in" constraint to the named property.

Usage

From source file:com.enonic.cms.store.dao.FindContentByKeysQuerier.java

License:Open Source License

private boolean eagerFetchingIsSafe(final Collection<ContentKey> contentKeys) {
    final Number number = (Number) hibernateSession.createCriteria(SectionContentEntity.class)
            .add(Restrictions.in("content.key", contentKeys)).setProjection(Projections.rowCount())
            .uniqueResult();//w w w.j  a  va 2  s .c om

    return number.intValue() <= (EAGER_FETCH_NUMBER_OF_SECTIONS_THRESHOLD * contentKeys.size());
}

From source file:com.enonic.cms.store.dao.GroupEntityDao.java

License:Open Source License

public GroupEntity findGlobalGroupByName(final String name, final boolean includeDeleted) {

    return executeSingleResult(GroupEntity.class, new HibernateCallback() {

        public Object doInHibernate(Session session) throws HibernateException, SQLException {

            Criteria crit = session.createCriteria(GroupEntity.class).setCacheable(true);
            crit.add(Restrictions.eq("name", name));
            crit.add(Restrictions.in("type", GroupType.getIntegerValues(GLOBAL_GROUP_TYPES)));

            if (!includeDeleted) {
                crit.add(Restrictions.eq("deleted", 0));
            }/*from  w  w  w.  ja  v  a2 s  .com*/

            List list = crit.list();
            if (list.size() == 0) {
                return null;
            }

            // we return first one if found
            return list.get(0);
        }
    });
}

From source file:com.enonic.cms.store.dao.GroupEntityDao.java

License:Open Source License

@SuppressWarnings({ "unchecked" })
public List<GroupEntity> findByQuery(final GroupQuery spec) {
    return (List<GroupEntity>) getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session) throws HibernateException, SQLException {

            Criteria crit = session.createCriteria(GroupEntity.class).setCacheable(true);

            if (spec.getUserStoreKey() != null) {
                crit.add(Restrictions.eq("userStore.key", spec.getUserStoreKey().toInt()));
            } else if (spec.isGlobalOnly()) {
                crit.add(Restrictions.isNull("userStore.key"));
            }//from  w w  w  .  j a v  a 2 s  .  c  o m

            if (!spec.isIncludeDeleted()) {
                crit.add(Restrictions.eq("deleted", 0));
            }
            if (spec.getQuery() != null && spec.getQuery().length() > 0) {
                crit.add(Restrictions.ilike("name", spec.getQuery(), MatchMode.ANYWHERE));
            }

            if (spec.getOrderBy() != null && !spec.getOrderBy().equals("")) {
                if (spec.isOrderAscending()) {
                    crit.addOrder(Order.asc(spec.getOrderBy()).ignoreCase());
                } else {
                    crit.addOrder(Order.desc(spec.getOrderBy()).ignoreCase());
                }
            }

            if (spec.getGroupTypes() != null) {
                Collection<GroupType> gt = new ArrayList<GroupType>(spec.getGroupTypes());
                if (spec.isIncludeBuiltInGroups()) {
                    if (!spec.isIncludeAnonymousGroups()) {
                        gt.remove(GroupType.ANONYMOUS);
                    }
                } else {
                    gt.removeAll(GroupType.getBuiltInTypes());
                }
                if (spec.isIncludeUserGroups()) {
                    gt.add(GroupType.USER);
                }
                crit.add(Restrictions.in("type", GroupType.getIntegerValues(gt)));
            } else {
                Collection<GroupType> notGroupType = new ArrayList<GroupType>();
                if (!spec.isIncludeBuiltInGroups()) {
                    notGroupType.addAll(GroupType.getBuiltInTypes());
                    if (spec.isIncludeAnonymousGroups()) {
                        notGroupType.remove(GroupType.ANONYMOUS);
                    }
                }
                if (!spec.isIncludeUserGroups()) {
                    notGroupType.add(GroupType.USER);
                }
                if (!spec.isIncludeAnonymousGroups() && !notGroupType.contains(GroupType.ANONYMOUS)) {
                    notGroupType.add(GroupType.ANONYMOUS);
                }
                crit.add(Restrictions.not(Restrictions.in("type", GroupType.getIntegerValues(notGroupType))));
            }

            crit.setFirstResult(spec.getIndex());
            List list = crit.list();
            if (spec.getCount() == null) {
                return list;
            } else {
                return list.subList(0, Math.min(spec.getCount(), list.size()));
            }
        }
    });
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchClassDaoImpl.java

License:Open Source License

/**
 * API to get the list of Batch Classes specifying startindex, no of results and sorting if any.
 * //from  w w  w.  ja v  a 2  s.c  o m
 * @param firstResult int
 * @param maxResults int 
 * @param order List<Order>
 * @param userRoles Set<String>
 * @return List of batch class.
 */
@Override
public List<BatchClass> getBatchClassList(final int firstResult, final int maxResults, final List<Order> order,
        final Set<String> userRoles) {
    EphesoftCriteria criteria = criteria();
    List<BatchClass> batchClassList = null;
    if (userRoles == null) {
        batchClassList = new ArrayList<BatchClass>(0);
    } else {
        List<String> roleList = new ArrayList<String>();
        for (String userRole : userRoles) {
            if (null == userRole || userRole.isEmpty()) {
                continue;
            }
            roleList.add(userRole);
        }
        DetachedCriteria detachedCriteria = criteria();
        detachedCriteria.createAlias(ASSIGNED_GROUPS, ASSIGNED_GROUPS);
        detachedCriteria.add(Restrictions.in(ASSIGNED_GROUPS_NAME, roleList));
        detachedCriteria.setProjection(Projections.distinct(Projections.property(BATCH_ID)));
        criteria.add(Subqueries.propertyIn(BATCH_ID, detachedCriteria));
        criteria.add(Restrictions.or(Restrictions.isNull(IS_DELETED), Restrictions.eq(IS_DELETED, false)));
        batchClassList = find(criteria, firstResult, maxResults, order.toArray(new Order[order.size()]));
    }
    return batchClassList;
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchClassDaoImpl.java

License:Open Source License

/**
 * This API will fetch all the batch classes of current user role.
 * //from  w w w . jav  a 2s . c  om
 * @param userRoles Set<String>
 * @return List<BatchClass>
 */
@Override
public List<BatchClass> getAllBatchClassesByUserRoles(final Set<String> userRoles) {
    DetachedCriteria criteria = criteria();
    List<BatchClass> batchClassList = null;
    if (userRoles == null) {
        batchClassList = new ArrayList<BatchClass>();
    } else {
        List<String> roleList = new ArrayList<String>();
        for (String userRole : userRoles) {
            if (null == userRole || userRole.isEmpty()) {
                continue;
            }
            roleList.add(userRole);
        }
        criteria.createAlias(ASSIGNED_GROUPS, ASSIGNED_GROUPS);
        criteria.add(Restrictions.in(ASSIGNED_GROUPS_NAME, roleList));
        criteria.add(Restrictions.or(Restrictions.isNull(IS_DELETED), Restrictions.eq(IS_DELETED, false)));
        criteria.addOrder(org.hibernate.criterion.Order.asc(BATCH_ID));
        criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        batchClassList = find(criteria);
    }

    return batchClassList;
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchClassDaoImpl.java

License:Open Source License

/**
 * This API will fetch the size of batchclass.
 * //from  w  w  w  .  j  a  va 2s .c  om
 * @param userRoles Set<String>
 * @return batchClass size
 */
@Override
public int getAllBatchClassCountExcludeDeleted(Set<String> userRoles) {
    DetachedCriteria criteria = criteria();
    if (userRoles != null && !userRoles.isEmpty()) {
        List<String> roleList = new ArrayList<String>();
        for (String userRole : userRoles) {
            if (null == userRole || userRole.isEmpty()) {
                continue;
            }
            roleList.add(userRole);
        }
        criteria.createAlias(ASSIGNED_GROUPS, ASSIGNED_GROUPS);
        criteria.add(Restrictions.in(ASSIGNED_GROUPS_NAME, roleList));
    }
    criteria.add(Restrictions.or(Restrictions.isNull(IS_DELETED), Restrictions.eq(IS_DELETED, false)));
    return count(criteria);
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchClassDaoImpl.java

License:Open Source License

/**
 * API to the batch class with respect to the given batch class id and the roles provided.
 * /*from w ww  .  j  ava 2  s. c  o m*/
 * @param userRoles {@link Set<{@link String}>}
 * @param batchClassID {@link String}
 * @return {@link BatchClass}
 */
@Override
public BatchClass getBatchClassByUserRoles(final Set<String> userRoles, String batchClassID) {
    DetachedCriteria criteria = criteria();
    List<BatchClass> batchClassList = null;
    BatchClass batchClass = null;
    if (userRoles == null) {
        batchClassList = new ArrayList<BatchClass>();
    } else {
        List<String> roleList = new ArrayList<String>();
        for (String userRole : userRoles) {
            if (null == userRole || userRole.isEmpty()) {
                continue;
            }
            roleList.add(userRole);
        }
        criteria.createAlias(ASSIGNED_GROUPS, ASSIGNED_GROUPS);
        criteria.add(Restrictions.in(ASSIGNED_GROUPS_NAME, roleList));
        criteria.add(Restrictions.eq(IDENTIFIER, batchClassID));
        criteria.add(Restrictions.or(Restrictions.isNull(IS_DELETED), Restrictions.eq(IS_DELETED, false)));
        criteria.addOrder(org.hibernate.criterion.Order.asc(BATCH_ID));
        criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        batchClassList = find(criteria);
        if (batchClassList != null && !batchClassList.isEmpty()) {
            batchClass = batchClassList.get(0);
        }
    }

    return batchClass;
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchInstanceDaoImpl.java

License:Open Source License

/**
 * An API to fetch all batch instance by batch name or id.
 * //from   w ww.ja v  a  2s  . c o m
 * @param searchString String
 * @param userRoles Set<String>
 * @return List<BatchInstance>
 */
@Override
public List<BatchInstance> getBatchInstancesByBatchNameOrId(String searchString, Set<String> userRoles) {
    DetachedCriteria criteria = criteria();

    List<BatchInstance> batchInstances = new ArrayList<BatchInstance>();

    Set<String> batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);

    String searchStringLocal = searchString.replaceAll(DataAccessConstant.PERCENTAGE, REPLACEMENT_STRING);
    Criterion nameLikeCriteria = Restrictions.like(BATCH_NAME,
            DataAccessConstant.PERCENTAGE + searchStringLocal + DataAccessConstant.PERCENTAGE);
    Criterion idLikeCriteria = Restrictions.like(BATCH_INSTANCE_IDENTIFIER,
            DataAccessConstant.PERCENTAGE + searchStringLocal + DataAccessConstant.PERCENTAGE);

    LogicalExpression searchCriteria = Restrictions.or(nameLikeCriteria, idLikeCriteria);
    criteria.add(searchCriteria);
    if (batchClassIdentifiers != null && batchClassIdentifiers.size() > 0) {
        criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
        criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
        batchInstances = find(criteria);
    }
    return batchInstances;
}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchInstanceDaoImpl.java

License:Open Source License

/**
 * An API to fetch count of the batch instance table for batch instance status and batch priority. API will return those batch
 * instance having access by the user roles on the basis of ephesoft user.
 * /*from   www .  ja  v  a2 s . co m*/
 * @param batchName {@link String}
 * @param batchInstanceStatus {@link BatchInstanceStatus}
 * @param userName {@link String}
 * @param priority {@link BatchPriority}
 * @param userRoles Set<{@link String}>
 * @param ephesoftUser {@link EphesoftUser}
 * @return int, count of the batch instance present for the batch instance status.
 */
@Override
public int getCount(String batchName, BatchInstanceStatus batchInstanceStatus, String userName,
        BatchPriority batchPriority, Set<String> userRoles, EphesoftUser ephesoftUser) {
    int count = 0;
    DetachedCriteria criteria = criteria();
    if (batchName != null && !batchName.isEmpty()) {
        String batchNameLocal = batchName.replaceAll(DataAccessConstant.PERCENTAGE, REPLACEMENT_STRING);
        Criterion nameLikeCriteria = Restrictions.like(BATCH_NAME,
                DataAccessConstant.PERCENTAGE + batchNameLocal + DataAccessConstant.PERCENTAGE);
        Criterion idLikeCriteria = Restrictions.like(BATCH_INSTANCE_IDENTIFIER,
                DataAccessConstant.PERCENTAGE + batchNameLocal + DataAccessConstant.PERCENTAGE);
        LogicalExpression searchCriteria = Restrictions.or(nameLikeCriteria, idLikeCriteria);
        criteria.add(searchCriteria);
    } else if (null != batchPriority) {
        Disjunction disjunction = Restrictions.disjunction();
        Integer lowValue = batchPriority.getLowerLimit();
        Integer upperValue = batchPriority.getUpperLimit();
        disjunction.add(Restrictions.between(PRIORITY, lowValue, upperValue));
        criteria.add(disjunction);
    }
    Set<String> batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);

    if (EphesoftUser.NORMAL_USER.equals(ephesoftUser)) {
        Set<String> batchInstanceIdentifiers = batchInstanceGroupsDao
                .getBatchInstanceIdentifierForUserRoles(userRoles);

        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            criteria.add(Restrictions.eq(STATUS, batchInstanceStatus));
            criteria.add(Restrictions.eq(IS_REMOTE, false));
            criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                    Restrictions.eq(CURRENT_USER, userName)));
            final Disjunction disjunction = Restrictions.disjunction();
            if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                disjunction.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
            }
            if (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0) {
                disjunction.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
            }
            criteria.add(disjunction);
            count = count(criteria);

        } else {
            if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
                criteria.add(Restrictions.eq(STATUS, batchInstanceStatus));
                criteria.add(Restrictions.eq(IS_REMOTE, false));
                criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                        Restrictions.eq(CURRENT_USER, userName)));
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
                count = count(criteria);
            }
        }
    }
    return count;

}

From source file:com.ephesoft.dcma.da.dao.hibernate.BatchInstanceDaoImpl.java

License:Open Source License

/**
 * An API to fetch all the batch instances excluding remotely executing batches by status list. Parameter firstResult set a limit
 * upon the number of objects to be retrieved. Parameter maxResults set the first result to be retrieved. Parameter orderList set
 * the sort property and order of that property. If orderList parameter is null or empty then this parameter is avoided. This will
 * return only those batch instance which having access by the user roles on the basis of the ephesoft user.
 * /*  w w  w  . java2 s  .c o m*/
 * @param searchString {@link String}
 * @param statusList List<{@link BatchInstanceStatus}> status list of batch instance status.
 * @param firstResult the first result to retrieve, numbered from <tt>0</tt>
 * @param maxResults maxResults the maximum number of results
 * @param orderList List<{@link Order}> orderList set the sort property and order of that property. If orderList parameter is null
 *            or empty then this parameter is avoided.
 * @param filterClauseList List<{@link BatchInstanceFilter}> this will add the where clause to the criteria query based on the
 *            property name and value. If filterClauseList parameter is null or empty then this parameter is avoided.
 * @param batchPriorities List<{@link BatchPriority}> this will add the where clause to the criteria query based on the priority
 *            list selected. If batchPriorities parameter is null or empty then this parameter is avoided.
 * @param userName {@link String}
 * @param userRoles Set<{@link String}>
 * @param ephesoftUser {@link EphesoftUser}
 * @return List<{@link BatchInstance}> return the batch instance list.
 */
@Override
public List<BatchInstance> getBatchInstancesExcludedRemoteBatch(final String searchString,
        List<BatchInstanceStatus> statusList, final int firstResult, final int maxResults,
        final List<Order> orderList, final List<BatchInstanceFilter> filterClauseList,
        final List<BatchPriority> batchPriorities, String userName, final Set<String> userRoles,
        EphesoftUser ephesoftUser) {
    EphesoftCriteria criteria = criteria();

    if (searchString != null && !searchString.isEmpty()) {
        String batchNameLocal = searchString.replaceAll("%", "\\\\%");
        Criterion nameLikeCriteria = Restrictions.like(BATCH_NAME, "%" + batchNameLocal + "%");
        Criterion idLikeCriteria = Restrictions.like(BATCH_INSTANCE_IDENTIFIER, "%" + batchNameLocal + "%");

        LogicalExpression searchCriteria = Restrictions.or(nameLikeCriteria, idLikeCriteria);
        criteria.add(searchCriteria);
    }

    if (null != statusList) {
        criteria.add(Restrictions.in(STATUS, statusList));
        criteria.add(
                Restrictions.or(Restrictions.isNull(CURRENT_USER), Restrictions.eq(CURRENT_USER, userName)));
        criteria.add(Restrictions.eq(IS_REMOTE, false));
    }

    if (null != batchPriorities && !(batchPriorities.isEmpty())) {
        Disjunction disjunction = Restrictions.disjunction();
        for (BatchPriority batchPriority : batchPriorities) {
            if (null != batchPriority) {
                Integer lowValue = batchPriority.getLowerLimit();
                Integer upperValue = batchPriority.getUpperLimit();
                disjunction.add(Restrictions.between(PRIORITY, lowValue, upperValue));
            } else {
                disjunction = Restrictions.disjunction();
                break;
            }
        }
        criteria.add(disjunction);

    }
    List<BatchInstance> batchInstanceList = new ArrayList<BatchInstance>();

    Set<String> batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);

    switch (ephesoftUser) {
    case NORMAL_USER:
        batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);
        Set<String> batchInstanceIdentifierSet = batchInstanceGroupsDao
                .getBatchInstanceIdentifiersExceptUserRoles(userRoles);
        Set<String> batchInstanceIdentifiers = batchInstanceGroupsDao
                .getBatchInstanceIdentifierForUserRoles(userRoles);

        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            BatchInstanceFilter[] filters = null;
            if (filterClauseList != null) {
                filters = filterClauseList.toArray(new BatchInstanceFilter[filterClauseList.size()]);
            }
            Order[] orders = null;
            if (orderList != null) {
                orders = orderList.toArray(new Order[orderList.size()]);
            }

            if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0
                    && null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0
                    && null != batchInstanceIdentifierSet && batchInstanceIdentifierSet.size() > 0) {
                final Conjunction conjunction = Restrictions.conjunction();
                final Disjunction disjunction = Restrictions.disjunction();
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                disjunction.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
                disjunction.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
                conjunction.add(Restrictions
                        .not(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifierSet)));
                conjunction.add(disjunction);
                criteria.add(conjunction);
            } else if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0
                    && null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0) {
                final Disjunction disjunction = Restrictions.disjunction();
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                disjunction.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
                disjunction.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
                criteria.add(disjunction);
            } else if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0
                    && null != batchInstanceIdentifierSet && batchInstanceIdentifierSet.size() > 0) {
                final Conjunction conjunction = Restrictions.conjunction();
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                conjunction.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
                conjunction.add(Restrictions
                        .not(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifierSet)));
                criteria.add(conjunction);
            } else if (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0
                    && null != batchInstanceIdentifierSet && batchInstanceIdentifierSet.size() > 0) {
                final Conjunction conjunction = Restrictions.conjunction();
                conjunction.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
                conjunction.add(Restrictions
                        .not(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifierSet)));
                criteria.add(conjunction);
            } else if (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0) {
                criteria.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
            } else if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
            }

            batchInstanceList = find(criteria, firstResult, maxResults, filters, orders);
        }
        break;
    default:
        if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
            BatchInstanceFilter[] filters = null;
            if (filterClauseList != null) {
                filters = filterClauseList.toArray(new BatchInstanceFilter[filterClauseList.size()]);
            }
            Order[] orders = null;
            if (orderList != null) {
                orders = orderList.toArray(new Order[orderList.size()]);
            }

            criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
            criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
            batchInstanceList = find(criteria, firstResult, maxResults, filters, orders);
        }
        break;
    }
    return batchInstanceList;
}