Example usage for org.hibernate.criterion Restrictions conjunction

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

Introduction

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

Prototype

public static Conjunction conjunction() 

Source Link

Document

Group expressions together in a single conjunction (A and B and C...).

Usage

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.
 * /*from ww  w  .  jav  a  2  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;
}

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

License:Open Source License

/**
 * An API to fetch all the batch instance for status list input. API will return those batch instance having access by the user
 * roles on the basis of ephesoft user./*from  w ww.j a v  a 2 s . c  o  m*/
 * 
 * @param statusList List<BatchInstanceStatus>
 * @param firstResult int
 * @param maxResults int
 * @param userRoles Set<String>
 * @param ephesoftUser EphesoftUser
 * @return List<BatchInstance>
 */
@Override
public List<BatchInstance> getBatchInstances(List<BatchInstanceStatus> statusList, final int firstResult,
        final int maxResults, final Set<String> userRoles, EphesoftUser ephesoftUser) {

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

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

    EphesoftCriteria criteria = criteria();
    criteria.add(Restrictions.in(STATUS, statusList));
    criteria.add(Restrictions.isNull(CURRENT_USER));
    criteria.add(Restrictions.eq(IS_REMOTE, false));

    switch (ephesoftUser) {
    case NORMAL_USER:
        Set<String> batchInstanceIdentifiers = batchInstanceGroupsDao
                .getBatchInstanceIdentifierForUserRoles(userRoles);
        Set<String> batchInstanceIdentifierSet = batchInstanceGroupsDao
                .getBatchInstanceIdentifiersExceptUserRoles(userRoles);
        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            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));
            }
            List<Order> orderList = new ArrayList<Order>();
            Order orderForHighestBatchPriority = new Order(BatchInstanceProperty.PRIORITY, true);
            Order orderForLastModified = new Order(BatchInstanceProperty.LASTMODIFIED, false);
            orderList.add(orderForLastModified);
            orderList.add(orderForHighestBatchPriority);
            batchInstances = find(criteria, firstResult, maxResults,
                    orderList.toArray(new Order[orderList.size()]));
        }
        break;
    default:
        if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
            criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
            criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
            List<Order> orderList = new ArrayList<Order>();
            Order orderForHighestBatchPriority = new Order(BatchInstanceProperty.PRIORITY, true);
            Order orderForLastModified = new Order(BatchInstanceProperty.LASTMODIFIED, false);
            orderList.add(orderForLastModified);
            orderList.add(orderForHighestBatchPriority);
            batchInstances = find(criteria, firstResult, maxResults,
                    orderList.toArray(new Order[orderList.size()]));
        }
        break;
    }
    return batchInstances;

}

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

License:Open Source License

/**
 * This API fetches batch instance on the basis of user name and the roles defined for that user name in the batch class.
 * //from   ww  w  .  ja v  a  2s . c  om
 * @param userRoles Set<String>
 * @param batchInstanceIdentifier String
 * @param currentUserName String
 * @param ephesoftUser EphesoftUser
 * @return {@link BatchInstance}
 */
@Override
public BatchInstance getBatchInstanceByUserRole(final Set<String> userRoles, String batchInstanceIdentifier,
        String currentUserName, EphesoftUser ephesoftUser) {

    BatchInstance batchInstances = null;

    Set<String> batchClassIdentifiers = null;

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

        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            EphesoftCriteria criteria = criteria();
            criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                    Restrictions.eq(CURRENT_USER, currentUserName)));
            criteria.add(Restrictions.eq(IS_REMOTE, false));
            criteria.add(Restrictions.eq(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifier));
            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));
            }
            batchInstances = findSingle(criteria);
        }
        break;
    default:
        batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);
        if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
            EphesoftCriteria criteria = criteria();
            criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                    Restrictions.eq(CURRENT_USER, currentUserName)));
            criteria.add(Restrictions.eq(IS_REMOTE, false));
            criteria.add(Restrictions.eq(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifier));
            criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
            criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));

            batchInstances = findSingle(criteria);
        }
        break;
    }
    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 instances for a given status list and batch priority and isCurrUsrNotReq is used for adding
 * the batch instance access by the current user. This API will return the batch instance having access by the user roles on the
 * basis of ephesoft user.//from   w w w.jav a 2  s  . c  om
 * 
 * @param batchInstStatusList List<{@link BatchInstanceStatus}>
 * @param batchPriorities the priority list of the batches
 * @param isNotCurrentUserCheckReq true if the current user can be anyone. False if current user cannot be null.
 * @param currentUserName {@link String}
 * @param userRoles Set<{@link String}>
 * @param ephesoftUser {@link EphesoftUser}
 * @param searchString the searchString on which batch instances have to be fetched
 * @return int, the count satisfying the above requirements
 */
@Override
public int getCount(final List<BatchInstanceStatus> batchInstStatusList,
        final List<BatchPriority> batchPriorities, final boolean isNotCurrentUserCheckReq,
        final Set<String> userRoles, final String currentUserName, EphesoftUser ephesoftUser,
        final String searchString) {
    DetachedCriteria criteria = criteria();

    if (null != batchInstStatusList) {
        criteria.add(Restrictions.in(STATUS, batchInstStatusList));
    }

    if (null != searchString && !searchString.isEmpty()) {
        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 (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);
    }
    int count = 0;

    Set<String> batchClassIdentifiers = null;
    Set<String> batchInstanceIdentifiers = null;

    if (ephesoftUser.equals(EphesoftUser.ADMIN_USER)) {
        batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);
        batchInstanceIdentifiers = batchInstanceGroupsDao.getBatchInstanceIdentifierForUserRoles(userRoles);
        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0
                    && null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0) {
                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);
            } else if (null != batchClassIdentifiers && batchClassIdentifiers.size() > 0) {
                criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
                criteria.add(Restrictions.in(BATCH_CLASS_IDENTIFIER, batchClassIdentifiers));
            } else if (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0) {
                criteria.add(Restrictions.in(BATCH_INSTANCE_IDENTIFIER, batchInstanceIdentifiers));
            }
            // Add check for null current users only.
            // Now we will count only for those current users those are null.
            if (!isNotCurrentUserCheckReq && null != currentUserName) {
                criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                        Restrictions.eq(CURRENT_USER, currentUserName)));
            }
            count = count(criteria);
        }
    } else {
        batchClassIdentifiers = batchClassGroupsDao.getBatchClassIdentifierForUserRoles(userRoles);
        batchInstanceIdentifiers = batchInstanceGroupsDao.getBatchInstanceIdentifierForUserRoles(userRoles);

        if ((null != batchClassIdentifiers && batchClassIdentifiers.size() > 0)
                || (null != batchInstanceIdentifiers && batchInstanceIdentifiers.size() > 0)) {
            Set<String> batchInstanceIdentifierSet = batchInstanceGroupsDao
                    .getBatchInstanceIdentifiersExceptUserRoles(userRoles);
            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));
            }
            if (!isNotCurrentUserCheckReq && null != currentUserName) {
                criteria.add(Restrictions.or(Restrictions.isNull(CURRENT_USER),
                        Restrictions.eq(CURRENT_USER, currentUserName)));
            }
            count = count(criteria);
        }
    }
    return count;
}

From source file:com.eryansky.common.orm.core.hibernate.restriction.CriterionSingleValueSupport.java

License:Apache License

public Criterion build(PropertyFilter filter) {
    String matchValue = filter.getMatchValue();
    Class<?> FieldType = filter.getFieldType();

    MatchValue matchValueModel = getMatchValue(matchValue, FieldType);

    Junction criterion = null;/*from  w  w  w.  ja va  2s. c  om*/

    if (matchValueModel.hasOrOperate()) {
        criterion = Restrictions.disjunction();
    } else {
        criterion = Restrictions.conjunction();
    }

    for (Object value : matchValueModel.getValues()) {

        if (filter.hasMultiplePropertyNames()) {
            List<Criterion> disjunction = new ArrayList<Criterion>();
            for (String propertyName : filter.getPropertyNames()) {
                disjunction.add(build(propertyName, value));
            }
            criterion.add(Restrictions.or(disjunction.toArray(new Criterion[disjunction.size()])));
        } else {
            criterion.add(build(filter.getSinglePropertyName(), value));
        }

    }

    return criterion;
}

From source file:com.eucalyptus.autoscaling.activities.PersistenceScalingActivities.java

License:Open Source License

@Override
public <T> List<T> list(@Nullable final OwnerFullName ownerFullName,
        @Nullable final AutoScalingGroupMetadata group, @Nonnull final Collection<String> activityIds,
        @Nonnull final Predicate<? super ScalingActivity> filter,
        @Nonnull final Function<? super ScalingActivity, T> transform) throws AutoScalingMetadataException {
    final ScalingActivity example = ScalingActivity.withOwner(ownerFullName);
    final Conjunction conjunction = Restrictions.conjunction();
    final Collection<Predicate<? super ScalingActivity>> predicates = Lists.newArrayList();
    predicates.add(filter);/*from  ww w  . j  a  va  2s.com*/
    if (group != null) {
        predicates.add(CollectionUtils.propertyPredicate(group.getArn(),
                Functions.compose(AutoScalingMetadatas.toArn(), ScalingActivities.group())));
        conjunction.add(Restrictions.eq("autoScalingGroupName", group.getDisplayName()));
    }
    if (!activityIds.isEmpty()) {
        conjunction.add(Restrictions.in("displayName", activityIds));
    }
    return persistenceSupport.listByExample(example, Predicates.and(predicates), conjunction,
            Collections.<String, String>emptyMap(), transform);
}

From source file:com.eucalyptus.autoscaling.activities.PersistenceScalingActivities.java

License:Open Source License

@Override
public <T> List<T> listByActivityStatusCode(@Nullable final OwnerFullName ownerFullName,
        @Nonnull final Collection<ActivityStatusCode> statusCodes,
        @Nonnull final Function<? super ScalingActivity, T> transform) throws AutoScalingMetadataException {
    final ScalingActivity example = ScalingActivity.withOwner(ownerFullName);
    final Conjunction conjunction = Restrictions.conjunction();
    if (!statusCodes.isEmpty()) {
        conjunction.add(Restrictions.in("statusCode", statusCodes));
    }/*www  .j  ava 2  s  . com*/
    return persistenceSupport.listByExample(example, Predicates.alwaysTrue(), conjunction,
            Collections.<String, String>emptyMap(), transform);
}

From source file:com.eucalyptus.autoscaling.AutoScalingService.java

License:Open Source License

public DescribeTagsResponseType describeTags(final DescribeTagsType request) throws EucalyptusCloudException {
    final DescribeTagsResponseType reply = request.getReply();

    //TODO: MaxRecords / NextToken support for DescribeTags

    final Collection<Predicate<Tag>> tagFilters = Lists.newArrayList();
    for (final Filter filter : request.filters()) {
        final Function<Tag, String> extractor = tagFilterExtractors.get(filter.getName());
        if (extractor == null) {
            throw new ValidationErrorException("Filter type " + filter.getName()
                    + " is not correct. Allowed Filter types are: auto-scaling-group key value propagate-at-launch");
        }/*  w w w.ja  v  a  2s.co  m*/
        final Function<String, String> tagValueConverter = Objects
                .firstNonNull(tagValuePreProcessors.get(filter.getName()), Functions.<String>identity());
        tagFilters.add(Predicates
                .compose(Predicates.in(Collections2.transform(filter.values(), tagValueConverter)), extractor));
    }

    final Context context = Contexts.lookup();

    final Ordering<Tag> ordering = Ordering.natural().onResultOf(Tags.resourceId())
            .compound(Ordering.natural().onResultOf(Tags.key()))
            .compound(Ordering.natural().onResultOf(Tags.value()));
    try {
        final TagDescriptionList tagDescriptions = new TagDescriptionList();
        for (final Tag tag : ordering
                .sortedCopy(Tags.list(context.getUserFullName().asAccountFullName(), Predicates.and(tagFilters),
                        Restrictions.conjunction(), Collections.<String, String>emptyMap()))) {
            if (Permissions.isAuthorized(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType(), tag.getKey(),
                    context.getAccount(),
                    PolicySpec.describeAction(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType()),
                    context.getUser())) {
                tagDescriptions.getMember().add(TypeMappers.transform(tag, TagDescription.class));
            }
        }
        if (!tagDescriptions.getMember().isEmpty()) {
            reply.getDescribeTagsResult().setTags(tagDescriptions);
        }
    } catch (AutoScalingMetadataNotFoundException e) {
        handleException(e);
    }

    return reply;
}

From source file:com.eucalyptus.autoscaling.backend.AutoScalingBackendService.java

License:Open Source License

public DescribeTagsResponseType describeTags(final DescribeTagsType request) throws EucalyptusCloudException {
    final DescribeTagsResponseType reply = request.getReply();

    //TODO: MaxRecords / NextToken support for DescribeTags

    final Collection<Predicate<Tag>> tagFilters = Lists.newArrayList();
    for (final Filter filter : request.filters()) {
        final Function<Tag, String> extractor = tagFilterExtractors.get(filter.getName());
        if (extractor == null) {
            throw new ValidationErrorException("Filter type " + filter.getName()
                    + " is not correct. Allowed Filter types are: auto-scaling-group key value propagate-at-launch");
        }//from w w  w  . j  av a2 s. co  m
        final Function<String, String> tagValueConverter = Objects
                .firstNonNull(tagValuePreProcessors.get(filter.getName()), Functions.<String>identity());
        tagFilters.add(Predicates
                .compose(Predicates.in(Collections2.transform(filter.values(), tagValueConverter)), extractor));
    }

    final Context context = Contexts.lookup();

    final Ordering<Tag> ordering = Ordering.natural().onResultOf(Tags.resourceId())
            .compound(Ordering.natural().onResultOf(Tags.key()))
            .compound(Ordering.natural().onResultOf(Tags.value()));
    try {
        final TagDescriptionList tagDescriptions = new TagDescriptionList();
        for (final Tag tag : ordering
                .sortedCopy(Tags.list(context.getUserFullName().asAccountFullName(), Predicates.and(tagFilters),
                        Restrictions.conjunction(), Collections.<String, String>emptyMap()))) {
            if (Permissions.isAuthorized(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType(), tag.getKey(),
                    context.getAccount(),
                    PolicySpec.describeAction(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType()),
                    context.getAuthContext())) {
                tagDescriptions.getMember().add(TypeMappers.transform(tag, TagDescription.class));
            }
        }
        if (!tagDescriptions.getMember().isEmpty()) {
            reply.getDescribeTagsResult().setTags(tagDescriptions);
        }
    } catch (AutoScalingMetadataNotFoundException e) {
        handleException(e);
    }

    return reply;
}

From source file:com.eucalyptus.autoscaling.common.internal.instances.PersistenceAutoScalingInstances.java

License:Open Source License

@Override
public void markMissingInstancesUnhealthy(final AutoScalingGroupMetadata group,
        final Collection<String> instanceIds) throws AutoScalingMetadataException {
    final AutoScalingInstance example = exampleForGroup(group);
    example.setHealthStatus(HealthStatus.Healthy);

    final List<AutoScalingInstance> instancesToMark = persistenceSupport.listByExample(example,
            LifecycleState.InService,/*from   w  ww.  j a v  a 2 s . c  o  m*/
            instanceIds.isEmpty() ? Restrictions.conjunction()
                    : Restrictions.not(Property.forName("displayName").in(instanceIds)),
            Collections.<String, String>emptyMap(), Functions.<AutoScalingInstance>identity());

    for (final AutoScalingInstance instance : instancesToMark) {
        try {
            persistenceSupport.updateByExample(AutoScalingInstance.withUuid(instance.getNaturalId()),
                    group.getOwner(), instance.getInstanceId(), new Callback<AutoScalingInstance>() {
                        @Override
                        public void fire(final AutoScalingInstance instance) {
                            if (instance.healthStatusGracePeriodExpired()) {
                                logger.info("Marking instance unhealthy: " + instance.getInstanceId());
                                instance.setHealthStatus(HealthStatus.Unhealthy);
                            } else {
                                logger.debug("Instance not healthy but within grace period: "
                                        + instance.getInstanceId());
                            }
                        }
                    });
        } catch (final AutoScalingMetadataNotFoundException e) {
            // removed, no need to mark unhealthy
        }
    }
}