Example usage for org.hibernate.criterion Projections countDistinct

List of usage examples for org.hibernate.criterion Projections countDistinct

Introduction

In this page you can find the example usage for org.hibernate.criterion Projections countDistinct.

Prototype

public static CountProjection countDistinct(String propertyName) 

Source Link

Document

A distinct property value count projection

Usage

From source file:com.rta.vsd.data.service.impl.ViolationDataServiceImpl.java

/**
 * /*from  w  w  w  .ja  v a  2s  .  co m*/
 * get Count For Violations with tests By TrafficFileNumber
 * getViolationsWithTestsByTrafficFileNumber(dsContext, retrieveArabicData, trafficFileNumber)
 * getCountForViolationsWithTestsByTrafficFileNumber(dsContext, retrieveArabicData, trafficFileNumber)
 * getViolationsWithTestsByTrafficFileNumber(dsContext, retrieveArabicData, trafficFileNumber, maxResults, firstResult) 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param trafficFileNumber
 * @return List<Violation>
 * @throws VSDDataAccessException
 */
public Long getCountForViolationsWithTestsByTrafficFileNumber(final DataServiceContext dsContext,
        boolean retrieveArabicData, String trafficFileNumber) throws VSDDataAccessException {
    logger.info("getCountForViolationsWithTestsByTrafficFileNumber -- START");
    Long violationsCount = new Long(0);
    try {
        Session session = (Session) dsContext.getInternalContext();

        Criteria projectionCriteria = session.createCriteria(VsdViolation.class, "violation")
                .add(Restrictions.eq("violation.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("violation.vsdInspections", "i", Criteria.LEFT_JOIN,
                        Restrictions.eq("i.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdVehicleInfo", "vi", Criteria.LEFT_JOIN,
                        Restrictions.eq("vi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("oi.trafficFileNumber", trafficFileNumber).ignoreCase())
                .createCriteria("violation.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelDefectTests", "cdt", Criteria.LEFT_JOIN,
                        Restrictions.eq("cdt.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cdt.vsdChannelTest", "ct", Criteria.LEFT_JOIN,
                        Restrictions.eq("ct.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("ct.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("ct.vsdTestType", "tt", Criteria.LEFT_JOIN,
                        Restrictions.eq("tt.isDeleted", IDataService.BOOL_FALSE))
                .setProjection(Projections.countDistinct("violation.violationId"))
                .addOrder(Order.desc("violation.reportedDate"));
        violationsCount = (Long) projectionCriteria.uniqueResult();
        logger.debug("violationsCount : " + violationsCount);

    } catch (Exception ex) {
        logger.error("An error occured in getCountForViolationsWithTestsByTrafficFileNumber()");
        logger.error(ex);
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
    logger.info("getCountForViolationsWithTestsByTrafficFileNumber -- END");
    return violationsCount;
}

From source file:com.rta.vsd.data.service.impl.ViolationDataServiceImpl.java

/**
 * /*w  ww  .  j av  a 2  s.  c  o m*/
 * Get a list of violations from the vehicle plate details, severity level and violations status ids provided
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param plateDetails
 * @param severityLevels
 * @param violationStatusId
 * @return Long
 * @throws VSDDataAccessException
 */
public Long getViolationsByVehiclePlateSeverityLevelsAndViolationStatuses(DataServiceContext dsContext,
        boolean retrieveArabicData, VehiclePlate plateDetails, List<Long> severityLevels,
        List<Long> violationStatusIds) throws VSDDataAccessException {
    logger.info("getViolationsByVehiclePlateSeverityLevelsAndViolationStatuses -- START");
    try {

        Session session = (Session) dsContext.getInternalContext();
        Criteria crit = session.createCriteria(VsdViolation.class, "v")
                .add(Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdInspections", "i", Criteria.LEFT_JOIN,
                        Restrictions.eq("i.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdVehicleInfo", "vi", Criteria.LEFT_JOIN,
                        Restrictions.eq("vi.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("vi.vehiclePlateCategory", plateDetails.getPlateCategory()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateCode", plateDetails.getPlateCode()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateSource", plateDetails.getPlateSource()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateNumber", plateDetails.getPlateNumber()).ignoreCase())
                .createCriteria("v.vsdSeverityLevel", "sl", Criteria.LEFT_JOIN,
                        Restrictions.eq("sl.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.in("sl.severityLevel", severityLevels))
                .createCriteria("v.vsdViolationStatus", "vs", Criteria.LEFT_JOIN,
                        Restrictions.eq("vs.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.in("vs.violationStatusId", violationStatusIds))
                .setProjection(Projections.countDistinct("v.violationId"));
        Long count = (Long) crit.uniqueResult();
        logger.info("getViolationsByVehiclePlateSeverityLevelsAndViolationStatuses -- END");
        return count;
    } catch (Exception ex) {
        logger.error("An error occured in getViolationsByVehiclePlateSeverityLevelsAndViolationStatuses()");
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
}

From source file:com.smartitengineering.dao.impl.hibernate.AbstractDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
private void processCriteria(Criteria criteria, String element, QueryParameter parameter) {
    switch (parameter.getParameterType()) {
    case PARAMETER_TYPE_PROPERTY: {
        criteria.add(getCriterion(element, parameter));
        return;//from  w  w  w . j a v a 2  s. c  o m
    }
    case PARAMETER_TYPE_ORDER_BY: {
        final Order order;
        SimpleNameValueQueryParameter<com.smartitengineering.dao.common.queryparam.Order> queryParameter = QueryParameterCastHelper.SIMPLE_PARAM_HELPER
                .cast(parameter);
        com.smartitengineering.dao.common.queryparam.Order requestedOrder = queryParameter.getValue();
        switch (requestedOrder) {
        case ASC: {
            order = Order.asc(element);
            break;
        }
        case DESC: {
            order = Order.desc(element);
            break;
        }
        default: {
            order = null;
            break;
        }
        }
        if (order != null) {
            criteria.addOrder(order);
        }
        return;
    }
    case PARAMETER_TYPE_MAX_RESULT: {
        ValueOnlyQueryParameter<Integer> queryParameter = QueryParameterCastHelper.VALUE_PARAM_HELPER
                .cast(parameter);
        criteria.setMaxResults(queryParameter.getValue());
        return;
    }
    case PARAMETER_TYPE_FIRST_RESULT: {
        ValueOnlyQueryParameter<Integer> queryParameter = QueryParameterCastHelper.VALUE_PARAM_HELPER
                .cast(parameter);
        criteria.setFirstResult(queryParameter.getValue());
        return;
    }
    case PARAMETER_TYPE_DISJUNCTION: {
        processDisjunction(criteria, parameter);
        return;
    }
    case PARAMETER_TYPE_CONJUNCTION: {
        processConjunction(criteria, parameter);
        return;
    }
    case PARAMETER_TYPE_NESTED_PROPERTY: {
        processNestedParameter(criteria, element, parameter);
        return;
    }
    case PARAMETER_TYPE_COUNT: {
        final Projection countProjection = Projections.count(element);
        setProjection(criteria, countProjection);
        return;
    }
    case PARAMETER_TYPE_ROW_COUNT: {
        final Projection rowCount = Projections.rowCount();
        setProjection(criteria, rowCount);
        return;
    }
    case PARAMETER_TYPE_SUM: {
        final AggregateProjection sum = Projections.sum(element);
        setProjection(criteria, sum);
        return;
    }
    case PARAMETER_TYPE_MAX: {
        final AggregateProjection max = Projections.max(element);
        setProjection(criteria, max);
        return;
    }
    case PARAMETER_TYPE_MIN: {
        final AggregateProjection min = Projections.min(element);
        setProjection(criteria, min);
        return;
    }
    case PARAMETER_TYPE_AVG: {
        final AggregateProjection avg = Projections.avg(element);
        setProjection(criteria, avg);
        return;
    }
    case PARAMETER_TYPE_GROUP_BY: {
        final PropertyProjection groupProperty = Projections.groupProperty(element);
        setProjection(criteria, groupProperty);
        return;
    }
    case PARAMETER_TYPE_COUNT_DISTINCT: {
        final CountProjection countDistinct = Projections.countDistinct(element);
        setProjection(criteria, countDistinct);
        return;
    }
    case PARAMETER_TYPE_DISTINCT_PROP: {
        final Projection distinct = Projections.distinct(Projections.property(element));
        setProjection(criteria, distinct);
        return;
    }
    case PARAMETER_TYPE_UNIT_PROP: {
        final PropertyProjection property = Projections.property(element);
        setProjection(criteria, property);
        return;
    }
    }
}

From source file:com.square.adherent.noyau.dao.implementations.contrat.ContratDaoImpl.java

License:Open Source License

@Override
public int countContratsByCriteres(CritereRechercheContratDto criteres) {
    final Criteria crit = createCriteriaByCriteres(criteres);
    crit.setProjection(Projections.countDistinct("id"));
    return Integer.valueOf(((Long) crit.uniqueResult()).toString());
}

From source file:com.square.core.dao.implementations.OpportuniteDaoImplementation.java

License:Open Source License

@Override
public Integer countOpportunitesParCriteres(OpportuniteCriteresRechercheDto criteres) {
    final Criteria criteria = creerCriteria(criteres);
    criteria.setProjection(Projections.countDistinct("id"));
    return Integer.valueOf(criteria.uniqueResult().toString());
}

From source file:com.tysanclan.site.projectewok.entities.dao.hibernate.UserGameRealmDAOImpl.java

License:Open Source License

/**
 * @see com.tysanclan.site.projectewok.entities.dao.UserGameRealmDAO#countActivePlayers(com.tysanclan.site.projectewok.entities.Realm)
 *//*from   w w  w  .j  a v  a 2s .  c  om*/
@Override
public int countActivePlayers(Realm realm) {
    Criteria criteria = getSession().createCriteria(UserGameRealm.class);

    criteria.createAlias("user", "user");
    criteria.add(Restrictions.in("user.rank", MemberUtil.getMemberRanks()));

    criteria.add(Restrictions.eq("realm", realm));
    criteria.setProjection(Projections.countDistinct("user"));

    return ((Number) criteria.uniqueResult()).intValue();
}

From source file:com.tysanclan.site.projectewok.entities.dao.hibernate.UserGameRealmDAOImpl.java

License:Open Source License

@Override
public int countActivePlayers(Game game) {
    Criteria criteria = getSession().createCriteria(UserGameRealm.class);

    criteria.add(Restrictions.eq("game", game));
    criteria.setProjection(Projections.countDistinct("user"));

    return ((Number) criteria.uniqueResult()).intValue();
}

From source file:cz.zcu.kiv.eegdatabase.data.dao.SimpleFormLayoutDao.java

License:Apache License

@Override
public int getFormsCount(Person owner) {
    DetachedCriteria criteria = DetachedCriteria.forClass(type);
    criteria.setProjection(Projections.distinct(Projections.countDistinct("formName")));
    if (owner != null)
        criteria.add(Restrictions.eq("person.personId", owner.getPersonId()));

    return DataAccessUtils.intResult(getHibernateTemplate().findByCriteria(criteria));
}

From source file:edu.depaul.armada.dao.ContainerLogDaoHibernate.java

License:Open Source License

/**
 * Returns a List<Metric> from all of the containers with state fields greater-than
 * or equal to certain user defined parameters.
 * @param memThreshold long//from ww w. j av  a2s  .  co m
 * @param cpuThreshold long
 * @param diskThreshold long
 * @param periodCountInHours int
 * @return List<Metric>
 */
@Override
public List<Metric> getStateCounts(long memThreshold, long cpuThreshold, long diskThreshold,
        int periodCountInHours) {
    List<Metric> metrics = new ArrayList<Metric>(periodCountInHours);
    Calendar cal = Calendar.getInstance();
    for (int i = 0; i < periodCountInHours; i++) {
        Date end = cal.getTime();
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        cal.add(Calendar.HOUR_OF_DAY, -1);
        Date start = cal.getTime();

        Criteria criteria = newCriteria();
        criteria.add(Restrictions.le("timestamp", end));
        criteria.add(Restrictions.gt("timestamp", start)); // we don't want overlap here
        criteria.add(Restrictions.disjunction().add(Restrictions.ge("cpuUsed", cpuThreshold))
                .add(Restrictions.ge("memUsed", memThreshold)).add(Restrictions.ge("diskUsed", diskThreshold)));
        criteria.setProjection(Projections.countDistinct("container"));
        int count = ((Long) criteria.uniqueResult()).intValue();
        Metric temp = new Metric();
        temp.setHour(hour);
        temp.setValue(count);
        metrics.add(temp);
    }
    Collections.reverse(metrics); // we want the current time to be the last hour
    return metrics;
}

From source file:edu.depaul.armada.dao.ContainerLogDaoHibernate.java

License:Open Source License

/**
 * Returns a List<Metric> from all of the containers with data within a specified
 * amount of time./*from  w  w  w  .j  av a2s  .  c  o  m*/
 * @param periodInHours int
 * @return List<Metric>
 */
@Override
public List<Metric> getContainerCounts(int periodInHours) {
    List<Metric> metrics = new ArrayList<Metric>(periodInHours);
    Calendar cal = Calendar.getInstance();
    for (int i = 0; i < periodInHours; i++) {
        Date end = cal.getTime();
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        cal.add(Calendar.HOUR_OF_DAY, -1);
        Date start = cal.getTime();

        Criteria criteria = newCriteria();
        criteria.add(Restrictions.le("timestamp", end));
        criteria.add(Restrictions.gt("timestamp", start)); // we don't want overlap here
        criteria.setProjection(Projections.countDistinct("container"));
        int count = ((Long) criteria.uniqueResult()).intValue();
        Metric temp = new Metric();
        temp.setHour(hour);
        temp.setValue(count);
        metrics.add(temp);
    }
    Collections.reverse(metrics); // we want the current time to be the last hour
    return metrics;
}