Example usage for org.hibernate.criterion Projections distinct

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

Introduction

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

Prototype

public static Projection distinct(Projection projection) 

Source Link

Document

Create a distinct projection from a projection.

Usage

From source file:com.liferay.portal.dao.orm.hibernate.ProjectionFactoryImpl.java

License:Open Source License

public Projection distinct(Projection projection) {
    ProjectionImpl projectionImpl = (ProjectionImpl) projection;

    return new ProjectionImpl(Projections.distinct(projectionImpl.getWrappedProjection()));
}

From source file:com.maydesk.base.table.PDPageableFactory.java

License:Mozilla Public License

public Projection getProjectionList() {
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.id(), "id");
    projectionList.add(Projections.property("cachedTitle"), "title"); // Model must be of type MBaseWithTitle!
    projectionList.add(Projections.property("cachedDescription"), "description"); // Model must be of type MBaseWithTitle!
    return Projections.distinct(projectionList);
}

From source file:com.painiu.core.dao.hibernate.PhotoDAOHibernate.java

License:Open Source License

static Criteria buildPhotoCriteria(final Session session, User user, String[] tags, boolean taggedAll,
        String text, Relation relation, boolean count) {
    Criteria criteria = session.createCriteria(Photo.class);

    if (user != null) {
        criteria.add(Restrictions.eq("user", user));

        if (relation != null) {
            criteria.add(//w  w w  . j a  v a2s. c  om
                    Restrictions.sqlRestriction(" {alias}.privacy & ? > 0", relation, UserTypes.relation()));
        }
    } else {
        criteria.add(
                Restrictions.sqlRestriction(" {alias}.privacy & ? > 0", Relation.NONE, UserTypes.relation()));

        criteria.setFetchMode("user", FetchMode.JOIN);
    }

    //if (user == null && group == null) {
    if (user == null) {
        Disjunction disjState = Restrictions.disjunction();

        disjState.add(Restrictions.eq("state", Photo.State.USER_POPULAR));
        disjState.add(Restrictions.eq("state", Photo.State.USER_COMMENDATORY));
        disjState.add(Restrictions.eq("state", Photo.State.USER_SENIOR));

        criteria.add(disjState);
    }

    //if (album != null) {
    //   criteria.createAlias("albumPhotos", "ap");
    //   criteria.add( Restrictions.eq("ap.album", album) );
    //}

    //if (group != null) {
    //   criteria.createAlias("groupPhotos", "gp");
    //   criteria.add( Restrictions.eq("gp.group", group) );
    //}

    if ((tags != null && tags.length > 0) || text != null) {
        Criteria subCriteria = criteria.createCriteria("photoTags", "tags");

        if (tags != null && tags.length > 0) {
            if (taggedAll) {
                Conjunction conj = Restrictions.conjunction();
                for (int i = 0; i < tags.length; i++) {
                    conj.add(Restrictions.eq("tagName", tags[i]));
                }
                subCriteria.add(conj);
            } else {
                Disjunction disj = Restrictions.disjunction();
                for (int i = 0; i < tags.length; i++) {
                    disj.add(Restrictions.eq("tagName", tags[i]));
                }
                subCriteria.add(disj);
            }
        }

        if (text != null) {
            Disjunction disj = Restrictions.disjunction();

            disj.add(Restrictions.like("title", text, MatchMode.ANYWHERE));
            disj.add(Restrictions.like("description", text, MatchMode.ANYWHERE));
            disj.add(Restrictions.eq("tags.tagName", text));

            criteria.add(disj);
        }
    }

    // TODO order parameters
    if (!count) {
        /*if (album != null) {
           criteria.addOrder(Order.asc("ap.position"));
        } else*/
        /*if (group != null) {
           criteria.addOrder(Order.asc("gp.position"));
        } else {*/
        criteria.addOrder(Order.desc("timestamp"));
        //}
    }
    // distinct ?
    if ((tags != null && tags.length > 1) || text != null) {
        ProjectionList proj = Projections.projectionList();

        proj.add(Projections.property("id")).add(Projections.property("title"))
                .add(Projections.property("width")).add(Projections.property("height"))
                .add(Projections.property("address.host")).add(Projections.property("address.dir"))
                .add(Projections.property("address.filename")).add(Projections.property("address.secret"))
                .add(Projections.property("address.username")).add(Projections.property("address.fileKey"));

        if (user == null) {
            criteria.createAlias("user", "user");
            proj.add(Projections.property("user.id")).add(Projections.property("user.username"))
                    .add(Projections.property("user.nickname")).add(Projections.property("user.buddyIcon.host"))
                    .add(Projections.property("user.buddyIcon.dir"))
                    .add(Projections.property("user.buddyIcon.filename"))
                    .add(Projections.property("user.buddyIcon.username"))
                    .add(Projections.property("user.buddyIcon.fileKey"));
        }

        criteria.setProjection(Projections.distinct(proj));

        criteria.setResultTransformer(new PhotoBeanResultTransformer());
    }

    return criteria;
}

From source file:com.qcadoo.model.api.search.SearchProjections.java

License:Open Source License

/**
 * Wraps projection with distinct projection.
 * /*from www  .j a  v  a 2 s  . c  o m*/
 * @param projection
 *            projection
 * @return distincted projection
 */
public static SearchProjection distinct(final SearchProjection projection) {
    return new SearchProjectionImpl(Projections.distinct(projection.getHibernateProjection()));
}

From source file:com.romeikat.datamessie.core.base.query.entity.execute.AbstractEntityQueryExecutor.java

License:Open Source License

public void applyDistinctPropertyProjection(final Criteria criteria, final String propertyName) {
    criteria.setProjection(Projections.distinct(Projections.property(propertyName)));
}

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

/**
 * /* w w w .  ja va2 s  .  c  o  m*/
 * Gets a list of inspection from the plate details specified
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param vehiclePlateDetails
 * @param paginationValues
 * @return List<VsdInspection>
 * @throws VSDDataAccessException
 */
public List<VsdInspection> getInspectionsByPlateDetails(final DataServiceContext dsContext,
        boolean retrieveArabicData, VehiclePlate vehiclePlateDetails, PaginationParam paginationValues)
        throws VSDDataAccessException {
    logger.info("getInspectionsByPlateDetails -- START");
    List<VsdInspection> inspections = null;
    try {
        Session session = (Session) dsContext.getInternalContext();
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("inspections.inspectionId"), "inspectionId");
        Criteria crit = session.createCriteria(VsdInspection.class, "inspections")
                .add(Restrictions.eq("inspections.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdLocation", "loc", Criteria.LEFT_JOIN,
                        Restrictions.eq("loc.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("loc.vsdLocation", "area", Criteria.LEFT_JOIN,
                        Restrictions.eq("area.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdVehicleInfo", "vehicleInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("vehicleInfo.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("vehicleInfo.vehiclePlateCategory", vehiclePlateDetails.getPlateCategory())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateCode", vehiclePlateDetails.getPlateCode())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateSource", vehiclePlateDetails.getPlateSource())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateNumber", vehiclePlateDetails.getPlateNumber())
                        .ignoreCase())
                .addOrder(Order.desc("inspections.inspectionId"))
                .setProjection(Projections.distinct(projectionList));
        crit.setResultTransformer(new AliasToBeanResultTransformer(VsdInspection.class));
        if (paginationValues.getFirstResult() != null && paginationValues.getFirstResult().longValue() != -1) {
            crit.setFirstResult(paginationValues.getFirstResult().intValue());
        }
        if (paginationValues.getFetchedSize() != null && paginationValues.getFetchedSize().longValue() != -1) {
            crit.setMaxResults(paginationValues.getFetchedSize().intValue());
        }
        List list = crit.list();
        logger.debug("list.size() : " + list.size());
        Set resultSet = new HashSet(list);
        logger.debug("resultSet.size() : " + resultSet.size());
        if (resultSet.size() == 0)
            return new ArrayList();
        Iterator iterator = resultSet.iterator();
        ArrayList innerQueryList = new ArrayList<Long>();
        while (iterator.hasNext()) {
            VsdInspection inspection = (VsdInspection) iterator.next();
            innerQueryList.add(inspection.getInspectionId());
        }
        Criteria main = session.createCriteria(VsdInspection.class, "inspections")
                .add(Property.forName("inspections.inspectionId").in(innerQueryList))
                .add(Restrictions.eq("inspections.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdLocation", "loc", Criteria.LEFT_JOIN,
                        Restrictions.eq("loc.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("loc.vsdLocation", "area", Criteria.LEFT_JOIN,
                        Restrictions.eq("area.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdVehicleInfo", "vehicleInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("vehicleInfo.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("vehicleInfo.vehiclePlateCategory", vehiclePlateDetails.getPlateCategory())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateCode", vehiclePlateDetails.getPlateCode())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateSource", vehiclePlateDetails.getPlateSource())
                        .ignoreCase())
                .add(Restrictions.eq("vehicleInfo.vehiclePlateNumber", vehiclePlateDetails.getPlateNumber())
                        .ignoreCase())
                .addOrder(Order.desc("inspections.inspectionId"));
        inspections = main.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
        logger.info("getInspectionsByPlateDetails -- END");
        return inspections;
    } catch (Exception ex) {
        logger.error("An error occured in getInspectionsByPlateDetails()");
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }

}

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

/**
 * /*from   www.j  a  v  a 2 s . co  m*/
 * Gets all the inspections for vehicles owned by the owner with the specified trade license number
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param traficFileNo
 * @param paginationParam
 * @return List<VsdInspection>
 * @throws VSDDataAccessException
 */
public List<VsdInspection> getInspectionsByTraficFileNumber(final DataServiceContext dsContext,
        boolean retrieveArabicData, String traficFileNo, PaginationParam param) throws VSDDataAccessException {
    logger.info("getInspectionsByTraficFileNumber -- START");
    List<VsdInspection> inspections;
    try {
        Session session = (Session) dsContext.getInternalContext();
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("inspections.inspectionId"), "inspectionId");
        projectionList.add(Projections.property("inspections.createdTimestamp"), "createdTimestamp");
        inspections = session.createCriteria(VsdInspection.class, "inspections")
                .add(Restrictions.eq("inspections.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdLocation", "loc", Criteria.LEFT_JOIN,
                        Restrictions.eq("loc.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("loc.vsdLocation", "area", Criteria.LEFT_JOIN,
                        Restrictions.eq("area.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdVehicleInfo", "vehicleInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("vehicleInfo.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("vehicleInfo.vsdOwnerInfos", "ownerInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("ownerInfo.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("ownerInfo.trafficFileNumber", traficFileNo).ignoreCase())
                .addOrder(Order.desc("inspections.createdTimestamp"))
                .setProjection(Projections.distinct(projectionList))
                .setFirstResult(param.getFirstResult().intValue())
                .setMaxResults(param.getFetchedSize().intValue())
                .setResultTransformer(new AliasToBeanResultTransformer(VsdInspection.class)).list();
        if (inspections.size() == 0)
            return new ArrayList();
        Iterator iterator = inspections.iterator();
        ArrayList innerQueryList = new ArrayList<Long>();
        while (iterator.hasNext()) {
            VsdInspection inspection = (VsdInspection) iterator.next();
            innerQueryList.add(inspection.getInspectionId());
        }
        inspections = session.createCriteria(VsdInspection.class, "inspections")
                .add(Restrictions.eq("inspections.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdLocation", "loc", Criteria.LEFT_JOIN,
                        Restrictions.eq("loc.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("loc.vsdLocation", "area", Criteria.LEFT_JOIN,
                        Restrictions.eq("area.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("inspections.vsdVehicleInfo", "vehicleInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("vehicleInfo.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("vehicleInfo.vsdOwnerInfos", "ownerInfo", Criteria.LEFT_JOIN,
                        Restrictions.eq("ownerInfo.isDeleted", IDataService.BOOL_FALSE))
                .add(Restrictions.eq("ownerInfo.trafficFileNumber", traficFileNo).ignoreCase())
                .add(Restrictions.in("inspections.inspectionId", innerQueryList))
                .addOrder(Order.desc("inspections.createdTimestamp")).list();
    } catch (Exception ex) {
        logger.error("An error occured in getInspectionsByTraficFileNumber()");
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
    logger.info("getInspectionsByTraficFileNumber -- END");
    return inspections;
}

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

/**
 * //from   w w w.j  a  va 2  s .c om
 * get Inspections By ChassisNumber
 * one overloaded method is associated method
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param vehicleChassisNumber
 * @return List<VsdInspection>
 * @throws VSDDataAccessException
 */
public List<VsdInspection> getInspectionsByChassisNumber(final DataServiceContext dsContext,
        boolean retrieveArabicData, String vehicleChassisNumber, int maxResults) throws VSDDataAccessException {
    logger.info("getInspectionsByChassisNumber -- START");
    List<VsdInspection> inspections;
    try {
        Session session = (Session) dsContext.getInternalContext();
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("i.inspectionId"), "inspectionId");
        projectionList.add(Projections.property("i.inspectionTimestamp"), "inspectionTimestamp");

        Criteria projectionCriteria = session.createCriteria(VsdInspection.class, "i")
                .add(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.vehicleChassisNumber", vehicleChassisNumber).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .setProjection(Projections.projectionList().add(Projections.property("i.inspectionId")))
                .setProjection(Projections.distinct(projectionList))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .setResultTransformer(new AliasToBeanResultTransformer(VsdInspection.class))
                .setMaxResults(maxResults);
        List list = projectionCriteria.list();
        logger.debug("list.size() : " + list.size());
        Set resultSet = new HashSet(list);
        logger.debug("resultSet.size() : " + resultSet.size());
        if (resultSet.size() == 0)
            return new ArrayList();
        Iterator iterator = resultSet.iterator();
        ArrayList innerQueryList = new ArrayList<Long>();
        while (iterator.hasNext()) {
            VsdInspection vsdInspection = (VsdInspection) iterator.next();
            innerQueryList.add(vsdInspection.getInspectionId());
        }
        inspections = session.createCriteria(VsdInspection.class, "i")
                .add(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.vehicleChassisNumber", vehicleChassisNumber).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .add(Property.forName("i.inspectionId").in(innerQueryList))
                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
        logger.debug("inspections.size() : " + inspections.size());
    } catch (Exception ex) {
        logger.error("An error occured in getInspectionsByChassisNumber()");
        logger.error(ex);
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
    logger.info("getInspectionsByChassisNumber -- END");
    return inspections;
}

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

/**
 * //  w w  w  .j  a va2  s.c  o m
 * get Inspections By VehiclePlate for webservice
 * one overloaded method is associated method
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param vehiclePlate
 * @return List<VsdInspection>
 * @throws VSDDataAccessException
 */
public List<VsdInspection> getInspectionsByVehiclePlateForWS(final DataServiceContext dsContext,
        boolean retrieveArabicData, VehiclePlate vehiclePlate, int maxResults) throws VSDDataAccessException {
    logger.info("getInspectionsByVehiclePlateForWS -- START");
    List<VsdInspection> inspections;
    try {
        Session session = (Session) dsContext.getInternalContext();
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("i.inspectionId"), "inspectionId");
        projectionList.add(Projections.property("i.inspectionTimestamp"), "inspectionTimestamp");

        Criteria projectionCriteria = session.createCriteria(VsdInspection.class, "i")
                .add(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", vehiclePlate.getPlateCategory()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateCode", vehiclePlate.getPlateCode()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateSource", vehiclePlate.getPlateSource()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateNumber", vehiclePlate.getPlateNumber()).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .setProjection(Projections.projectionList().add(Projections.property("i.inspectionId")))
                .setProjection(Projections.distinct(projectionList))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .setResultTransformer(new AliasToBeanResultTransformer(VsdInspection.class))
                .setMaxResults(maxResults);
        List list = projectionCriteria.list();
        logger.debug("list.size() : " + list.size());
        Set resultSet = new HashSet(list);
        logger.debug("resultSet.size() : " + resultSet.size());
        if (resultSet.size() == 0)
            return new ArrayList();
        Iterator iterator = resultSet.iterator();
        ArrayList innerQueryList = new ArrayList<Long>();
        while (iterator.hasNext()) {
            VsdInspection vsdInspection = (VsdInspection) iterator.next();
            innerQueryList.add(vsdInspection.getInspectionId());
        }
        inspections = session.createCriteria(VsdInspection.class, "i")
                .add(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", vehiclePlate.getPlateCategory()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateCode", vehiclePlate.getPlateCode()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateSource", vehiclePlate.getPlateSource()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateNumber", vehiclePlate.getPlateNumber()).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .add(Property.forName("i.inspectionId").in(innerQueryList))
                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
        logger.debug("inspections.size() : " + inspections.size());
    } catch (Exception ex) {
        logger.error("An error occured in getInspectionsByVehiclePlateForWS()");
        logger.error(ex);
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
    logger.info("getInspectionsByVehiclePlateForWS -- END");
    return inspections;
}

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

/**
 * //from   ww w. ja v a 2  s.  c o m
 * get Inspections By VehiclePlate for webservice
 * one overloaded method is associated method
 * 
 * @author Eldon Barrows
 * @param dsContext
 * @param retrieveArabicData
 * @param vehiclePlate
 * @param firstResult
 * @param maxResults
 * @return List<VsdInspection>
 * @throws VSDDataAccessException
 */
public List<VsdInspection> getInspectionsByVehiclePlateForWS(final DataServiceContext dsContext,
        boolean retrieveArabicData, VehiclePlate vehiclePlate, int firstResult, int maxResults)
        throws VSDDataAccessException {
    logger.info("getInspectionsByVehiclePlateForWS -- START");
    List<VsdInspection> inspections;
    try {
        Session session = (Session) dsContext.getInternalContext();
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("i.inspectionId"), "inspectionId");
        projectionList.add(Projections.property("i.inspectionTimestamp"), "inspectionTimestamp");

        Criteria projectionCriteria = session.createCriteria(VsdInspection.class, "i")
                .add(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", vehiclePlate.getPlateCategory()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateCode", vehiclePlate.getPlateCode()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateSource", vehiclePlate.getPlateSource()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateNumber", vehiclePlate.getPlateNumber()).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .setProjection(Projections.projectionList().add(Projections.property("i.inspectionId")))
                .setProjection(Projections.distinct(projectionList))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .setResultTransformer(new AliasToBeanResultTransformer(VsdInspection.class))
                .setFirstResult(firstResult).setMaxResults(maxResults);
        List list = projectionCriteria.list();
        logger.debug("list.size() : " + list.size());
        Set resultSet = new HashSet(list);
        logger.debug("resultSet.size() : " + resultSet.size());
        if (resultSet.size() == 0)
            return new ArrayList();
        Iterator iterator = resultSet.iterator();
        ArrayList innerQueryList = new ArrayList<Long>();
        while (iterator.hasNext()) {
            VsdInspection vsdInspection = (VsdInspection) iterator.next();
            innerQueryList.add(vsdInspection.getInspectionId());
        }
        inspections = session.createCriteria(VsdInspection.class, "i")
                .add(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", vehiclePlate.getPlateCategory()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateCode", vehiclePlate.getPlateCode()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateSource", vehiclePlate.getPlateSource()).ignoreCase())
                .add(Restrictions.eq("vi.vehiclePlateNumber", vehiclePlate.getPlateNumber()).ignoreCase())
                .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.LEFT_JOIN,
                        Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("i.vsdViolation", "v", Criteria.LEFT_JOIN,
                        Restrictions.eq("v.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("v.vsdChannelDefects", "cd", Criteria.LEFT_JOIN,
                        Restrictions.eq("cd.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cd.vsdChannelPartInst", "cpi", Criteria.LEFT_JOIN,
                        Restrictions.eq("cpi.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cpi.vsdChannelPartner", "cp", Criteria.LEFT_JOIN,
                        Restrictions.eq("cp.isDeleted", IDataService.BOOL_FALSE))
                .createCriteria("cp.vsdPartner", "p", Criteria.LEFT_JOIN,
                        Restrictions.eq("p.isDeleted", IDataService.BOOL_FALSE))
                .addOrder(Order.desc("i.inspectionTimestamp"))
                .add(Property.forName("i.inspectionId").in(innerQueryList))
                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
        logger.debug("inspections.size() : " + inspections.size());
    } catch (Exception ex) {
        logger.error("An error occured in getInspectionsByVehiclePlateForWS()");
        logger.error(ex);
        throw new VSDDataAccessException(ex.getMessage(), ex);
    }
    logger.info("getInspectionsByVehiclePlateForWS -- END");
    return inspections;
}